diff options
8198 files changed, 61548 insertions, 24811 deletions
@@ -1,6 +1,5 @@ syntax: glob - # WinMerge temp files *.bak # Compiled python bytecode @@ -500,3 +500,15 @@ d3d0101e980ec95043e0af9b7903045d3bc447e4 3.7.24-release 9978a8c3a2ffce4a5e1c186256581c2ac139c9dc 3.7.25-release 000e9dda4162cbf0a83ba88558b19473654a09a9 3.7.26-release afd8d4756e8eda3c8f760625d1c17a2ad40ad6c8 3.7.27-release +566874eb5ab26c003ef7fb0e22ce40c5fa0013f4 3.7.28-release +d07f76c5b9860fb87924d00ca729f7d4532534d6 3.7.29-release +67edc442c80b8d2fadd2a6c4a7184b469906cdbf 3.7.30-release +797ed69e6134ef48bb922577ab2540fb2d964668 3.8.0-release +3f61ed662347dc7c6941b8266e72746a66d90e2a 3.8.1-release +3a62616f3dd8bd512fcdfd29ef033b2505b11213 3.8.2-release +60572f718879f786f6bc8b5c9373ebebf4693078 3.8.3-release +27e3cf444c4cc645884960a61325a9ee0e9a2d0f 3.8.4-release +e821ef17c6edea4a59997719d8ba416d8c16e143 3.8.5-release +5a5bd148943bfb46cf2ff2ccf376c42dee93d19b 3.8.6-release +ae3297cdd03ab14f19f3811acbc4acd3eb600336 4.0.0-release +759710a9acef61aaf7b69f4bc4a5a913de87ad8a 4.0.1-release diff --git a/BuildParams b/BuildParams index bfcb48b6cc..8bcdb2c5e2 100755 --- a/BuildParams +++ b/BuildParams @@ -19,6 +19,8 @@ build_Linux_Debug = false build_Darwin_Debug = false build_Debug = false +# enable Doxygen building on Linux for TeamCity (it can be done manually on any platform) +build_Linux_Doxygen = true # Update Public Inworld Build Status Indicators (setting should mirror "public_build") email_status_this_is_os = true @@ -70,122 +72,19 @@ additional_packages = "" # the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel # for the package in a setting that overrides the compiled-in value ################################################################ +## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City +## additional_packages = "EDU" -# Notifications - to configure email notices, add a setting like this: -# <username>_<reponame>.email = <email-address> +# The EDU package allows us to create a separate release channel whose expirations +# are synchronized as much as possible with the academic year +## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City +## EDU_sourceid = "" +## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City +## EDU_viewer_channel_suffix = "edu" -# ======================================== -# mesh-development -# ======================================== -mesh-development.viewer_channel = "Project Viewer - Mesh" -mesh-development.viewer_grid = aditi -mesh-development.build_debug_release_separately = true -mesh-development.build_CYGWIN_Debug = false -mesh-development.build_viewer_update_version_manager = false +# Notifications - to configure email notices use the TeamCity parameter +# setting screen for your project or build configuration to set the +# environment variable 'email' to a space-separated list of email addresses -# ======================================== -# mesh-development-release-1-candidate -# ======================================== -mesh-development-release-1-candidate.viewer_channel = "Project Viewer - Mesh" -mesh-development-release-1-candidate.viewer_grid = agni -mesh-development-release-1-candidate.build_debug_release_separately = true -mesh-development-release-1-candidate.build_CYGWIN_Debug = false -mesh-development-release-1-candidate.build_viewer_update_version_manager = false - -# ======================================== -# mesh-development-rc -# ======================================== -mesh-development-rc.viewer_channel = "Project Viewer - Mesh" -mesh-development-rc.viewer_grid = agni -mesh-development-rc.build_debug_release_separately = true -mesh-development-rc.build_CYGWIN_Debug = false -mesh-development-rc.build_viewer_update_version_manager = false - -# ======================================== -# mesh-asset-deprecation -# ======================================== -mesh-asset-deprecation.viewer_channel = "Project Viewer - Mesh Asset Deprecation" -mesh-asset-deprecation.viewer_grid = aditi -mesh-asset-deprecation.build_debug_release_separately = true -mesh-asset-deprecation.build_CYGWIN_Debug = false -mesh-asset-deprecation.build_viewer_update_version_manager = false - -# ======================================== -# viewer-mesh -# ======================================== - -viewer-mesh.build_viewer = true -viewer-mesh.build_server = false -viewer-mesh.build_Linux = true -viewer-mesh.build_hg_bundle = true -viewer-mesh.build_viewer_update_version_manager = false -viewer-mesh.build_Debug = false -viewer-mesh.build_RelWithDebInfo = false -viewer-mesh.viewer_channel = "Project Viewer - Mesh" -viewer-mesh.viewer_grid = aditi -viewer-mesh.email = shining@lists.lindenlab.com - -# ================================================================= -# asset delivery 2010 projects -# ================================================================= -viewer-asset-delivery.viewer_channel = "Second Life Development" -viewer-asset-delivery.build_viewer_update_version_manager = false -viewer-asset-delivery.email = monty@lindenlab.com -viewer-asset-delivery.build_server = false -viewer-asset-delivery.build_server_tests = false - -viewer-asset-delivery-metrics.viewer_channel = "Second Life Development" -viewer-asset-delivery-metrics.build_viewer_update_version_manager = false -viewer-asset-delivery-metrics.email = monty@lindenlab.com -viewer-asset-delivery-metrics.build_server = false -viewer-asset-delivery-metrics.build_server_tests = false - -# ======================================== -# Simon says -# ======================================== -simon_viewer-dev-private.public_build = false -simon_viewer-dev-private.email_status_this_is_os = false - - -# ======================================== -# Vir -# ======================================== -vir-project-1.viewer_channel = "Second Life Release" - -# ======================================== -# Merov -# ======================================== -merov-viewer-maint-2287.viewer_channel = "Second Life Project Merchant Outbox" -merov-viewer-maint-2287.login_channel = "Second Life Project Merchant Outbox" -merov-viewer-maint-2287.build_viewer_update_version_manager = false -merov-viewer-maint-2287.codeticket_add_context = false - -# ======================================== -# THX-1138 / Runway projects -# ======================================== -viewer-thx1138-runway-shared.viewer_channel = "Project Viewer - THX-1138 Runway" -viewer-thx1138-runway-shared.viewer_grid = uma -viewer-thx1138-runway-shared.build_debug_release_separately = true -viewer-thx1138-runway-shared.build_CYGWIN_Debug = false -viewer-thx1138-runway-shared.build_viewer_update_version_manager = false - -viewer-thx1138.viewer_channel = "Project Viewer - THX-1138" -viewer-thx1138.viewer_grid = uma -viewer-thx1138.build_debug_release_separately = true -viewer-thx1138.build_CYGWIN_Debug = false -viewer-thx1138.build_viewer_update_version_manager = false - -runway-merge.viewer_channel = "Project Viewer - Runway Merge" -runway-merge.viewer_grid = agni -runway-merge.build_debug_release_separately = true -runway-merge.build_CYGWIN_Debug = false -runway-merge.build_viewer_update_version_manager = false - -runway.viewer_channel = "Project Viewer - Runway" -runway.viewer_grid = agni -runway.build_debug_release_separately = true -runway.build_CYGWIN_Debug = false -runway.build_viewer_update_version_manager = false -# eof diff --git a/autobuild.xml b/autobuild.xml index 52d750f64d..361a963807 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -22,9 +22,9 @@ <key>archive</key> <map> <key>hash</key> - <string>459cdc8d7c19a8025f98f61db95622ff</string> + <string>fe724581a16ff7bf3f2e261b8c4ee80e</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/sdl_3p-update-sdl/rev/297546/arch/Linux/installer/SDL-1.2.15-linux-297546.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/sdl_3p-update-sdl/rev/301425/arch/Linux/installer/SDL-1.2.15-linux-301425.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -212,9 +212,9 @@ <key>archive</key> <map> <key>hash</key> - <string>66849777a83cb69cec3c06b07da7cd3d</string> + <string>40bd4dd220749a7f0fc8e4d62e61b4a2</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/Darwin/installer/colladadom-2.3.297450-darwin-297450.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/301371/arch/Darwin/installer/colladadom-2.3.301371-darwin-301371.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -224,9 +224,9 @@ <key>archive</key> <map> <key>hash</key> - <string>d627c2a679f3afb8d3e090d42f53cd2e</string> + <string>7ff636034665555e4b3d918d86ef9566</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/Linux/installer/colladadom-2.3.297450-linux-297450.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/301371/arch/Linux/installer/colladadom-2.3.301371-linux-301371.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -236,16 +236,16 @@ <key>archive</key> <map> <key>hash</key> - <string>220897a1893a188aa9d31efb48909878</string> + <string>24e1fac1fd6feef7915c958687fd7c56</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/CYGWIN/installer/colladadom-2.3.297450-windows-297450.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/301371/arch/CYGWIN/installer/colladadom-2.3.301371-windows-301371.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>2.3.297450</string> + <string>2.3.301371</string> </map> <key>curl</key> <map> @@ -266,9 +266,9 @@ <key>archive</key> <map> <key>hash</key> - <string>d1c5125650a339a5209f429c70f4d395</string> + <string>89db4a1aa22599cf377ae49630b7b5b1</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/297172/arch/Darwin/installer/curl-7.38.0.297172-darwin-297172.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/301717/arch/Darwin/installer/curl-7.42.1.301717-darwin-301717.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -278,9 +278,9 @@ <key>archive</key> <map> <key>hash</key> - <string>ee6c089ee193e551040d610befc5d1c1</string> + <string>de9e0c855ff6ee30c9e027a70bbef032</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/297172/arch/Linux/installer/curl-7.38.0.297172-linux-297172.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/301717/arch/Linux/installer/curl-7.42.1.301717-linux-301717.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -290,16 +290,16 @@ <key>archive</key> <map> <key>hash</key> - <string>fdeca7cbc074a88d2701d74a31d21bd8</string> + <string>98d15713de8c439b7f54cc14f2df07ac</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/297172/arch/CYGWIN/installer/curl-7.38.0.297172-windows-297172.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/curl_3p-update-curl/rev/301717/arch/CYGWIN/installer/curl-7.42.1.301717-windows-301717.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>7.38.0.297172</string> + <string>7.42.1.301717</string> </map> <key>db</key> <map> @@ -850,9 +850,9 @@ <key>archive</key> <map> <key>hash</key> - <string>0bf69fbc829d964820b798a0494278c9</string> + <string>e294e6ca721e271b4bae8046cfbc3c9b</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298033/arch/Linux/installer/google_breakpad-1413.298033-linux-298033.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298127/arch/Linux/installer/google_breakpad-1413.298127-linux-298127.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1056,9 +1056,9 @@ <key>archive</key> <map> <key>hash</key> - <string>5c5b4820999ae9e398801d6a46f45897</string> + <string>0d586709c1a2e4cf433390bbdd2498ed</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/297312/arch/Darwin/installer/havok_source-2012.1-darwin-297312.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/301432/arch/Darwin/installer/havok_source-2012.1-darwin-301432.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1068,9 +1068,9 @@ <key>archive</key> <map> <key>hash</key> - <string>6b0f41ddddfa60d8424d8a2e0bc2077d</string> + <string>02c85c2c63c8d002b31382f866ca143b</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/296959/arch/Linux/installer/havok_source-2012.1-linux-296959.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/301432/arch/Linux/installer/havok_source-2012.1-linux-301432.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1080,9 +1080,9 @@ <key>archive</key> <map> <key>hash</key> - <string>ab30ae74a665950d73ea559f019ff358</string> + <string>ac8a27020182510fd404177e4a97b70f</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/297566/arch/CYGWIN/installer/havok_source-2012.1-windows-297566.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/301432/arch/CYGWIN/installer/havok_source-2012.1-windows-301432.tar.bz2</string> </map> <key>name</key> <string>windows</string> @@ -1164,9 +1164,9 @@ <key>archive</key> <map> <key>hash</key> - <string>b25a4f480e07c670ffef00c3da578f87</string> + <string>8084ced172704ff09b364f7af82a2d6f</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297281/arch/Darwin/installer/jsoncpp-0.5.0.297281-darwin-297281.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297580/arch/Darwin/installer/jsoncpp-0.5.0.297580-darwin-297580.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1176,9 +1176,9 @@ <key>archive</key> <map> <key>hash</key> - <string>5b3b5dbf0c82c1046482a74ce9e11c38</string> + <string>910bf12e4b4635170e462b739887cda9</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297281/arch/Linux/installer/jsoncpp-0.5.0.297281-linux-297281.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297580/arch/Linux/installer/jsoncpp-0.5.0.297580-linux-297580.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1368,9 +1368,9 @@ <key>archive</key> <map> <key>hash</key> - <string>14cb5c8686a472e9e60179e46cd196f7</string> + <string>0d134c36fcd87d00d91c99291906dde9</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297708/arch/Darwin/installer/libpng-1.6.8.297708-darwin-297708.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/301387/arch/Darwin/installer/libpng-1.6.8.301387-darwin-301387.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1380,9 +1380,9 @@ <key>archive</key> <map> <key>hash</key> - <string>6dec32fc2527f8cafd616f9271ff3478</string> + <string>744e22c5fcaaf3483a60e29f217daa9c</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297051/arch/Linux/installer/libpng-1.6.8.297051-linux-297051.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/301387/arch/Linux/installer/libpng-1.6.8.301387-linux-301387.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1392,16 +1392,16 @@ <key>archive</key> <map> <key>hash</key> - <string>09eb65e66e0230ab01e57e643647a4f1</string> + <string>391158e9b5d92a8b69aeb7478144d2de</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297708/arch/CYGWIN/installer/libpng-1.6.8.297708-windows-297708.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/301387/arch/CYGWIN/installer/libpng-1.6.8.301387-windows-301387.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>1.6.8.297708</string> + <string>1.6.8.301387</string> </map> <key>libuuid</key> <map> @@ -1517,16 +1517,18 @@ <key>version</key> <string>0.0.1</string> </map> - <key>llphysicsextensions_source</key> + <key>llceflib</key> <map> <key>copyright</key> - <string>Copyright (c) 2010, Linden Research, Inc.</string> + <string>Copyright (c) 2014, Linden Research, Inc.</string> + <key>description</key> + <string>LLCefLib implements a headless web browser, rendering modern web content to a memory buffer and providing an API for injecting mouse and keyboard events. It uses the Chromium Embedded Framework (https://bitbucket.org/chromiumembedded/cef)</string> <key>license</key> - <string>internal</string> + <string>LGPL</string> <key>license_file</key> - <string>LICENSES/llphysicsextensions.txt</string> + <string>LICENSES/LICENSE-source.txt</string> <key>name</key> - <string>llphysicsextensions_source</string> + <string>llceflib</string> <key>platforms</key> <map> <key>darwin</key> @@ -1534,44 +1536,34 @@ <key>archive</key> <map> <key>hash</key> - <string>468e88a527e610804c3eecf07f4ed70b</string> + <string>6b9eaaf83fcf8bfd4bb6966c24df7f29</string> <key>hash_algorithm</key> <string>md5</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Darwin/installer/llphysicsextensions_source-1.0.298369-darwin-298369.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/310043/arch/Darwin/installer/llceflib-1.5.1.310043-darwin-310043.tar.bz2</string> </map> <key>name</key> <string>darwin</string> </map> - <key>linux</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>793964e49c935b414c4bdbb8a0d14ad1</string> - <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Linux/installer/llphysicsextensions_source-1.0.298369-linux-298369.tar.bz2</string> - </map> - <key>name</key> - <string>linux</string> - </map> <key>windows</key> <map> <key>archive</key> <map> <key>hash</key> - <string>922aad5261aac150e5ce3c094e57f373</string> + <string>578f21be02efc98bbf426529f916fce8</string> + <key>hash_algorithm</key> + <string>md5</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/CYGWIN/installer/llphysicsextensions_source-1.0.298369-windows-298369.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/310043/arch/CYGWIN/installer/llceflib-1.5.1.310043-windows-310043.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>1.0.298369</string> + <string>1.5.1.310043</string> </map> - <key>llphysicsextensions_stub</key> + <key>llphysicsextensions_source</key> <map> <key>copyright</key> <string>Copyright (c) 2010, Linden Research, Inc.</string> @@ -1580,7 +1572,7 @@ <key>license_file</key> <string>LICENSES/llphysicsextensions.txt</string> <key>name</key> - <string>llphysicsextensions_stub</string> + <string>llphysicsextensions_source</string> <key>platforms</key> <map> <key>darwin</key> @@ -1588,11 +1580,11 @@ <key>archive</key> <map> <key>hash</key> - <string>1175977a191ffc936fd0ccca433c8278</string> + <string>468e88a527e610804c3eecf07f4ed70b</string> <key>hash_algorithm</key> <string>md5</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/Darwin/installer/llphysicsextensions_stub-1.0.298370-darwin-298370.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Darwin/installer/llphysicsextensions_source-1.0.298369-darwin-298369.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1602,9 +1594,9 @@ <key>archive</key> <map> <key>hash</key> - <string>d13d7927692eab2d6a63e36166b72a8a</string> + <string>793964e49c935b414c4bdbb8a0d14ad1</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/Linux/installer/llphysicsextensions_stub-1.0.298370-linux-298370.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Linux/installer/llphysicsextensions_source-1.0.298369-linux-298369.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1614,29 +1606,27 @@ <key>archive</key> <map> <key>hash</key> - <string>9594f6fd79ee924fe675a4a23e30516e</string> + <string>922aad5261aac150e5ce3c094e57f373</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/CYGWIN/installer/llphysicsextensions_stub-1.0.298370-windows-298370.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/CYGWIN/installer/llphysicsextensions_source-1.0.298369-windows-298369.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>1.0.298370</string> + <string>1.0.298369</string> </map> - <key>llqtwebkit</key> + <key>llphysicsextensions_stub</key> <map> <key>copyright</key> - <string>Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</string> - <key>description</key> - <string>QT cross-platform application and UI framework.</string> + <string>Copyright (c) 2010, Linden Research, Inc.</string> <key>license</key> - <string>LGPL</string> + <string>internal</string> <key>license_file</key> - <string>LICENSES/llqtwebkit.txt</string> + <string>LICENSES/llphysicsextensions.txt</string> <key>name</key> - <string>llqtwebkit</string> + <string>llphysicsextensions_stub</string> <key>platforms</key> <map> <key>darwin</key> @@ -1644,11 +1634,11 @@ <key>archive</key> <map> <key>hash</key> - <string>3c2b6be4c78b2479c3fae612e1053d37</string> + <string>1175977a191ffc936fd0ccca433c8278</string> <key>hash_algorithm</key> <string>md5</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/canonical_3p-llqtwebkit2/rev/295522/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20141015.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/Darwin/installer/llphysicsextensions_stub-1.0.298370-darwin-298370.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1658,11 +1648,9 @@ <key>archive</key> <map> <key>hash</key> - <string>d31358176b9ba8c676458cc061767c0b</string> - <key>hash_algorithm</key> - <string>md5</string> + <string>d13d7927692eab2d6a63e36166b72a8a</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/canonical_3p-llqtwebkit2/rev/295522/arch/Linux/installer/llqtwebkit-4.7.1-linux-20141015.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/Linux/installer/llphysicsextensions_stub-1.0.298370-linux-298370.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1672,18 +1660,16 @@ <key>archive</key> <map> <key>hash</key> - <string>bb4e8c8006c8a7aef6d3e3c36a8cebbf</string> - <key>hash_algorithm</key> - <string>md5</string> + <string>9594f6fd79ee924fe675a4a23e30516e</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/canonical_3p-llqtwebkit2/rev/295522/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20141015.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub_llphysicsextensions-update/rev/298370/arch/CYGWIN/installer/llphysicsextensions_stub-1.0.298370-windows-298370.tar.bz2</string> </map> <key>name</key> <string>windows</string> </map> </map> <key>version</key> - <string>4.7.1</string> + <string>1.0.298370</string> </map> <key>mesa</key> <map> @@ -1814,9 +1800,9 @@ <key>archive</key> <map> <key>hash</key> - <string>b1245d467d5914a266efa16afeb55406</string> + <string>65f58cc0b17ebd29fe2b8bccc6bcbf64</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libndofdev_3p-update-libndofdev/rev/297553/arch/Linux/installer/open_libndofdev-0.3-linux-297553.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libndofdev_3p-update-libndofdev/rev/301464/arch/Linux/installer/open_libndofdev-0.3-linux-301464.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -2052,9 +2038,9 @@ <key>archive</key> <map> <key>hash</key> - <string>3f8b52280cb1eff2d1acd0214bce1b16</string> + <string>78650a79bda6435e623a940ad425a593</string> <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/quicktime_3p-update-quicktime/rev/296445/arch/CYGWIN/installer/quicktime-7.3-windows-296445.tar.bz2</string> + <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/quicktime_3p-update-quicktime/rev/300073/arch/CYGWIN/installer/quicktime-7.3-windows-300073.tar.bz2</string> </map> <key>name</key> <string>windows</string> @@ -2063,62 +2049,6 @@ <key>version</key> <string>7.3</string> </map> - <key>slplugins</key> - <map> - <key>copyright</key> - <string>Second Life Viewer Source Code - Copyright (C) 2010, Linden Research, Inc.</string> - <key>description</key> - <string>Second Life Viewer Plugins and launcher</string> - <key>license</key> - <string>LGPL</string> - <key>license_file</key> - <string>LICENSES/slplugins-license.txt</string> - <key>name</key> - <string>slplugins</string> - <key>platforms</key> - <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>f6bfb026572f03a4c8ac6b2b7d7eb0ae</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/slplugins_3p-update-slplugins/rev/298079/arch/Darwin/installer/slplugins-3.7.24.297623.298079-darwin-298079.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> - <key>linux</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>64b8a3bac95b5888a7ede3d7661a18b8</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/slplugins_3p-update-slplugins/rev/298079/arch/Linux/installer/slplugins-3.7.24.297623.298079-linux-298079.tar.bz2</string> - </map> - <key>name</key> - <string>linux</string> - </map> - <key>windows</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>3a1ea3385303b78b0327c8cea929ef27</string> - <key>hash_algorithm</key> - <string>md5</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/slplugins_3p-update-slplugins/rev/298079/arch/CYGWIN/installer/slplugins-3.7.24.297623.298079-windows-298079.tar.bz2</string> - </map> - <key>name</key> - <string>windows</string> - </map> - </map> - <key>version</key> - <string>3.7.24.297623.298079</string> - </map> <key>slvoice</key> <map> <key>copyright</key> @@ -2388,11 +2318,12 @@ <map> <key>RelWithDebInfo</key> <map> - <key>build</key> - <map> - </map> <key>configure</key> <map> + <key>arguments</key> + <array> + <string>../indra</string> + </array> <key>command</key> <string>cmake</string> <key>options</key> @@ -2429,11 +2360,12 @@ </map> <key>Release</key> <map> - <key>build</key> - <map> - </map> <key>configure</key> <map> + <key>arguments</key> + <array> + <string>../indra</string> + </array> <key>command</key> <string>cmake</string> <key>options</key> @@ -2468,6 +2400,25 @@ <key>name</key> <string>ReleaseOS</string> </map> + <key>Doxygen</key> + <map> + <key>build</key> + <map> + <key>arguments</key> + <array> + <string>doxygen/Doxyfile</string> + </array> + <key>command</key> + <string>doxygen</string> + </map> + <key>configure</key> + <map> + <key>command</key> + <string>cmake</string> + </map> + <key>name</key> + <string>Doxygen</string> + </map> </map> <key>name</key> <string>common</string> @@ -2478,6 +2429,28 @@ <string>build-darwin-i386</string> <key>configurations</key> <map> + <key>Doxygen</key> + <map> + <key>build</key> + <map> + </map> + <key>configure</key> + <map> + <key>options</key> + <array> + <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> + <string>-DWORD_SIZE:STRING=32</string> + <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> + <string>-DINSTALL_PROPRIETARY=TRUE</string> + </array> + <key>arguments</key> + <array> + <string>../indra</string> + </array> + </map> + <key>name</key> + <string>Doxygen</string> + </map> <key>RelWithDebInfo</key> <map> <key>build</key> @@ -2496,10 +2469,6 @@ </map> <key>configure</key> <map> - <key>arguments</key> - <array> - <string>../indra</string> - </array> <key>options</key> <array> <string>-G</string> @@ -2554,10 +2523,6 @@ </map> <key>configure</key> <map> - <key>arguments</key> - <array> - <string>../indra</string> - </array> <key>options</key> <array> <string>-G</string> @@ -2602,6 +2567,26 @@ <string>build-linux-i686</string> <key>configurations</key> <map> + <key>Doxygen</key> + <map> + <key>build</key> + <map> + </map> + <key>configure</key> + <map> + <key>arguments</key> + <array> + <string>../indra</string> + </array> + <key>options</key> + <array> + <string>-G</string> + <string>'Unix Makefiles'</string> + </array> + </map> + <key>name</key> + <string>Doxygen</string> + </map> <key>RelWithDebInfo</key> <map> <key>build</key> @@ -2615,10 +2600,6 @@ </map> <key>configure</key> <map> - <key>arguments</key> - <array> - <string>../indra</string> - </array> <key>options</key> <array> <string>-G</string> @@ -2665,10 +2646,6 @@ </map> <key>configure</key> <map> - <key>arguments</key> - <array> - <string>../indra</string> - </array> <key>options</key> <array> <string>-G</string> @@ -2768,16 +2745,11 @@ <string>SecondLife.sln</string> </array> <key>command</key> - <string>msbuild.exe</string> + <string>devenv</string> <key>options</key> <array> - <string>/p:Configuration=RelWithDebInfo</string> - <string>/p:Platform=Win32</string> - <string>/t:Build</string> - <string>/p:useenv=true</string> - <string>/verbosity:minimal</string> - <string>/toolsversion:4.0</string> - <string>/p:"VCBuildAdditionalOptions= /incremental"</string> + <string>/build</string> + <string>"RelWithDebInfo|Win32"</string> </array> </map> <key>configure</key> @@ -2854,16 +2826,11 @@ <string>SecondLife.sln</string> </array> <key>command</key> - <string>msbuild.exe</string> + <string>devenv</string> <key>options</key> <array> - <string>/p:Configuration=Release</string> - <string>/p:Platform=Win32</string> - <string>/t:Build</string> - <string>/p:useenv=true</string> - <string>/verbosity:minimal</string> - <string>/toolsversion:4.0</string> - <string>/p:"VCBuildAdditionalOptions= /incremental"</string> + <string>/build</string> + <string>"Release|Win32"</string> </array> </map> <key>configure</key> @@ -1,10 +1,13 @@ #!/bin/sh -# This is a the master build script - it is intended to be run by the Linden -# Lab build farm -# It is called by a wrapper script in the shared repository which sets up -# the environment from the various BuildParams files and does all the build -# result post-processing. +# This is the custom build script for the viewer +# +# It must be run by the Linden Lab build farm shared buildscript because +# it relies on the environment that sets up, functions it provides, and +# the build result post-processing it does. +# +# The shared buildscript build.sh invokes this because it is named 'build.sh', +# which is the default custom build script name in buildscripts/hg/BuildParams # # PLEASE NOTE: # @@ -12,7 +15,6 @@ # Cygwin can be tricky.... # * The special style in which python is invoked is intentional to permit # use of a native python install on windows - which requires paths in DOS form -# * This script relies heavily on parameters defined in BuildParams check_for() { @@ -94,14 +96,12 @@ installer_CYGWIN() pre_build() { local variant="$1" - begin_section "Pre$variant" + begin_section "Configure $variant" [ -n "$master_message_template_checkout" ] \ && [ -r "$master_message_template_checkout/message_template.msg" ] \ && template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg" - check_for "Confirm dictionaries are installed before 'autobuild configure'" ${build_dir}/packages/dictionaries - - "$autobuild" configure -c $variant -- \ + "$autobuild" configure --quiet -c $variant -- \ -DPACKAGE:BOOL=ON \ -DRELEASE_CRASH_REPORTING:BOOL=ON \ -DVIEWER_CHANNEL:STRING="\"$viewer_channel\"" \ @@ -109,7 +109,7 @@ pre_build() -DLL_TESTS:BOOL="$run_tests" \ -DTEMPLATE_VERIFIER_OPTIONS:STRING="$template_verifier_options" $template_verifier_master_url - end_section "Pre$variant" + end_section "Configure $variant" } package_llphysicsextensions_tpv() @@ -119,12 +119,12 @@ package_llphysicsextensions_tpv() if [ "$variant" = "Release" ] then llpetpvcfg=$build_dir/packages/llphysicsextensions/autobuild-tpv.xml - "$autobuild" build --verbose --config-file $llpetpvcfg -c Tpv + "$autobuild" build --quiet --config-file $llpetpvcfg -c Tpv # capture the package file name for use in upload later... PKGTMP=`mktemp -t pgktpv.XXXXXX` trap "rm $PKGTMP* 2>/dev/null" 0 - "$autobuild" package --verbose --config-file $llpetpvcfg --results-file "$(native_path $PKGTMP)" + "$autobuild" package --quiet --config-file $llpetpvcfg --results-file "$(native_path $PKGTMP)" tpv_status=$? if [ -r "${PKGTMP}" ] then @@ -134,7 +134,7 @@ package_llphysicsextensions_tpv() echo "${autobuild_package_filename}" > $build_dir/llphysicsextensions_package fi else - echo "Do not provide llphysicsextensions_tpv for $variant" + record_event "Do not provide llphysicsextensions_tpv for $variant" llphysicsextensions_package="" fi end_section "PhysicsExtensions_TPV" @@ -146,16 +146,15 @@ build() local variant="$1" if $build_viewer then - begin_section "Viewer$variant" - - "$autobuild" build --no-configure -c $variant + "$autobuild" build --quiet --no-configure -c $variant build_ok=$? - end_section "Viewer$variant" # Run build extensions if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]; then for extension in ${build_dir}/packages/build-extensions/*.sh; do + begin_section "Extension $extension" . $extension + end_section "Extension $extension" if [ $build_ok -ne 0 ]; then break fi @@ -174,28 +173,6 @@ build() fi } -# This is called from the branch independent script upon completion of all platform builds. -build_docs() -{ - begin_section "Building Documentation" - begin_section "Autobuild metadata" - if [ -r "$build_dir/autobuild-package.xml" ] - then - upload_item docs "$build_dir/autobuild-package.xml" text/xml - else - record_event "no metadata at '$build_dir/autobuild-package.xml'" - fi - end_section "Autobuild metadata" - if [ "$arch" != "Linux" ] - then - record_dependencies_graph # defined in build.sh - else - echo "TBD - skipping linux graph (probable python version dependency)" 1>&2 - fi - end_section "Building Documentation" -} - - # Check to see if we were invoked from the wrapper, if not, re-exec ourselves from there if [ "x$arch" = x ] then @@ -207,7 +184,7 @@ then 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://bitbucket.org/lindenlabinternal/sl-buildscripts EOF exit 1 fi @@ -246,69 +223,68 @@ do # Only the last built arch is available for upload last_built_variant="$variant" - begin_section "Do$variant" build_dir=`build_dir_$arch $variant` build_dir_stubs="$build_dir/win_setup/$variant" - begin_section "PreClean" + begin_section "Initialize $variant Build Directory" rm -rf "$build_dir" - end_section "PreClean" - mkdir -p "$build_dir" mkdir -p "$build_dir/tmp" + end_section "Initialize $variant Build Directory" - if pre_build "$variant" "$build_dir" >> "$build_log" 2>&1 + if pre_build "$variant" "$build_dir" then - if $build_link_parallel - then - begin_section BuildParallel - ( build "$variant" "$build_dir" > "$build_dir/build.log" 2>&1 ) & - build_processes="$build_processes $!" - end_section BuildParallel - else - begin_section "Build$variant" + begin_section "Build $variant" build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | sed -n 's/^ *\(##teamcity.*\)/\1/p' if `cat "$build_dir/build_ok"` then - echo so far so good. + case "$variant" in + Release) + if [ -r "$build_dir/autobuild-package.xml" ] + then + begin_section "Autobuild metadata" + upload_item docs "$build_dir/autobuild-package.xml" text/xml + if [ "$arch" != "Linux" ] + then + record_dependencies_graph # defined in buildscripts/hg/bin/build.sh + else + record_event "TBD - no dependency graph for linux (probable python version dependency)" 1>&2 + fi + end_section "Autobuild metadata" + else + record_event "no autobuild metadata at '$build_dir/autobuild-package.xml'" + fi + ;; + Doxygen) + if [ -r "$build_dir/doxygen_warnings.log" ] + then + record_event "Doxygen warnings generated; see doxygen_warnings.log" + upload_item log "$build_dir/doxygen_warnings.log" text/plain + fi + if [ -d "$build_dir/doxygen/html" ] + then + tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html" + upload_item docs "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream + fi + ;; + *) + ;; + esac + else - record_failure "Build of \"$variant\" failed." + record_failure "Build of \"$variant\" failed." fi - end_section "Build$variant" - fi + end_section "Build $variant" else - record_failure "Build Prep for \"$variant\" failed." + record_event "configure for $variant failed: build skipped" fi - end_section "Do$variant" -done -build_docs - -# If we are building variants in parallel, wait, then collect results. -# This requires that the build dirs are variant specific -if $build_link_parallel && [ x"$build_processes" != x ] -then - begin_section WaitParallel - wait $build_processes - for variant in $variants - do - eval '$build_'"$variant" || continue - eval '$build_'"$arch"_"$variant" || continue - - 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" | sed -n 's/^ *\(##teamcity.*\)/\1/p' - if `cat "$build_dir/build_ok"` - then - echo so far so good. - else - record_failure "Parallel build of \"$variant\" failed." - fi - end_section "Build$variant" - done - end_section WaitParallel -fi + if ! $succeeded + then + record_event "remaining variants skipped due to $variant failure" + break + fi +done # build debian package if [ "$arch" == "Linux" ] @@ -376,7 +352,7 @@ then end_section "Upload Debian Repository" else - echo skipping debian build + echo debian build not enabled fi else echo skipping debian build due to failed build. @@ -434,29 +410,27 @@ then then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) upload_item private_artifact "$llphysicsextensions_package" binary/octet-stream - else - echo "No llphysicsextensions_package" fi ;; *) - echo "Skipping mapfile for $last_built_variant" ;; esac # Run upload extensions if [ -d ${build_dir}/packages/upload-extensions ]; then for extension in ${build_dir}/packages/upload-extensions/*.sh; do + begin_section "Upload Extension $extension" . $extension + end_section "Upload Extension $extension" done fi - - # Upload stub installers - upload_stub_installers "$build_dir_stubs" fi end_section Upload Installer else echo skipping upload of installer fi + + else echo skipping upload of installer due to failed build. fi diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 0000000000..661c20b572 --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1,8 @@ +# Linden packages install in opt/linden +secondlife-viewer: dir-or-file-in-opt +secondlife-viewer: section-is-dh_make-template +secondlife-viewer: binary-without-manpage +secondlife-viewer: maintainer-script-empty postrm +secondlife-viewer: maintainer-script-empty preinst +secondlife-viewer: maintainer-script-empty prerm +secondlife-viewer: unstripped-binary-or-object diff --git a/doc/LICENSE-logos.txt b/doc/LICENSE-logos.txt index e63c48e542..66f8745f4f 100755 --- a/doc/LICENSE-logos.txt +++ b/doc/LICENSE-logos.txt @@ -11,7 +11,7 @@ summary, see http://creativecommons.org/licenses/by-sa/3.0/. Notwithstanding the foregoing, all of Linden Lab's trademarks, including but not limited to the Second Life brand name and Second Life Eye-in-Hand logo, are subject to our trademark policy at -http://secondlife.com/corporate/trademark/. +http://secondlife.com/corporate/brand/trademark/. If you distribute any copies or adaptations of the Second Life viewer artwork or any other works in these files, you must include this Notice diff --git a/doc/LICENSE-source.txt b/doc/LICENSE-source.txt index 407402265e..3de5123415 100755 --- a/doc/LICENSE-source.txt +++ b/doc/LICENSE-source.txt @@ -7,7 +7,9 @@ you under the terms of the GNU Lesser General Public License, version 2.1 ("LGPL"), 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/LGPL-license.txt in this distribution, or -online at http://secondlife.com/developers/opensource/lgplv2_1 +online at + +https://wiki.secondlife.com/wiki/Linden_Lab_Official:GNU_Lesser_General_Public_License,_version_2.1 By copying, modifying or distributing this software, you acknowledge that you have read and understood your obligations described above, diff --git a/doc/contributions.txt b/doc/contributions.txt index 36b87e22ec..1608b65033 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -185,6 +185,8 @@ Ansariel Hiller BUG-3764 STORM-1984 STORM-1979 + MAINT-5533 + MAINT-5756 Aralara Rajal Arare Chantilly CHUIBUG-191 @@ -767,6 +769,7 @@ Kitty Barnett STORM-1905 VWR-24217 STORM-1804 + MAINT-5416 Kolor Fall Komiko Okamoto Korvel Noh diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index b0dbe62a0c..1afcb118bc 100755..100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -55,12 +55,6 @@ add_subdirectory(${VIEWER_PREFIX}test) if (ENABLE_MEDIA_PLUGINS) # viewer media plugins add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins) - - # llplugin testbed code (is this the right way to include it?) - if (LL_TESTS AND NOT LINUX) - add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest) - add_subdirectory(${VIEWER_PREFIX}test_apps/llfbconnecttest) - endif (LL_TESTS AND NOT LINUX) endif (ENABLE_MEDIA_PLUGINS) if (LINUX) @@ -89,8 +83,11 @@ endif (LINUX) add_subdirectory(${VIEWER_PREFIX}newview) add_dependencies(viewer secondlife-bin) +add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL) + if (LL_TESTS) # Define after the custom targets are created so # individual apps can add themselves as dependencies add_subdirectory(${INTEGRATION_TESTS_PREFIX}integration_tests) endif (LL_TESTS) + diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 7a320ffc59..86fc2dfff5 100755..100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -166,6 +166,9 @@ if (LINUX) -pthread ) + # force this platform to accept TOS via external browser + add_definitions(-DEXTERNAL_TOS) + add_definitions(-DAPPID=secondlife) add_definitions(-fvisibility=hidden) # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The viewer doesn't need to catch SIGCHLD anyway. @@ -191,7 +194,7 @@ if (DARWIN) add_definitions(-DLL_DARWIN=1) set(CMAKE_CXX_LINK_FLAGS "-Wl,-no_compact_unwind -Wl,-headerpad_max_install_names,-search_paths_first") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") - set(DARWIN_extra_cstar_flags "-g") + set(DARWIN_extra_cstar_flags "-g -Wno-unused-local-typedef -Wno-deprecated-declarations") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}") # NOTE: it's critical that the optimization flag is put in front. diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 1a01671002..1a01671002 100755..100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index f95439245a..f95439245a 100755..100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake diff --git a/indra/cmake/BerkeleyDB.cmake b/indra/cmake/BerkeleyDB.cmake index ee670ac650..ee670ac650 100755..100644 --- a/indra/cmake/BerkeleyDB.cmake +++ b/indra/cmake/BerkeleyDB.cmake diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 25e54b7cbd..25e54b7cbd 100755..100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake index e618a988b8..389ded1d98 100755..100644 --- a/indra/cmake/BuildVersion.cmake +++ b/indra/cmake/BuildVersion.cmake @@ -53,5 +53,6 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n "LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR}" "LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH}" "LL_VIEWER_VERSION_BUILD=${VIEWER_VERSION_REVISION}" + "LLBUILD_CONFIG=\"${CMAKE_BUILD_TYPE}\"" ) endif (NOT DEFINED VIEWER_SHORT_VERSION) diff --git a/indra/cmake/CARes.cmake b/indra/cmake/CARes.cmake index baa55aa49d..baa55aa49d 100755..100644 --- a/indra/cmake/CARes.cmake +++ b/indra/cmake/CARes.cmake diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake new file mode 100644 index 0000000000..9cfb7d14c7 --- /dev/null +++ b/indra/cmake/CEFPlugin.cmake @@ -0,0 +1,40 @@ +# -*- cmake -*- +include(Linking) +include(Prebuilt) + +if (USESYSTEMLIBS) + set(CEFPLUGIN OFF CACHE BOOL + "CEFPLUGIN support for the llplugin/llmedia test apps.") +else (USESYSTEMLIBS) + use_prebuilt_binary(llceflib) + set(CEFPLUGIN ON CACHE BOOL + "CEFPLUGIN support for the llplugin/llmedia test apps.") + set(CEF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/cef) +endif (USESYSTEMLIBS) + +if (WINDOWS) + set(CEF_PLUGIN_LIBRARIES + libcef.lib + libcef_dll_wrapper.lib + llceflib.lib + ) +elseif (DARWIN) + FIND_LIBRARY(APPKIT_LIBRARY AppKit) + if (NOT APPKIT_LIBRARY) + message(FATAL_ERROR "AppKit not found") + endif() + + FIND_LIBRARY(CEF_LIBRARY "Chromium Embedded Framework" ${ARCH_PREBUILT_DIRS_RELEASE}) + if (NOT CEF_LIBRARY) + message(FATAL_ERROR "CEF not found") + endif() + + set(CEF_PLUGIN_LIBRARIES + ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libLLCefLib.a + ${APPKIT_LIBRARY} + ${CEF_LIBRARY} + ) + +elseif (LINUX) +endif (WINDOWS) diff --git a/indra/cmake/CMakeCopyIfDifferent.cmake b/indra/cmake/CMakeCopyIfDifferent.cmake index 55e71ff153..55e71ff153 100755..100644 --- a/indra/cmake/CMakeCopyIfDifferent.cmake +++ b/indra/cmake/CMakeCopyIfDifferent.cmake diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index 2f09f3742f..88e64ffc97 100755..100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -14,6 +14,7 @@ set(cmake_SOURCE_FILES Boost.cmake BuildVersion.cmake CARes.cmake + CEFPlugin.cmake CMakeCopyIfDifferent.cmake ConfigurePkgConfig.cmake CURL.cmake @@ -81,18 +82,18 @@ set(cmake_SOURCE_FILES LLWindow.cmake LLXML.cmake Linking.cmake -## MediaPluginBase.cmake + MediaPluginBase.cmake NDOF.cmake OPENAL.cmake OpenGL.cmake OpenJPEG.cmake OpenSSL.cmake PNG.cmake -## PluginAPI.cmake + PluginAPI.cmake Prebuilt.cmake PulseAudio.cmake Python.cmake -## QuickTimePlugin.cmake + QuickTimePlugin.cmake TemplateCheck.cmake Tut.cmake UI.cmake @@ -101,7 +102,6 @@ set(cmake_SOURCE_FILES Variables.cmake ViewerMiscLibs.cmake VisualLeakDetector.cmake -## WebKitLibPlugin.cmake XmlRpcEpi.cmake ZLIB.cmake ) diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index 04afae594d..04afae594d 100755..100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 84947adaae..a6fd756c88 100755..100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -70,76 +70,87 @@ if(WINDOWS) # Copy MS C runtime dlls, required for packaging. # *TODO - Adapt this to support VC9 if (MSVC80) - set(MSVC_VER 80) - set(MSVC_VERDOT 8.0) + list(APPEND LMSVC_VER 80) + list(APPEND LMSVC_VERDOT 8.0) elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010 - set(MSVC_VER 100) - set(MSVC_VERDOT 10.0) + MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}") elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12 - set(MSVC_VER 120) - set(MSVC_VERDOT 12.0) + list(APPEND LMSVC_VER 120) + list(APPEND LMSVC_VERDOT 12.0) else (MSVC80) MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") endif (MSVC80) - FIND_PATH(debug_msvc_redist_path msvcr${MSVC_VER}d.dll - PATHS - ${MSVC_DEBUG_REDIST_PATH} - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 - NO_DEFAULT_PATH - ) - - if(EXISTS ${debug_msvc_redist_path}) - set(debug_msvc_files - msvcr${MSVC_VER}d.dll - msvcp${MSVC_VER}d.dll - ) - - copy_if_different( - ${debug_msvc_redist_path} - "${SHARED_LIB_STAGING_DIR_DEBUG}" - out_targets - ${debug_msvc_files} - ) - set(third_party_targets ${third_party_targets} ${out_targets}) - - endif () - - FIND_PATH(release_msvc_redist_path msvcr${MSVC_VER}.dll - PATHS - ${MSVC_REDIST_PATH} - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC${MSVC_VER}.CRT - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 - NO_DEFAULT_PATH - ) - - if(EXISTS ${release_msvc_redist_path}) - set(release_msvc_files - msvcr${MSVC_VER}.dll - msvcp${MSVC_VER}.dll - ) - - copy_if_different( - ${release_msvc_redist_path} - "${SHARED_LIB_STAGING_DIR_RELEASE}" - out_targets - ${release_msvc_files} + # try to copy VS2010 redist independently of system version + list(APPEND LMSVC_VER 100) + list(APPEND LMSVC_VERDOT 10.0) + + list(LENGTH LMSVC_VER count) + math(EXPR count "${count}-1") + foreach(i RANGE ${count}) + list(GET LMSVC_VER ${i} MSVC_VER) + list(GET LMSVC_VERDOT ${i} MSVC_VERDOT) + MESSAGE(STATUS "Copying redist libs for VC ${MSVC_VERDOT}") + FIND_PATH(debug_msvc_redist_path NAME msvcr${MSVC_VER}d.dll + PATHS + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 + ${MSVC_DEBUG_REDIST_PATH} + NO_DEFAULT_PATH ) - set(third_party_targets ${third_party_targets} ${out_targets}) - copy_if_different( - ${release_msvc_redist_path} - "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" - out_targets - ${release_msvc_files} + if(EXISTS ${debug_msvc_redist_path}) + set(debug_msvc_files + msvcr${MSVC_VER}d.dll + msvcp${MSVC_VER}d.dll + ) + + copy_if_different( + ${debug_msvc_redist_path} + "${SHARED_LIB_STAGING_DIR_DEBUG}" + out_targets + ${debug_msvc_files} + ) + set(third_party_targets ${third_party_targets} ${out_targets}) + + unset(debug_msvc_redist_path CACHE) + endif() + + FIND_PATH(release_msvc_redist_path NAME msvcr${MSVC_VER}.dll + PATHS + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC${MSVC_VER}.CRT + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64 + [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32 + ${MSVC_REDIST_PATH} + NO_DEFAULT_PATH ) - set(third_party_targets ${third_party_targets} ${out_targets}) - - endif () + if(EXISTS ${release_msvc_redist_path}) + set(release_msvc_files + msvcr${MSVC_VER}.dll + msvcp${MSVC_VER}.dll + ) + + copy_if_different( + ${release_msvc_redist_path} + "${SHARED_LIB_STAGING_DIR_RELEASE}" + out_targets + ${release_msvc_files} + ) + set(third_party_targets ${third_party_targets} ${out_targets}) + + copy_if_different( + ${release_msvc_redist_path} + "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" + out_targets + ${release_msvc_files} + ) + set(third_party_targets ${third_party_targets} ${out_targets}) + + unset(release_msvc_redist_path CACHE) + endif() + endforeach() elseif(DARWIN) set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug/Resources") diff --git a/indra/cmake/DBusGlib.cmake b/indra/cmake/DBusGlib.cmake index 5e46b6711a..5e46b6711a 100755..100644 --- a/indra/cmake/DBusGlib.cmake +++ b/indra/cmake/DBusGlib.cmake diff --git a/indra/cmake/DeploySharedLibs.cmake b/indra/cmake/DeploySharedLibs.cmake index 663c272e50..663c272e50 100755..100644 --- a/indra/cmake/DeploySharedLibs.cmake +++ b/indra/cmake/DeploySharedLibs.cmake diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake index 25163d0322..25163d0322 100755..100644 --- a/indra/cmake/DirectX.cmake +++ b/indra/cmake/DirectX.cmake diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake index 73ef59b18f..73ef59b18f 100755..100644 --- a/indra/cmake/DragDrop.cmake +++ b/indra/cmake/DragDrop.cmake diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake index c1155531ff..c1155531ff 100755..100644 --- a/indra/cmake/EXPAT.cmake +++ b/indra/cmake/EXPAT.cmake diff --git a/indra/cmake/ExamplePlugin.cmake b/indra/cmake/ExamplePlugin.cmake index 5d826c1f66..5d826c1f66 100755..100644 --- a/indra/cmake/ExamplePlugin.cmake +++ b/indra/cmake/ExamplePlugin.cmake diff --git a/indra/cmake/FindAPR.cmake b/indra/cmake/FindAPR.cmake index 906b6c9452..906b6c9452 100755..100644 --- a/indra/cmake/FindAPR.cmake +++ b/indra/cmake/FindAPR.cmake diff --git a/indra/cmake/FindAutobuild.cmake b/indra/cmake/FindAutobuild.cmake index ea5ad6d108..ea5ad6d108 100755..100644 --- a/indra/cmake/FindAutobuild.cmake +++ b/indra/cmake/FindAutobuild.cmake diff --git a/indra/cmake/FindBerkeleyDB.cmake b/indra/cmake/FindBerkeleyDB.cmake index 2d633c74ec..2d633c74ec 100755..100644 --- a/indra/cmake/FindBerkeleyDB.cmake +++ b/indra/cmake/FindBerkeleyDB.cmake diff --git a/indra/cmake/FindCARes.cmake b/indra/cmake/FindCARes.cmake index 1ed5b32913..1ed5b32913 100755..100644 --- a/indra/cmake/FindCARes.cmake +++ b/indra/cmake/FindCARes.cmake diff --git a/indra/cmake/FindGLH.cmake b/indra/cmake/FindGLH.cmake index 3d16adaf03..3d16adaf03 100755..100644 --- a/indra/cmake/FindGLH.cmake +++ b/indra/cmake/FindGLH.cmake diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake index 1a0493be5e..1a0493be5e 100755..100644 --- a/indra/cmake/FindGoogleBreakpad.cmake +++ b/indra/cmake/FindGoogleBreakpad.cmake diff --git a/indra/cmake/FindGooglePerfTools.cmake b/indra/cmake/FindGooglePerfTools.cmake index bb125d538e..bb125d538e 100755..100644 --- a/indra/cmake/FindGooglePerfTools.cmake +++ b/indra/cmake/FindGooglePerfTools.cmake diff --git a/indra/cmake/FindHUNSPELL.cmake b/indra/cmake/FindHUNSPELL.cmake index 6faf22959c..6faf22959c 100755..100644 --- a/indra/cmake/FindHUNSPELL.cmake +++ b/indra/cmake/FindHUNSPELL.cmake diff --git a/indra/cmake/FindJsonCpp.cmake b/indra/cmake/FindJsonCpp.cmake index 9398779cff..9398779cff 100755..100644 --- a/indra/cmake/FindJsonCpp.cmake +++ b/indra/cmake/FindJsonCpp.cmake diff --git a/indra/cmake/FindNDOF.cmake b/indra/cmake/FindNDOF.cmake index 6dcf590a53..6dcf590a53 100755..100644 --- a/indra/cmake/FindNDOF.cmake +++ b/indra/cmake/FindNDOF.cmake diff --git a/indra/cmake/FindOpenJPEG.cmake b/indra/cmake/FindOpenJPEG.cmake index 949384eec4..949384eec4 100755..100644 --- a/indra/cmake/FindOpenJPEG.cmake +++ b/indra/cmake/FindOpenJPEG.cmake diff --git a/indra/cmake/FindSCP.cmake b/indra/cmake/FindSCP.cmake index ea02102908..ea02102908 100755..100644 --- a/indra/cmake/FindSCP.cmake +++ b/indra/cmake/FindSCP.cmake diff --git a/indra/cmake/FindXmlRpcEpi.cmake b/indra/cmake/FindXmlRpcEpi.cmake index ba217e7467..ba217e7467 100755..100644 --- a/indra/cmake/FindXmlRpcEpi.cmake +++ b/indra/cmake/FindXmlRpcEpi.cmake diff --git a/indra/cmake/FindZLIB.cmake b/indra/cmake/FindZLIB.cmake index 03a7db9d6f..03a7db9d6f 100755..100644 --- a/indra/cmake/FindZLIB.cmake +++ b/indra/cmake/FindZLIB.cmake diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index a36485f6d0..a36485f6d0 100755..100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake index d0992f57b8..d0992f57b8 100755..100644 --- a/indra/cmake/GLH.cmake +++ b/indra/cmake/GLH.cmake diff --git a/indra/cmake/GLOD.cmake b/indra/cmake/GLOD.cmake index a347eb6fee..a347eb6fee 100755..100644 --- a/indra/cmake/GLOD.cmake +++ b/indra/cmake/GLOD.cmake diff --git a/indra/cmake/GStreamer010Plugin.cmake b/indra/cmake/GStreamer010Plugin.cmake index 3fbc40ef8f..3fbc40ef8f 100755..100644 --- a/indra/cmake/GStreamer010Plugin.cmake +++ b/indra/cmake/GStreamer010Plugin.cmake diff --git a/indra/cmake/GetPrerequisites_2_8.cmake b/indra/cmake/GetPrerequisites_2_8.cmake index 05ec1539ba..05ec1539ba 100755..100644 --- a/indra/cmake/GetPrerequisites_2_8.cmake +++ b/indra/cmake/GetPrerequisites_2_8.cmake diff --git a/indra/cmake/Glui.cmake b/indra/cmake/Glui.cmake index db353a91ec..db353a91ec 100755..100644 --- a/indra/cmake/Glui.cmake +++ b/indra/cmake/Glui.cmake diff --git a/indra/cmake/Glut.cmake b/indra/cmake/Glut.cmake index 314da30652..314da30652 100755..100644 --- a/indra/cmake/Glut.cmake +++ b/indra/cmake/Glut.cmake diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake index 829e1ac08a..829e1ac08a 100755..100644 --- a/indra/cmake/GoogleBreakpad.cmake +++ b/indra/cmake/GoogleBreakpad.cmake diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake index 5a00546927..5a00546927 100755..100644 --- a/indra/cmake/GoogleMock.cmake +++ b/indra/cmake/GoogleMock.cmake diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake index c1faeb9325..c1faeb9325 100755..100644 --- a/indra/cmake/GooglePerfTools.cmake +++ b/indra/cmake/GooglePerfTools.cmake diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake index 99e7334118..99e7334118 100755..100644 --- a/indra/cmake/Havok.cmake +++ b/indra/cmake/Havok.cmake diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake index ef74d95b2a..ef74d95b2a 100755..100644 --- a/indra/cmake/Hunspell.cmake +++ b/indra/cmake/Hunspell.cmake diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake index d6da22aecc..d6da22aecc 100755..100644 --- a/indra/cmake/JPEG.cmake +++ b/indra/cmake/JPEG.cmake diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index 079619adf8..079619adf8 100755..100644 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake diff --git a/indra/cmake/LLAudio.cmake b/indra/cmake/LLAudio.cmake index 7c248dfc72..7c248dfc72 100755..100644 --- a/indra/cmake/LLAudio.cmake +++ b/indra/cmake/LLAudio.cmake diff --git a/indra/cmake/LLCharacter.cmake b/indra/cmake/LLCharacter.cmake index 9b2f5c4956..9b2f5c4956 100755..100644 --- a/indra/cmake/LLCharacter.cmake +++ b/indra/cmake/LLCharacter.cmake diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index b52556a73e..b52556a73e 100755..100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake index 61e4b23d98..61e4b23d98 100755..100644 --- a/indra/cmake/LLCoreHttp.cmake +++ b/indra/cmake/LLCoreHttp.cmake diff --git a/indra/cmake/LLCrashLogger.cmake b/indra/cmake/LLCrashLogger.cmake index f2cb83eb8b..f2cb83eb8b 100755..100644 --- a/indra/cmake/LLCrashLogger.cmake +++ b/indra/cmake/LLCrashLogger.cmake diff --git a/indra/cmake/LLImage.cmake b/indra/cmake/LLImage.cmake index ec3da89081..ec3da89081 100755..100644 --- a/indra/cmake/LLImage.cmake +++ b/indra/cmake/LLImage.cmake diff --git a/indra/cmake/LLImageJ2COJ.cmake b/indra/cmake/LLImageJ2COJ.cmake index 1bcf205f2d..1bcf205f2d 100755..100644 --- a/indra/cmake/LLImageJ2COJ.cmake +++ b/indra/cmake/LLImageJ2COJ.cmake diff --git a/indra/cmake/LLInventory.cmake b/indra/cmake/LLInventory.cmake index c3dc077a2b..c3dc077a2b 100755..100644 --- a/indra/cmake/LLInventory.cmake +++ b/indra/cmake/LLInventory.cmake diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake index e478b01f84..e478b01f84 100755..100644 --- a/indra/cmake/LLKDU.cmake +++ b/indra/cmake/LLKDU.cmake diff --git a/indra/cmake/LLLogin.cmake b/indra/cmake/LLLogin.cmake index 47d171876a..47d171876a 100755..100644 --- a/indra/cmake/LLLogin.cmake +++ b/indra/cmake/LLLogin.cmake diff --git a/indra/cmake/LLMath.cmake b/indra/cmake/LLMath.cmake index 893920ae6f..893920ae6f 100755..100644 --- a/indra/cmake/LLMath.cmake +++ b/indra/cmake/LLMath.cmake diff --git a/indra/cmake/LLMessage.cmake b/indra/cmake/LLMessage.cmake index 0143d04fd7..0143d04fd7 100755..100644 --- a/indra/cmake/LLMessage.cmake +++ b/indra/cmake/LLMessage.cmake diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake index e6afee762e..e6afee762e 100755..100644 --- a/indra/cmake/LLPhysicsExtensions.cmake +++ b/indra/cmake/LLPhysicsExtensions.cmake diff --git a/indra/cmake/LLPlugin.cmake b/indra/cmake/LLPlugin.cmake index 399cb332dd..399cb332dd 100755..100644 --- a/indra/cmake/LLPlugin.cmake +++ b/indra/cmake/LLPlugin.cmake diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 93626f689f..93626f689f 100755..100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake index 868922451f..868922451f 100755..100644 --- a/indra/cmake/LLRender.cmake +++ b/indra/cmake/LLRender.cmake diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake index a3c1c871aa..a3c1c871aa 100755..100644 --- a/indra/cmake/LLSharedLibs.cmake +++ b/indra/cmake/LLSharedLibs.cmake diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake index f75c23a5de..f75c23a5de 100755..100644 --- a/indra/cmake/LLTestCommand.cmake +++ b/indra/cmake/LLTestCommand.cmake diff --git a/indra/cmake/LLUI.cmake b/indra/cmake/LLUI.cmake index 34de57108b..34de57108b 100755..100644 --- a/indra/cmake/LLUI.cmake +++ b/indra/cmake/LLUI.cmake diff --git a/indra/cmake/LLVFS.cmake b/indra/cmake/LLVFS.cmake index 0fe87cdea6..0fe87cdea6 100755..100644 --- a/indra/cmake/LLVFS.cmake +++ b/indra/cmake/LLVFS.cmake diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake index ba07a80f05..ba07a80f05 100755..100644 --- a/indra/cmake/LLWindow.cmake +++ b/indra/cmake/LLWindow.cmake diff --git a/indra/cmake/LLXML.cmake b/indra/cmake/LLXML.cmake index b093c76297..b093c76297 100755..100644 --- a/indra/cmake/LLXML.cmake +++ b/indra/cmake/LLXML.cmake diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index c95f0c3702..74fe3f1137 100755..100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -6,7 +6,7 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES") include(Variables) set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib) -##set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins) +set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins) set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release) set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug) if (WINDOWS) diff --git a/indra/cmake/MediaPluginBase.cmake b/indra/cmake/MediaPluginBase.cmake index 2be035b641..2be035b641 100755..100644 --- a/indra/cmake/MediaPluginBase.cmake +++ b/indra/cmake/MediaPluginBase.cmake diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index 388df16a52..388df16a52 100755..100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake diff --git a/indra/cmake/NVAPI.cmake b/indra/cmake/NVAPI.cmake index 105f442a30..105f442a30 100755..100644 --- a/indra/cmake/NVAPI.cmake +++ b/indra/cmake/NVAPI.cmake diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 1bbfff6f98..1bbfff6f98 100755..100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake index 2259c99293..2259c99293 100755..100644 --- a/indra/cmake/OpenGL.cmake +++ b/indra/cmake/OpenGL.cmake diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake index bf0bde2ba7..bf0bde2ba7 100755..100644 --- a/indra/cmake/OpenJPEG.cmake +++ b/indra/cmake/OpenJPEG.cmake diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index eb548bdcc1..eb548bdcc1 100755..100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index 248a875a19..248a875a19 100755..100644 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake diff --git a/indra/cmake/PluginAPI.cmake b/indra/cmake/PluginAPI.cmake index d1649e8248..d1649e8248 100755..100644 --- a/indra/cmake/PluginAPI.cmake +++ b/indra/cmake/PluginAPI.cmake diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 98013da2f2..98013da2f2 100755..100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake index cce27f1bdd..cce27f1bdd 100755..100644 --- a/indra/cmake/PulseAudio.cmake +++ b/indra/cmake/PulseAudio.cmake diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake index a81c9307fc..a81c9307fc 100755..100644 --- a/indra/cmake/Python.cmake +++ b/indra/cmake/Python.cmake diff --git a/indra/cmake/QuickTimePlugin.cmake b/indra/cmake/QuickTimePlugin.cmake index c08e153ee3..c08e153ee3 100755..100644 --- a/indra/cmake/QuickTimePlugin.cmake +++ b/indra/cmake/QuickTimePlugin.cmake diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake index 2fada2eda9..2fada2eda9 100755..100644 --- a/indra/cmake/TemplateCheck.cmake +++ b/indra/cmake/TemplateCheck.cmake diff --git a/indra/cmake/Tut.cmake b/indra/cmake/Tut.cmake index e11a3c3314..e11a3c3314 100755..100644 --- a/indra/cmake/Tut.cmake +++ b/indra/cmake/Tut.cmake diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index 31174209a3..31174209a3 100755..100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index 139be0a008..139be0a008 100755..100644 --- a/indra/cmake/UnixInstall.cmake +++ b/indra/cmake/UnixInstall.cmake diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 76d92d7a48..63e296b556 100755..100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -26,7 +26,7 @@ set(VIEWER_PREFIX) set(INTEGRATION_TESTS_PREFIX) set(LL_TESTS ON CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation") set(INCREMENTAL_LINK OFF CACHE BOOL "Use incremental linking on win32 builds (enable for faster links on some machines)") -set(ENABLE_MEDIA_PLUGINS OFF CACHE BOOL "Turn off building media plugins if they are imported by third-party library mechanism") +set(ENABLE_MEDIA_PLUGINS ON CACHE BOOL "Turn off building media plugins if they are imported by third-party library mechanism") if(LIBS_CLOSED_DIR) file(TO_CMAKE_PATH "${LIBS_CLOSED_DIR}" LIBS_CLOSED_DIR) @@ -130,10 +130,10 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(DARWIN 1) - # now we only support Xcode 6.0 using 10.9 (Mavericks), minimum OS 10.7 (Lion) - set(XCODE_VERSION 6.0) + # now we only support Xcode 7.0 using 10.11 (El Capitan), minimum OS 10.7 (Lion) + set(XCODE_VERSION 7.0) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7) - set(CMAKE_OSX_SYSROOT macosx10.9) + set(CMAKE_OSX_SYSROOT macosx10.11) set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL 3) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index fc5bdedb5a..fc5bdedb5a 100755..100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake diff --git a/indra/cmake/VisualLeakDetector.cmake b/indra/cmake/VisualLeakDetector.cmake index 6a20148b47..6a20148b47 100755..100644 --- a/indra/cmake/VisualLeakDetector.cmake +++ b/indra/cmake/VisualLeakDetector.cmake diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake deleted file mode 100755 index f7c548a2fd..0000000000 --- a/indra/cmake/WebKitLibPlugin.cmake +++ /dev/null @@ -1,93 +0,0 @@ -# -*- cmake -*- -include(Linking) -include(Prebuilt) -include(OpenSSL) - -if (USESYSTEMLIBS) - # The minimal version, 4.4.3, is rather arbitrary: it's the version in Debian/Lenny. - find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtNetwork QtOpenGL QtWebKit REQUIRED) - include(${QT_USE_FILE}) - set(QTDIR $ENV{QTDIR}) - if (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin") - message(FATAL_ERROR "\"${QT_BINARY_DIR}\" is unequal \"${QTDIR}/bin\"; " - "Qt is found by looking for qmake in your PATH. " - "Please set your PATH such that 'qmake' is found in \$QTDIR/bin, " - "or unset QTDIR if the found Qt is correct.") - endif (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin") - find_package(LLQtWebkit REQUIRED QUIET) - # Add the plugins. - set(QT_PLUGIN_LIBRARIES) - foreach(qlibname qgif qjpeg) - find_library(QT_PLUGIN_${qlibname} ${qlibname} PATHS ${QT_PLUGINS_DIR}/imageformats NO_DEFAULT_PATH) - if (QT_PLUGIN_${qlibname}) - list(APPEND QT_PLUGIN_LIBRARIES ${QT_PLUGIN_${qlibname}}) - else (QT_PLUGIN_${qtlibname}) - message(FATAL_ERROR "Could not find the Qt plugin ${qlibname} in \"${QT_PLUGINS_DIR}/imageformats\"!") - endif (QT_PLUGIN_${qlibname}) - endforeach(qlibname) - # qjpeg depends on libjpeg - list(APPEND QT_PLUGIN_LIBRARIES jpeg) - set(WEBKITLIBPLUGIN OFF CACHE BOOL - "WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.") -else (USESYSTEMLIBS) - use_prebuilt_binary(llqtwebkit) - set(WEBKITLIBPLUGIN ON CACHE BOOL - "WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.") -endif (USESYSTEMLIBS) - -if (WINDOWS) - set(WEBKIT_PLUGIN_LIBRARIES - debug llqtwebkitd - debug QtWebKitd4 - debug QtOpenGLd4 - debug QtNetworkd4 - debug QtGuid4 - debug QtCored4 - debug qtmaind - optimized llqtwebkit - optimized QtWebKit4 - optimized QtOpenGL4 - optimized QtNetwork4 - optimized QtGui4 - optimized QtCore4 - optimized qtmain - ) -elseif (DARWIN) - set(WEBKIT_PLUGIN_LIBRARIES - ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.a - ${ARCH_PREBUILT_DIRS_RELEASE}/libQtWebKit.4.dylib - ${ARCH_PREBUILT_DIRS_RELEASE}/libQtOpenGL.4.dylib - ${ARCH_PREBUILT_DIRS_RELEASE}/libQtNetwork.4.dylib - ${ARCH_PREBUILT_DIRS_RELEASE}/libQtGui.4.dylib - ${ARCH_PREBUILT_DIRS_RELEASE}/libQtCore.4.dylib - ) -elseif (LINUX) - # *HUH: What does this do? - set(WEBKIT_PLUGIN_LIBRARIES ${LLQTWEBKIT_LIBRARY} ${QT_LIBRARIES} ${QT_PLUGIN_LIBRARIES}) - set(WEBKIT_PLUGIN_LIBRARIES - llqtwebkit -# qico -# qpng -# qtiff -# qsvg -# QtSvg - QtWebKit - QtOpenGL - QtNetwork - ${OPENSSL_LIBRARIES} - QtGui - QtCore -# jscore -# qgif -# qjpeg -# jpeg - fontconfig - X11 - Xrender - GL - -# sqlite3 -# Xi -# SM - ) -endif (WINDOWS) diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake index 8c3790ea89..8c3790ea89 100755..100644 --- a/indra/cmake/XmlRpcEpi.cmake +++ b/indra/cmake/XmlRpcEpi.cmake diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake index 6cff0753b2..6cff0753b2 100755..100644 --- a/indra/cmake/ZLIB.cmake +++ b/indra/cmake/ZLIB.cmake diff --git a/indra/cmake/cmake_dummy.cpp b/indra/cmake/cmake_dummy.cpp index ae4475a73e..ae4475a73e 100755..100644 --- a/indra/cmake/cmake_dummy.cpp +++ b/indra/cmake/cmake_dummy.cpp diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 582185e5ab..a79d09a9ea 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -47,6 +47,8 @@ $/LicenseInfo$ import os import sys import errno +import HTMLParser +import re import signal import subprocess @@ -148,15 +150,158 @@ def translate_rc(rc): if rc >= 0: return "terminated with rc %s" % rc - # Negative rc means the child was terminated by signal -rc. - rc = -rc - for attr in dir(signal): - if attr.startswith('SIG') and getattr(signal, attr) == rc: - strc = attr - break + if sys.platform.startswith("win"): + # From http://stackoverflow.com/questions/20629027/process-finished-with-exit-code-1073741571 + # [-1073741571] is the signed integer representation of Microsoft's + # "stack overflow/stack exhaustion" error code 0xC00000FD. + # Anytime you see strange, large negative exit codes in windows, convert + # them to hex and then look them up in the ntstatus error codes + # http://msdn.microsoft.com/en-us/library/cc704588.aspx + + # Python bends over backwards to give you all the integer precision + # you need, avoiding truncation. But only with 32-bit signed ints is + # -1073741571 equivalent to 0xC00000FD! Explicitly truncate before + # converting. + hexrc = "0x%X" % (rc & 0xFFFFFFFF) + # At this point, we're only trying to format the rc to make it easier + # for a human being to understand. Any exception here -- file doesn't + # exist, HTML parsing error, unrecognized table structure, unknown key + # -- should NOT kill the script! It should only cause us to shrug and + # present our caller with the best information available. + try: + table = get_windows_table() + symbol, desc = table[hexrc] + except Exception, err: + print >>sys.stderr, "(%s -- carrying on)" % err + return "terminated with rc %s (%s)" % (rc, hexrc) + else: + return "terminated with rc %s: %s: %s" % (hexrc, symbol, desc) + else: - strc = str(rc) - return "terminated by signal %s" % strc + # On Posix, negative rc means the child was terminated by signal -rc. + rc = -rc + for attr in dir(signal): + if attr.startswith('SIG') and getattr(signal, attr) == rc: + strc = attr + break + else: + strc = str(rc) + return "terminated by signal %s" % strc + +class TableParser(HTMLParser.HTMLParser): + """ + This HTMLParser subclass is designed to parse the table we know exists + in windows-rcs.html, hopefully without building in too much knowledge of + the specific way that table is currently formatted. + """ + # regular expression matching any string containing only whitespace + whitespace = re.compile(r'\s*$') + + def __init__(self): + # Because Python 2.x's HTMLParser is an old-style class, we must use + # old-style syntax to forward the __init__() call -- not super(). + HTMLParser.HTMLParser.__init__(self) + # this will collect all the data, eventually + self.table = [] + # Stack whose top (last item) indicates where to append current + # element data. When empty, don't collect data at all. + self.dest = [] + + def handle_starttag(self, tag, attrs): + if tag == "table": + # This is the outermost tag we recognize. Collect nested elements + # within self.table. + self.dest.append(self.table) + elif tag in ("tr", "td"): + # Nested elements whose contents we want to capture as sublists. + # To the list currently designated by the top of the dest stack, + # append a new empty sublist. + self.dest[-1].append([]) + # Now push THAT new, empty list as the new top of the dest stack. + self.dest.append(self.dest[-1][-1]) + elif tag == "p": + # We could handle <p> ... </p> just like <tr> or <td>, but that + # introduces an unnecessary extra level of nesting. Just skip. + pass + else: + # For any tag we don't recognize (notably <th>), push a new, empty + # list to the top of the dest stack. This new list is NOT + # referenced by anything in self.table; thus, when we pop it, any + # data we've collected inside that list will be discarded. + self.dest.append([]) + + def handle_endtag(self, tag): + # Because we avoid pushing self.dest for <p> in handle_starttag(), we + # must refrain from popping it for </p> here. + if tag != "p": + # For everything else, including unrecognized tags, pop the dest + # stack, reverting to outer collection. + self.dest.pop() + + def handle_startendtag(self, tag, attrs): + # The table of interest contains <td> entries of the form: + # <p>0x00000000<br />STATUS_SUCCESS</p> + # The <br/> is very useful -- we definitely want two different data + # items for "0x00000000" and "STATUS_SUCCESS" -- but we don't need or + # want it to push, then discard, an empty list as it would if we let + # the default HTMLParser.handle_startendtag() call handle_starttag() + # followed by handle_endtag(). Just ignore <br/> or any other + # singleton tag. + pass + + def handle_data(self, data): + # Outside the <table> of interest, self.dest is empty. Do not bother + # collecting data when self.dest is empty. + # HTMLParser calls handle_data() with every chunk of whitespace + # between tags. That would be lovely if our eventual goal was to + # reconstitute the original input stream with its existing formatting, + # but for us, whitespace only clutters the table. Ignore it. + if self.dest and not self.whitespace.match(data): + # Here we're within our <table> and we have non-whitespace data. + # Append it to the list designated by the top of the dest stack. + self.dest[-1].append(data) + +# cache for get_windows_table() +_windows_table = None + +def get_windows_table(): + global _windows_table + # If we already loaded _windows_table, no need to load it all over again. + if _windows_table: + return _windows_table + + # windows-rcs.html was fetched on 2015-03-24 with the following command: + # curl -o windows-rcs.html \ + # https://msdn.microsoft.com/en-us/library/cc704588.aspx + parser = TableParser() + with open(os.path.join(os.path.dirname(__file__), "windows-rcs.html")) as hf: + # We tried feeding the file data to TableParser in chunks, to avoid + # buffering the entire file as a single string. Unfortunately its + # handle_data() cannot tell the difference between distinct calls + # separated by HTML tags, and distinct calls necessitated by a chunk + # boundary. Sigh! Read in the whole file. At the time this was + # written, it was only 500KB anyway. + parser.feed(hf.read()) + parser.close() + table = parser.table + + # With our parser, any <tr><th>...</th></tr> row leaves a table entry + # consisting only of an empty list. Remove any such. + while table and not table[0]: + table.pop(0) + + # We expect rows of the form: + # [['0x00000000', 'STATUS_SUCCESS'], + # ['The operation completed successfully.']] + # The latter list will have multiple entries if Microsoft embedded <br/> + # or <p> ... </p> in the text, in which case joining with '\n' is + # appropriate. + # Turn that into a dict whose key is the hex string, and whose value is + # the pair (symbol, desc). + _windows_table = dict((key, (symbol, '\n'.join(desc))) + for (key, symbol), desc in table) + + return _windows_table if __name__ == "__main__": from optparse import OptionParser diff --git a/indra/cmake/windows-rcs.html b/indra/cmake/windows-rcs.html new file mode 100644 index 0000000000..da2fbcdaef --- /dev/null +++ b/indra/cmake/windows-rcs.html @@ -0,0 +1,15157 @@ +<!DOCTYPE html> + +<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" lang="en"> + <head><meta name="Search.MSHKeywordA" content="596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSHAttr.DCSext.appliesToProduct" content="Windows" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSHAttr.DCSext.MSDNLibOpenProtocol" content="WINDOWS" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSHAttr.Locale" content="en-us" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSHAttr.AssetID" content="596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSHAttr.TopicType" content="kbRef" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.Microsoft.Help.Id" content="596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ms310241" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ms310241MSDN10" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="cc203350" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="cc203350PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ee815853" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ee815853PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ee939280" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ee939280PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="dn781106" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="dn781106PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ee914698" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ee914698PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ee914688" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ee914688PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="ee914687" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="ee914687PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategory" content="cc704588" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.MSCategoryV" content="cc704588PROT20" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.TocNodeId" content="cc704588" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHKeywordA" content="596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="DCSext.appliesToProduct:Windows" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="DCSext.MSDNLibOpenProtocol:WINDOWS" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="Locale:en-us" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="AssetID:596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="TopicType:kbRef" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Microsoft.Help.Id" content="596a1078-e883-4972-9bbc-49e60bebca55" xmlns:c="urn:msdn-com:mtps/2004/1/common" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSHAttr" content="Rating:58.871" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.Rating" content="58.870967" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.Rating.FiveStarScale" content="2.94354835" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="MSMETANRatingMSMETAV" content="58.870967" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="TotalHelpfulVotes" content="17" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="TotalVotes" content="31" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="HasCodeSamples" content="false" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.RootTocId" content="ms310241" xmlns="http://www.w3.org/1999/xhtml" /> +<meta name="Search.library.Url" content="https://msdn.microsoft.com/en-us/library/cc704588.aspx" xmlns="http://www.w3.org/1999/xhtml" /><link rel="canonical" href="https://msdn.microsoft.com/en-us/library/cc704588.aspx" /> + <title>2.3.1 NTSTATUS values</title> + + + + + +<meta name="DCS.dcsuri" content="/en-us/library/cc704588(d=default,l=en-us,v=prot.20).aspx" /> + +<meta name="NormalizedUrl" content="https://msdn.microsoft.com/en-us/library/cc704588(d=default,l=en-us,v=prot.20).aspx" /> + +<meta name="ms.normalizedurl" content="https://msdn.microsoft.com/en-us/library/cc704588(d=default,l=en-us,v=prot.20).aspx" /> + +<meta name="DCSext.appliesToProduct" content="Windows" /> + +<meta name="DCSext.MSDNLibOpenProtocol" content="WINDOWS" /> + +<meta name="VotingContextUrl" content="https://msdn.microsoft.com/en-us/library/cc704588(d=default,l=en-us,v=prot.20).aspx" /> + +<meta name="MN" content="FB361394-9:41:50 AM" /> + +<meta name="Search.ShortId" content="cc704588" /> + +<meta name="ms.shortidmsdn" content="cc704588" /> + +<meta name="Ms.Locale" content="en-us" /> + +<meta name="ms.prodver" content="PROT.20" /> + +<meta name="ms.contentlang" content="EN" /> + +<meta name="ms.lang" content="EN" /> + +<meta name="ms.loc" content="US" /> + +<meta name="ms.sitever" content="2015.02.26.3" /> + +<meta name="ms.assetid" content="596a1078-e883-4972-9bbc-49e60bebca55" /> + +<meta name="ms.auth" content="0" /> + + + + + + + + + + <link rel="stylesheet" type="text/css" href="https://i-msdn.sec.s-msft.com/Combined.css?resources=0:Topic,0:CodeSnippet,0:ProgrammingSelector,0:ExpandableCollapsibleArea,1:CommunityContent,0:TopicNotInScope,0:FeedViewerBasic,0:ImageSprite,2:Header,2:HeaderFooterSprite,3:LinkList,4:PrintExportButton,1:Toc,1:NavigationResize,1:LibraryMemberFilter,2:Footer,3:FooterSock,3:Base,5:Msdn;/Areas/Epx/Content/Css:0,/Areas/Library/Content:1,/Areas/Centers/Themes/StandardDevCenter/Content:2,/Areas/Epx/Themes/Base/Content:3,/Areas/Library/Themes/Base/Content:4,/Areas/Library/Themes/Msdn/Content:5&amp;v=AA60BEA00AEACA3B8F447C4DD8D8022E" /></head> + <body class="library "> + <div id="page"> + + + + + + + + + <link type="text/css" rel="stylesheet" /> + + <input type="hidden" id="isHeaderBleeding" value="true" /> + <div id="ux-header" dir="ltr" class="ltr msdn"> + + + <header> + <span id="moveDrawer"></span> + <span id="singleCol"></span> + <span id="doubleCol"></span> + + <div class="row"> + <div class="top"> + <div class="left"> + + <a class="msdnLogoImg" href="https://msdn.microsoft.com/en-us"> + <img src="https://i-msdn.sec.s-msft.com/Areas/Centers/Themes/StandardDevCenter/Content/Images/microsoftLogoForHeader.png?v=635605659908771441" /> + </a> + </div> + + <div class="right"> + <div id="signIn"> + +<a class="scarabLink" href="https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1427215310&rver=6.0.5276.0&wp=MCMBI&wlcxt=MSDN%24MSDN%24MSDN&wreply=https%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fcc704588.aspx&lc=1033&id=254354&mkt=en-US" title="Sign in">Sign in</a></div> + + + + <div class="auxNav"> + <div data-fragmentName="Subscriptions" id="Fragment_Subscriptions" xmlns="http://www.w3.org/1999/xhtml"> + <a href="https://msdn.microsoft.com/subscriptions/manage/hh442900" id="Subscriptions_2153_1" xmlns="http://www.w3.org/1999/xhtml">MSDN subscriptions</a> +</div> + <div data-fragmentName="GetTools" id="Fragment_GetTools" xmlns="http://www.w3.org/1999/xhtml"> + <a href="http://go.microsoft.com/fwlink/?LinkId=309297&clcid=0x409&slcid=0x409&campaign=o~msft~msdn~gettools-header~dn308572" id="GetTools_2153_3" xmlns="http://www.w3.org/1999/xhtml">Get tools</a> +</div> + <div data-fragmentName="SocialLinks" id="Fragment_SocialLinks" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <ul class="links horizontal"> + <li> + <a href="http://www.facebook.com/microsoftdeveloper" target="_blank" id="SocialLinks_2152_4" class="facebook" xmlns="http://www.w3.org/1999/xhtml">http://www.facebook.com/microsoftdeveloper</a> + </li> + <li> + <a href="https://twitter.com/msdev" target="_blank" id="SocialLinks_2152_5" class="twitter" xmlns="http://www.w3.org/1999/xhtml">https://twitter.com/msdev</a> + </li> + <li> + <a href="http://plus.google.com/111221966647232053570/" target="_blank" id="SocialLinks_2152_6" class="googlePlus" xmlns="http://www.w3.org/1999/xhtml">http://plus.google.com/111221966647232053570/</a> + </li> + </ul> + </div> +</div> + </div> + </div> + </div> + + <div class="bottom"> + <div class="left"> + <div data-fragmentName="SiteLogo" id="Fragment_SiteLogo" xmlns="http://www.w3.org/1999/xhtml"> + <div class="LinkWithImage topImage"> + <a id="SiteLogo_2152_1" href="https://msdn.microsoft.com"> + <img id="msdnLogo-black" src="https://i-msdn.sec.s-msft.com/en-us/msdn/ux/library/dn610975.msdnLogo-black.jpg?Segments=%2flibrary&isLibrary=true&isMtpsRequest=true&HideProfileLink=true" xmlns="" /> + <span></span> + </a> + </div> +</div> + <div id="drawer"> + <div class="toc"> + + <nav> + <ul class="navL1"> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Technologies">Technologies</a> + <ul class="navL2"> + <li class="inactive"> + <a href="https://msdn.microsoft.com/cloud-app-development-msdn" title="Cloud">Cloud</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/mobile-app-development-msdn" title="Mobile">Mobile</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/web-app-development-msdn" title="Web">Web</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/business-and-productivity-app-development-msdn" title="Business">Business</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/big-data-development-msdn" title="Data">Data</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/games-development-msdn" title="Gaming">Gaming</a> + + + </li> + </ul> + </li> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Downloads">Downloads</a> + <ul class="navL2"> + <li class="inactive"> + <a href="https://www.visualstudio.com/downloads/download-visual-studio-vs" title="Visual Studio">Visual Studio</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/subscriptions" title="MSDN subscriptions">MSDN subscriptions</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/microsoft-sdks-msdn" title="SDKs">SDKs</a> + + + </li> + </ul> + </li> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Programs">Programs</a> + <ul class="navL2"> + <li class="inactive"> + <a href="https://www.microsoft.com/bizspark" title="BizSpark">BizSpark</a> + + + </li> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Students">Students</a> + + <ul class="navL3"> + <li class="inactive"> + <a href="https://msdn.microsoft.com/student-developer-program" title="Develop apps">Develop apps</a> + </li> + <li class="inactive"> + <a href="http://blogs.msdn.com/b/microsoft_student_developer_blog" title="Blog">Blog</a> + </li> + </ul> + + </li> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Architects">Architects</a> + + <ul class="navL3"> + <li class="inactive"> + <a href="https://msdn.microsoft.com/architects-overview-msdn" title="Overview">Overview</a> + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/architects-case-studies-msdn" title="Case studies">Case studies</a> + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/architects-blueprints-msdn" title="Blueprints">Blueprints</a> + </li> + <li class="inactive"> + <a href="http://blogs.msdn.com/b/msarchitecture/" title="Blog">Blog</a> + </li> + <li class="inactive"> + <a href="http://social.msdn.microsoft.com/forums/en-us/home?brandignore=true&sort=relevancedesc&searchterm=architecture+or+architect" title="Forums">Forums</a> + </li> + </ul> + + </li> + <li class="inactive"> + <a href="http://events.msdn.microsoft.com/" title="Events">Events</a> + + + </li> + </ul> + </li> + <li class="inactive toggle"> + <a href="javascript:void(0)" title="Community">Community</a> + <ul class="navL2"> + <li class="inactive"> + <a href="https://social.msdn.microsoft.com/forums/" title="Forums">Forums</a> + + + </li> + <li class="inactive"> + <a href="http://blogs.msdn.com/b/developer-tools/" title="Blogs">Blogs</a> + + + </li> + <li class="inactive"> + <a href="http://tech-advisors.msdn.microsoft.com/en-us" title="Tech Advisors">Tech Advisors</a> + + + </li> + <li class="inactive"> + <a href="http://channel9.msdn.com/" title="Channel 9">Channel 9</a> + + + </li> + </ul> + </li> + <li class="inactive current toggle"> + <a href="javascript:void(0)" title="Documentation">Documentation</a> + <ul class="navL2"> + <li class="inactive current"> + <a href="https://msdn.microsoft.com/library" title="APIs and reference">APIs and reference</a> + + + </li> + <li class="inactive"> + <a href="https://msdn.microsoft.com/developer-centers-msdn" title="Dev centers">Dev centers</a> + + + </li> + </ul> + </li> + <li class="inactive"> + <a href="https://code.msdn.microsoft.com/" title="Samples">Samples</a> + </li> + </ul> + </nav> + + </div> + </div> + </div> + + <div class="right"> + <div data-fragmentName="SearchBox" id="Fragment_SearchBox" xmlns="http://www.w3.org/1999/xhtml"> + <div class="SearchBox"> + <form id="HeaderSearchForm" name="HeaderSearchForm" method="get" onsubmit="return Epx.Controls.SearchBox.searchBoxOnSubmit(this);"> + <input id="HeaderSearchTextBox" name="query" type="text" maxlength="200" onfocus="Epx.Controls.SearchBox.watermarkFocus(event, this.title)" onblur="Epx.Controls.SearchBox.watermarkBlur(event, this.title)" /> + <button id="HeaderSearchButton" value="" type="submit" class="header-search-button"></button> + </form> + + + </div> +</div> + <a id="grip" href="javascript:void(0)"></a> + </div> + </div> + </div> + </header> + </div> + + + + + <div class="printExportMenus ltr"> + <a id="isd_printABook" href="/en-us/library/export/help/?returnUrl=%2fen-us%2flibrary%2fcc704588.aspx"> + Export (<span class="count">0</span>) + </a> + <a id="isd_print" href="https://msdn.microsoft.com/en-us/library/cc704588(d=printer).aspx" rel="nofollow"> + Print + </a> + </div> + + + <div class="printExportMenus ltr"> + <a id="expandCollapseAll" accesskey="e" href="javascript:void(0)" title="Expand/Collapse all sections by pressing Ctrl + Shift + e">Expand All</a> + </div> + + + + + <div id="body"> + + + + + + + + + + <div id="leftNav"> + + + +<div id="tocnav"> + + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/ms123401.aspx" id="ms310241_MSDN.10_en-us" mtpsaliasid="" mtpsassetid="5DDC0A78-6B2C-43E3-9C56-55F45C0DFFA5_MSDN.10_en-us" mtpsshortid="ms123401_MSDN.10_en-us" title="MSDN Library">MSDN Library</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/dd208104(v=prot.10).aspx" id="cc203350_PROT.20_en-us" mtpsaliasid="" mtpsassetid="3589baea-5b22-48f2-9d43-f5bea4960ddb_PROT.20_en-us" mtpsshortid="dd208104_PROT.10_en-us" title="Open Specifications">Open Specifications</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/gg685446.aspx" id="ee815853_PROT.20_en-us" mtpsaliasid="" mtpsassetid="9a3ae8a2-02e5-4d05-874a-b3551405d8f9_PROT.20_en-us" mtpsshortid="gg685446_MSDN.10_en-us" title="Protocols">Protocols</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/cc216517.aspx" id="ee939280_PROT.20_en-us" mtpsaliasid="" mtpsassetid="92b33e19-6fff-496b-86c3-d168206f9845_PROT.20_en-us" mtpsshortid="cc216517_PROT.20_en-us" title="Windows Protocols">Windows Protocols</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/cc216516.aspx" id="dn781106_PROT.20_en-us" mtpsaliasid="" mtpsassetid="1593dc07-6116-4e9e-8aeb-85c7438fab0a_PROT.20_en-us" mtpsshortid="cc216516_PROT.20_en-us" title="References">References</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/cc231196.aspx" id="ee914698_PROT.20_en-us" mtpsaliasid="" mtpsassetid="1bc92ddf-b79e-413c-bbaa-99a5281a6c90_PROT.20_en-us" mtpsshortid="cc231196_PROT.20_en-us" title="[MS-ERREF]: Windows Error Codes">[MS-ERREF]: Windows Error Codes</a> </div> + <div class="toclevel0" data-toclevel="0"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/cc231210.aspx" id="ee914688_PROT.20_en-us" mtpsaliasid="" mtpsassetid="32cce05d-3a39-4c7e-8f66-5e788e1107cf_PROT.20_en-us" mtpsshortid="cc231210_PROT.20_en-us" title="2 Structures">2 Structures</a> </div> + <div class="toclevel1" data-toclevel="1"> +<a data-tochassubtree="true" href="https://msdn.microsoft.com/en-us/library/cc231200.aspx" id="ee914687_PROT.20_en-us" mtpsaliasid="" mtpsassetid="87fba13e-bf06-450e-83b1-9241dc81e781_PROT.20_en-us" mtpsshortid="cc231200_PROT.20_en-us" title="2.3 NTSTATUS">2.3 NTSTATUS</a> </div> + <div class="toclevel2 current" data-toclevel="2"> +<a href="https://msdn.microsoft.com/en-us/library/cc704588.aspx" mtpsaliasid="" mtpsassetid="" mtpsshortid="" title="2.3.1 NTSTATUS values">2.3.1 NTSTATUS values</a> </div> +</div> + + + + + + + <div id="toc-resizable-ew" class="toc-resizable-ew"></div> + + +<a id="NavigationResize" href="javascript:void(0)"> + <img class="cl_nav_resize_open" src="https://i-msdn.sec.s-msft.com/Areas/Epx/Content/Images/ImageSprite.png?v=635605659960334597" title="Expand" alt="Expand" /> + <img class="cl_nav_resize_close" src="https://i-msdn.sec.s-msft.com/Areas/Epx/Content/Images/ImageSprite.png?v=635605659960334597" title="Minimize" alt="Minimize" /> +</a> + + + + </div> +<div id="content" class="content"> + + + + + + + + +<div xmlns="http://www.w3.org/1999/xhtml"> +<div class="topic" xmlns="http://www.w3.org/1999/xhtml" xmlns:mtps="http://msdn2.microsoft.com/mtps"> + <h1 class="title">2.3.1 NTSTATUS values</h1> + + <div id="mainSection"> + <div id="mainBody"> + <div id="sectionSection0" class="section"> + <p>By combining the NTSTATUS into a single 32-bit numbering space, the following NTSTATUS values are defined. Most values also have a defined default message that can be used to map the value to a human-readable text message. When this is done, the NTSTATUS value is also known as a <a href="https://msdn.microsoft.com/en-us/library/2ac5d774-07c9-4de4-a2a8-6baa333455fa#message_identifier">message identifier</a>. </p> + <p>This document provides the common usage details of the NTSTATUS values; individual protocol specifications may provide expanded or modified definitions.</p> + <p>In the following descriptions, a percentage sign that is followed by one or more alphanumeric characters (for example, "%1" or "%hs") indicates a variable that is replaced by text at the time the value is returned. </p> + <p /> + <table class="FixedWidth-40-60"> + <tr> + <th id="ShadedCell"> + Return value/code + </th> + <th id="ShadedCell1"> + Description + </th> + </tr> + <tr> + <td> + <p>0x00000000<br />STATUS_SUCCESS</p> + </td> + <td> + <p>The operation completed successfully. </p> + </td> + </tr> + <tr> + <td> + <p>0x00000000<br />STATUS_WAIT_0</p> + </td> + <td> + <p>The caller specified WaitAny for WaitType and one of the dispatcher objects in the Object array has been set to the signaled state.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000001<br />STATUS_WAIT_1</p> + </td> + <td> + <p>The caller specified WaitAny for WaitType and one of the dispatcher objects in the Object array has been set to the signaled state.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000002<br />STATUS_WAIT_2</p> + </td> + <td> + <p>The caller specified WaitAny for WaitType and one of the dispatcher objects in the Object array has been set to the signaled state.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000003<br />STATUS_WAIT_3</p> + </td> + <td> + <p>The caller specified WaitAny for WaitType and one of the dispatcher objects in the Object array has been set to the signaled state.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000003F<br />STATUS_WAIT_63</p> + </td> + <td> + <p>The caller specified WaitAny for WaitType and one of the dispatcher objects in the Object array has been set to the signaled state.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000080<br />STATUS_ABANDONED</p> + </td> + <td> + <p>The caller attempted to wait for a mutex that has been abandoned.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000080<br />STATUS_ABANDONED_WAIT_0</p> + </td> + <td> + <p>The caller attempted to wait for a mutex that has been abandoned.</p> + </td> + </tr> + <tr> + <td> + <p>0x000000BF<br />STATUS_ABANDONED_WAIT_63</p> + </td> + <td> + <p>The caller attempted to wait for a mutex that has been abandoned.</p> + </td> + </tr> + <tr> + <td> + <p>0x000000C0<br />STATUS_USER_APC</p> + </td> + <td> + <p>A user-mode APC was delivered before the given Interval expired.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000101<br />STATUS_ALERTED</p> + </td> + <td> + <p>The delay completed because the thread was alerted.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000102<br />STATUS_TIMEOUT</p> + </td> + <td> + <p>The given Timeout interval expired.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000103<br />STATUS_PENDING</p> + </td> + <td> + <p>The operation that was requested is pending completion.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000104<br />STATUS_REPARSE</p> + </td> + <td> + <p>A reparse should be performed by the Object Manager because the name of the file resulted in a symbolic link.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000105<br />STATUS_MORE_ENTRIES</p> + </td> + <td> + <p>Returned by enumeration APIs to indicate more information is available to successive calls.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000106<br />STATUS_NOT_ALL_ASSIGNED</p> + </td> + <td> + <p>Indicates not all privileges or groups that are referenced are assigned to the caller. This allows, for example, all privileges to be disabled without having to know exactly which privileges are assigned.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000107<br />STATUS_SOME_NOT_MAPPED</p> + </td> + <td> + <p>Some of the information to be translated has not been translated.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000108<br />STATUS_OPLOCK_BREAK_IN_PROGRESS</p> + </td> + <td> + <p>An open/create operation completed while an opportunistic lock (oplock) break is underway.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000109<br />STATUS_VOLUME_MOUNTED</p> + </td> + <td> + <p>A new volume has been mounted by a file system.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000010A<br />STATUS_RXACT_COMMITTED</p> + </td> + <td> + <p>This success level status indicates that the transaction state already exists for the registry subtree but that a transaction commit was previously aborted. The commit has now been completed.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000010B<br />STATUS_NOTIFY_CLEANUP</p> + </td> + <td> + <p>Indicates that a notify change request has been completed due to closing the handle that made the notify change request.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000010C<br />STATUS_NOTIFY_ENUM_DIR</p> + </td> + <td> + <p>Indicates that a notify change request is being completed and that the information is not being returned in the caller's buffer. The caller now needs to enumerate the files to find the changes.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000010D<br />STATUS_NO_QUOTAS_FOR_ACCOUNT</p> + </td> + <td> + <p>{No Quotas} No system quota limits are specifically set for this account.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000010E<br />STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED</p> + </td> + <td> + <p>{Connect Failure on Primary Transport} An attempt was made to connect to the remote server %hs on the primary transport, but the connection failed. The computer WAS able to connect on a secondary transport.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000110<br />STATUS_PAGE_FAULT_TRANSITION</p> + </td> + <td> + <p>The page fault was a transition fault.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000111<br />STATUS_PAGE_FAULT_DEMAND_ZERO</p> + </td> + <td> + <p>The page fault was a demand zero fault.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000112<br />STATUS_PAGE_FAULT_COPY_ON_WRITE</p> + </td> + <td> + <p>The page fault was a demand zero fault.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000113<br />STATUS_PAGE_FAULT_GUARD_PAGE</p> + </td> + <td> + <p>The page fault was a demand zero fault.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000114<br />STATUS_PAGE_FAULT_PAGING_FILE</p> + </td> + <td> + <p>The page fault was satisfied by reading from a secondary storage device.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000115<br />STATUS_CACHE_PAGE_LOCKED</p> + </td> + <td> + <p>The cached page was locked during operation.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000116<br />STATUS_CRASH_DUMP</p> + </td> + <td> + <p>The crash dump exists in a paging file.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000117<br />STATUS_BUFFER_ALL_ZEROS</p> + </td> + <td> + <p>The specified buffer contains all zeros.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000118<br />STATUS_REPARSE_OBJECT</p> + </td> + <td> + <p>A reparse should be performed by the Object Manager because the name of the file resulted in a symbolic link.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000119<br />STATUS_RESOURCE_REQUIREMENTS_CHANGED</p> + </td> + <td> + <p>The device has succeeded a query-stop and its resource requirements have changed.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000120<br />STATUS_TRANSLATION_COMPLETE</p> + </td> + <td> + <p>The translator has translated these resources into the global space and no additional translations should be performed.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000121<br />STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY</p> + </td> + <td> + <p>The directory service evaluated group memberships locally, because it was unable to contact a global catalog server.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000122<br />STATUS_NOTHING_TO_TERMINATE</p> + </td> + <td> + <p>A process being terminated has no threads to terminate.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000123<br />STATUS_PROCESS_NOT_IN_JOB</p> + </td> + <td> + <p>The specified process is not part of a job.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000124<br />STATUS_PROCESS_IN_JOB</p> + </td> + <td> + <p>The specified process is part of a job.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000125<br />STATUS_VOLSNAP_HIBERNATE_READY</p> + </td> + <td> + <p>{Volume Shadow Copy Service} The system is now ready for hibernation.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000126<br />STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY</p> + </td> + <td> + <p>A file system or file system filter driver has successfully completed an FsFilter operation.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000127<br />STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED</p> + </td> + <td> + <p>The specified interrupt vector was already connected.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000128<br />STATUS_INTERRUPT_STILL_CONNECTED</p> + </td> + <td> + <p>The specified interrupt vector is still connected.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000129<br />STATUS_PROCESS_CLONED</p> + </td> + <td> + <p>The current process is a cloned process.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000012A<br />STATUS_FILE_LOCKED_WITH_ONLY_READERS</p> + </td> + <td> + <p>The file was locked and all users of the file can only read.</p> + </td> + </tr> + <tr> + <td> + <p>0x0000012B<br />STATUS_FILE_LOCKED_WITH_WRITERS</p> + </td> + <td> + <p>The file was locked and at least one user of the file can write.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000202<br />STATUS_RESOURCEMANAGER_READ_ONLY</p> + </td> + <td> + <p>The specified ResourceManager made no changes or updates to the resource under this transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0x00000367<br />STATUS_WAIT_FOR_OPLOCK</p> + </td> + <td> + <p>An operation is blocked and waiting for an oplock.</p> + </td> + </tr> + <tr> + <td> + <p>0x00010001<br />DBG_EXCEPTION_HANDLED</p> + </td> + <td> + <p>Debugger handled the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0x00010002<br />DBG_CONTINUE</p> + </td> + <td> + <p>The debugger continued.</p> + </td> + </tr> + <tr> + <td> + <p>0x001C0001<br />STATUS_FLT_IO_COMPLETE</p> + </td> + <td> + <p>The IO was completed by a filter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000467<br />STATUS_FILE_NOT_AVAILABLE</p> + </td> + <td> + <p>The file is temporarily unavailable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000721<br />STATUS_CALLBACK_RETURNED_THREAD_AFFINITY</p> + </td> + <td> + <p>A threadpool worker thread entered a callback at thread affinity %p and exited at affinity %p.</p> + <p>This is unexpected, indicating that the callback missed restoring the priority.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000000<br />STATUS_OBJECT_NAME_EXISTS</p> + </td> + <td> + <p>{Object Exists} An attempt was made to create an object but the object name already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000001<br />STATUS_THREAD_WAS_SUSPENDED</p> + </td> + <td> + <p>{Thread Suspended} A thread termination occurred while the thread was suspended. The thread resumed, and termination proceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000002<br />STATUS_WORKING_SET_LIMIT_RANGE</p> + </td> + <td> + <p>{Working Set Range Error} An attempt was made to set the working set minimum or maximum to values that are outside the allowable range.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000003<br />STATUS_IMAGE_NOT_AT_BASE</p> + </td> + <td> + <p>{Image Relocated} An image file could not be mapped at the address that is specified in the image file. Local fixes must be performed on this image.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000004<br />STATUS_RXACT_STATE_CREATED</p> + </td> + <td> + <p>This informational level status indicates that a specified registry subtree transaction state did not yet exist and had to be created.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000005<br />STATUS_SEGMENT_NOTIFICATION</p> + </td> + <td> + <p>{Segment Load} A virtual DOS machine (VDM) is loading, unloading, or moving an MS-DOS or Win16 program segment image. An exception is raised so that a debugger can load, unload, or track symbols and breakpoints within these 16-bit segments.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000006<br />STATUS_LOCAL_USER_SESSION_KEY</p> + </td> + <td> + <p>{Local Session Key} A user session key was requested for a local remote procedure call (RPC) connection. The session key that is returned is a constant value and not unique to this connection.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000007<br />STATUS_BAD_CURRENT_DIRECTORY</p> + </td> + <td> + <p>{Invalid Current Directory} The process cannot switch to the startup current directory %hs. Select OK to set the current directory to %hs, or select CANCEL to exit.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000008<br />STATUS_SERIAL_MORE_WRITES</p> + </td> + <td> + <p>{Serial IOCTL Complete} A serial I/O operation was completed by another write to a serial port. (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)</p> + </td> + </tr> + <tr> + <td> + <p>0x40000009<br />STATUS_REGISTRY_RECOVERED</p> + </td> + <td> + <p>{Registry Recovery} One of the files that contains the system registry data had to be recovered by using a log or alternate copy. The recovery was successful.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000A<br />STATUS_FT_READ_RECOVERY_FROM_BACKUP</p> + </td> + <td> + <p>{Redundant Read} To satisfy a read request, the Windows NT fault-tolerant file system successfully read the requested data from a redundant copy. This was done because the file system encountered a failure on a member of the fault-tolerant volume but was unable to reassign the failing area of the device.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000B<br />STATUS_FT_WRITE_RECOVERY</p> + </td> + <td> + <p>{Redundant Write} To satisfy a write request, the Windows NT fault-tolerant file system successfully wrote a redundant copy of the information. This was done because the file system encountered a failure on a member of the fault-tolerant volume but was unable to reassign the failing area of the device.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000C<br />STATUS_SERIAL_COUNTER_TIMEOUT</p> + </td> + <td> + <p>{Serial IOCTL Timeout} A serial I/O operation completed because the time-out period expired. (The IOCTL_SERIAL_XOFF_COUNTER had not reached zero.)</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000D<br />STATUS_NULL_LM_PASSWORD</p> + </td> + <td> + <p>{Password Too Complex} The Windows password is too complex to be converted to a LAN Manager password. The LAN Manager password that returned is a NULL string.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000E<br />STATUS_IMAGE_MACHINE_TYPE_MISMATCH</p> + </td> + <td> + <p>{Machine Type Mismatch} The image file %hs is valid but is for a machine type other than the current machine. Select OK to continue, or CANCEL to fail the DLL load.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000000F<br />STATUS_RECEIVE_PARTIAL</p> + </td> + <td> + <p>{Partial Data Received} The network transport returned partial data to its client. The remaining data will be sent later.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000010<br />STATUS_RECEIVE_EXPEDITED</p> + </td> + <td> + <p>{Expedited Data Received} The network transport returned data to its client that was marked as expedited by the remote system.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000011<br />STATUS_RECEIVE_PARTIAL_EXPEDITED</p> + </td> + <td> + <p>{Partial Expedited Data Received} The network transport returned partial data to its client and this data was marked as expedited by the remote system. The remaining data will be sent later.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000012<br />STATUS_EVENT_DONE</p> + </td> + <td> + <p>{TDI Event Done} The TDI indication has completed successfully.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000013<br />STATUS_EVENT_PENDING</p> + </td> + <td> + <p>{TDI Event Pending} The TDI indication has entered the pending state.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000014<br />STATUS_CHECKING_FILE_SYSTEM</p> + </td> + <td> + <p>Checking file system on %wZ.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000015<br />STATUS_FATAL_APP_EXIT</p> + </td> + <td> + <p>{Fatal Application Exit} %hs</p> + </td> + </tr> + <tr> + <td> + <p>0x40000016<br />STATUS_PREDEFINED_HANDLE</p> + </td> + <td> + <p>The specified registry key is referenced by a predefined handle.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000017<br />STATUS_WAS_UNLOCKED</p> + </td> + <td> + <p>{Page Unlocked} The page protection of a locked page was changed to 'No Access' and the page was unlocked from memory and from the process.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000018<br />STATUS_SERVICE_NOTIFICATION</p> + </td> + <td> + <p>%hs</p> + </td> + </tr> + <tr> + <td> + <p>0x40000019<br />STATUS_WAS_LOCKED</p> + </td> + <td> + <p>{Page Locked} One of the pages to lock was already locked.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001A<br />STATUS_LOG_HARD_ERROR</p> + </td> + <td> + <p>Application popup: %1 : %2</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001B<br />STATUS_ALREADY_WIN32</p> + </td> + <td> + <p>A Win32 process already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001C<br />STATUS_WX86_UNSIMULATE</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001D<br />STATUS_WX86_CONTINUE</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001E<br />STATUS_WX86_SINGLE_STEP</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000001F<br />STATUS_WX86_BREAKPOINT</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000020<br />STATUS_WX86_EXCEPTION_CONTINUE</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000021<br />STATUS_WX86_EXCEPTION_LASTCHANCE</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000022<br />STATUS_WX86_EXCEPTION_CHAIN</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000023<br />STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE</p> + </td> + <td> + <p>{Machine Type Mismatch} The image file %hs is valid but is for a machine type other than the current machine.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000024<br />STATUS_NO_YIELD_PERFORMED</p> + </td> + <td> + <p>A yield execution was performed and no thread was available to run.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000025<br />STATUS_TIMER_RESUME_IGNORED</p> + </td> + <td> + <p>The resume flag to a timer API was ignored.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000026<br />STATUS_ARBITRATION_UNHANDLED</p> + </td> + <td> + <p>The arbiter has deferred arbitration of these resources to its parent.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000027<br />STATUS_CARDBUS_NOT_SUPPORTED</p> + </td> + <td> + <p>The device has detected a CardBus card in its slot.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000028<br />STATUS_WX86_CREATEWX86TIB</p> + </td> + <td> + <p>An exception status code that is used by the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000029<br />STATUS_MP_PROCESSOR_MISMATCH</p> + </td> + <td> + <p>The CPUs in this multiprocessor system are not all the same revision level. To use all processors, the operating system restricts itself to the features of the least capable processor in the system. If problems occur with this system, contact the CPU manufacturer to see if this mix of processors is supported.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002A<br />STATUS_HIBERNATED</p> + </td> + <td> + <p>The system was put into hibernation.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002B<br />STATUS_RESUME_HIBERNATION</p> + </td> + <td> + <p>The system was resumed from hibernation.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002C<br />STATUS_FIRMWARE_UPDATED</p> + </td> + <td> + <p> + Windows has detected that the system firmware (BIOS) was updated [previous firmware date = %2, current firmware date %3].</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002D<br />STATUS_DRIVERS_LEAKING_LOCKED_PAGES</p> + </td> + <td> + <p>A device driver is leaking locked I/O pages and is causing system degradation. The system has automatically enabled the tracking code to try and catch the culprit.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002E<br />STATUS_MESSAGE_RETRIEVED</p> + </td> + <td> + <p>The ALPC message being canceled has already been retrieved from the queue on the other side.</p> + </td> + </tr> + <tr> + <td> + <p>0x4000002F<br />STATUS_SYSTEM_POWERSTATE_TRANSITION</p> + </td> + <td> + <p>The system power state is transitioning from %2 to %3.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000030<br />STATUS_ALPC_CHECK_COMPLETION_LIST</p> + </td> + <td> + <p>The receive operation was successful. Check the ALPC completion list for the received message.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000031<br />STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION</p> + </td> + <td> + <p>The system power state is transitioning from %2 to %3 but could enter %4.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000032<br />STATUS_ACCESS_AUDIT_BY_POLICY</p> + </td> + <td> + <p>Access to %1 is monitored by policy rule %2.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000033<br />STATUS_ABANDON_HIBERFILE</p> + </td> + <td> + <p>A valid hibernation file has been invalidated and should be abandoned.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000034<br />STATUS_BIZRULES_NOT_ENABLED</p> + </td> + <td> + <p>Business rule scripts are disabled for the calling application.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000294<br />STATUS_WAKE_SYSTEM</p> + </td> + <td> + <p>The system has awoken.</p> + </td> + </tr> + <tr> + <td> + <p>0x40000370<br />STATUS_DS_SHUTTING_DOWN</p> + </td> + <td> + <p>The directory service is shutting down.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010001<br />DBG_REPLY_LATER</p> + </td> + <td> + <p>Debugger will reply later.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010002<br />DBG_UNABLE_TO_PROVIDE_HANDLE</p> + </td> + <td> + <p>Debugger cannot provide a handle.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010003<br />DBG_TERMINATE_THREAD</p> + </td> + <td> + <p>Debugger terminated the thread.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010004<br />DBG_TERMINATE_PROCESS</p> + </td> + <td> + <p>Debugger terminated the process.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010005<br />DBG_CONTROL_C</p> + </td> + <td> + <p>Debugger obtained control of C.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010006<br />DBG_PRINTEXCEPTION_C</p> + </td> + <td> + <p>Debugger printed an exception on control C.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010007<br />DBG_RIPEXCEPTION</p> + </td> + <td> + <p>Debugger received a RIP exception.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010008<br />DBG_CONTROL_BREAK</p> + </td> + <td> + <p>Debugger received a control break.</p> + </td> + </tr> + <tr> + <td> + <p>0x40010009<br />DBG_COMMAND_EXCEPTION</p> + </td> + <td> + <p>Debugger command communication exception.</p> + </td> + </tr> + <tr> + <td> + <p>0x40020056<br />RPC_NT_UUID_LOCAL_ONLY</p> + </td> + <td> + <p>A <a href="https://msdn.microsoft.com/en-us/library/513bb0aa-c8d8-456f-8a31-4e200ca7970c#uuid">UUID</a> that is valid only on this computer has been allocated.</p> + </td> + </tr> + <tr> + <td> + <p>0x400200AF<br />RPC_NT_SEND_INCOMPLETE</p> + </td> + <td> + <p>Some data remains to be sent in the request buffer.</p> + </td> + </tr> + <tr> + <td> + <p>0x400A0004<br />STATUS_CTX_CDM_CONNECT</p> + </td> + <td> + <p>The Client Drive Mapping Service has connected on Terminal Connection.</p> + </td> + </tr> + <tr> + <td> + <p>0x400A0005<br />STATUS_CTX_CDM_DISCONNECT</p> + </td> + <td> + <p>The Client Drive Mapping Service has disconnected on Terminal Connection.</p> + </td> + </tr> + <tr> + <td> + <p>0x4015000D<br />STATUS_SXS_RELEASE_ACTIVATION_CONTEXT</p> + </td> + <td> + <p>A kernel mode component is releasing a reference on an activation context.</p> + </td> + </tr> + <tr> + <td> + <p>0x40190034<br />STATUS_RECOVERY_NOT_NEEDED</p> + </td> + <td> + <p>The transactional resource manager is already consistent. Recovery is not needed.</p> + </td> + </tr> + <tr> + <td> + <p>0x40190035<br />STATUS_RM_ALREADY_STARTED</p> + </td> + <td> + <p>The transactional resource manager has already been started.</p> + </td> + </tr> + <tr> + <td> + <p>0x401A000C<br />STATUS_LOG_NO_RESTART</p> + </td> + <td> + <p>The log service encountered a log stream with no restart area.</p> + </td> + </tr> + <tr> + <td> + <p>0x401B00EC<br />STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST</p> + </td> + <td> + <p>{Display Driver Recovered From Failure} The %hs display driver has detected a failure and recovered from it. Some graphical operations may have failed. The next time you restart the machine, a dialog box appears, giving you an opportunity to upload data about this failure to Microsoft.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E000A<br />STATUS_GRAPHICS_PARTIAL_DATA_POPULATED</p> + </td> + <td> + <p>The specified buffer is not big enough to contain the entire requested dataset. Partial data is populated up to the size of the buffer.</p> + <p>The caller needs to provide a buffer of the size as specified in the partially populated buffer's content (interface specific).</p> + </td> + </tr> + <tr> + <td> + <p>0x401E0117<br />STATUS_GRAPHICS_DRIVER_MISMATCH</p> + </td> + <td> + <p>The kernel driver detected a version mismatch between it and the user mode driver.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E0307<br />STATUS_GRAPHICS_MODE_NOT_PINNED</p> + </td> + <td> + <p>No mode is pinned on the specified VidPN source/target.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E031E<br />STATUS_GRAPHICS_NO_PREFERRED_MODE</p> + </td> + <td> + <p>The specified mode set does not specify a preference for one of its modes.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E034B<br />STATUS_GRAPHICS_DATASET_IS_EMPTY</p> + </td> + <td> + <p>The specified dataset (for example, mode set, frequency range set, descriptor set, or topology) is empty.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E034C<br />STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET</p> + </td> + <td> + <p>The specified dataset (for example, mode set, frequency range set, descriptor set, or topology) does not contain any more elements.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E0351<br />STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED</p> + </td> + <td> + <p>The specified content transformation is not pinned on the specified VidPN present path.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E042F<br />STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS</p> + </td> + <td> + <p>The child device presence was not reliably detected.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E0437<br />STATUS_GRAPHICS_LEADLINK_START_DEFERRED</p> + </td> + <td> + <p>Starting the lead adapter in a linked configuration has been temporarily deferred.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E0439<br />STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY</p> + </td> + <td> + <p>The display adapter is being polled for children too frequently at the same polling level.</p> + </td> + </tr> + <tr> + <td> + <p>0x401E043A<br />STATUS_GRAPHICS_START_DEFERRED</p> + </td> + <td> + <p>Starting the adapter has been temporarily deferred.</p> + </td> + </tr> + <tr> + <td> + <p>0x40230001<br />STATUS_NDIS_INDICATION_REQUIRED</p> + </td> + <td> + <p>The request will be completed later by an NDIS status indication.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000001<br />STATUS_GUARD_PAGE_VIOLATION</p> + </td> + <td> + <p>{EXCEPTION} Guard Page Exception A page of memory that marks the end of a data structure, such as a stack or an array, has been accessed.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000002<br />STATUS_DATATYPE_MISALIGNMENT</p> + </td> + <td> + <p>{EXCEPTION} Alignment Fault A data type misalignment was detected in a load or store instruction.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000003<br />STATUS_BREAKPOINT</p> + </td> + <td> + <p>{EXCEPTION} Breakpoint A breakpoint has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000004<br />STATUS_SINGLE_STEP</p> + </td> + <td> + <p>{EXCEPTION} Single Step A single step or trace operation has just been completed.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000005<br />STATUS_BUFFER_OVERFLOW</p> + </td> + <td> + <p>{Buffer Overflow} The data was too large to fit into the specified buffer.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000006<br />STATUS_NO_MORE_FILES</p> + </td> + <td> + <p>{No More Files} No more files were found which match the file specification.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000007<br />STATUS_WAKE_SYSTEM_DEBUGGER</p> + </td> + <td> + <p>{Kernel Debugger Awakened} The system debugger was awakened by an interrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000A<br />STATUS_HANDLES_CLOSED</p> + </td> + <td> + <p>{Handles Closed} Handles to objects have been automatically closed because of the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000B<br />STATUS_NO_INHERITANCE</p> + </td> + <td> + <p>{Non-Inheritable ACL} An access control list (ACL) contains no components that can be inherited.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000C<br />STATUS_GUID_SUBSTITUTION_MADE</p> + </td> + <td> + <p>{GUID Substitution} During the translation of a globally unique identifier (GUID) to a Windows security ID (SID), no administratively defined GUID prefix was found. A substitute prefix was used, which will not compromise system security. However, this may provide a more restrictive access than intended.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000D<br />STATUS_PARTIAL_COPY</p> + </td> + <td> + <p>Because of protection conflicts, not all the requested bytes could be copied.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000E<br />STATUS_DEVICE_PAPER_EMPTY</p> + </td> + <td> + <p>{Out of Paper} The printer is out of paper.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000000F<br />STATUS_DEVICE_POWERED_OFF</p> + </td> + <td> + <p>{Device Power Is Off} The printer power has been turned off.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000010<br />STATUS_DEVICE_OFF_LINE</p> + </td> + <td> + <p>{Device Offline} The printer has been taken offline.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000011<br />STATUS_DEVICE_BUSY</p> + </td> + <td> + <p>{Device Busy} The device is currently busy.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000012<br />STATUS_NO_MORE_EAS</p> + </td> + <td> + <p>{No More EAs} No more extended attributes (EAs) were found for the file.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000013<br />STATUS_INVALID_EA_NAME</p> + </td> + <td> + <p>{Illegal EA} The specified extended attribute (EA) name contains at least one illegal character.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000014<br />STATUS_EA_LIST_INCONSISTENT</p> + </td> + <td> + <p>{Inconsistent EA List} The extended attribute (EA) list is inconsistent.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000015<br />STATUS_INVALID_EA_FLAG</p> + </td> + <td> + <p>{Invalid EA Flag} An invalid extended attribute (EA) flag was set.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000016<br />STATUS_VERIFY_REQUIRED</p> + </td> + <td> + <p>{Verifying Disk} The media has changed and a verify operation is in progress; therefore, no reads or writes may be performed to the device, except those that are used in the verify operation.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000017<br />STATUS_EXTRANEOUS_INFORMATION</p> + </td> + <td> + <p>{Too Much Information} The specified access control list (ACL) contained more information than was expected.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000018<br />STATUS_RXACT_COMMIT_NECESSARY</p> + </td> + <td> + <p>This warning level status indicates that the transaction state already exists for the registry subtree, but that a transaction commit was previously aborted. The commit has NOT been completed but has not been rolled back either; therefore, it may still be committed, if needed.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001A<br />STATUS_NO_MORE_ENTRIES</p> + </td> + <td> + <p>{No More Entries} No more entries are available from an enumeration operation.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001B<br />STATUS_FILEMARK_DETECTED</p> + </td> + <td> + <p>{Filemark Found} A filemark was detected.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001C<br />STATUS_MEDIA_CHANGED</p> + </td> + <td> + <p>{Media Changed} The media may have changed.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001D<br />STATUS_BUS_RESET</p> + </td> + <td> + <p>{I/O Bus Reset} An I/O bus reset was detected.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001E<br />STATUS_END_OF_MEDIA</p> + </td> + <td> + <p>{End of Media} The end of the media was encountered.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000001F<br />STATUS_BEGINNING_OF_MEDIA</p> + </td> + <td> + <p>The beginning of a tape or partition has been detected.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000020<br />STATUS_MEDIA_CHECK</p> + </td> + <td> + <p>{Media Changed} The media may have changed.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000021<br />STATUS_SETMARK_DETECTED</p> + </td> + <td> + <p>A tape access reached a set mark.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000022<br />STATUS_NO_DATA_DETECTED</p> + </td> + <td> + <p>During a tape access, the end of the data written is reached.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000023<br />STATUS_REDIRECTOR_HAS_OPEN_HANDLES</p> + </td> + <td> + <p>The redirector is in use and cannot be unloaded.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000024<br />STATUS_SERVER_HAS_OPEN_HANDLES</p> + </td> + <td> + <p>The server is in use and cannot be unloaded.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000025<br />STATUS_ALREADY_DISCONNECTED</p> + </td> + <td> + <p>The specified connection has already been disconnected.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000026<br />STATUS_LONGJUMP</p> + </td> + <td> + <p>A long jump has been executed.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000027<br />STATUS_CLEANER_CARTRIDGE_INSTALLED</p> + </td> + <td> + <p>A cleaner cartridge is present in the tape library.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000028<br />STATUS_PLUGPLAY_QUERY_VETOED</p> + </td> + <td> + <p>The Plug and Play query operation was not successful.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000029<br />STATUS_UNWIND_CONSOLIDATE</p> + </td> + <td> + <p>A frame consolidation has been executed.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000002A<br />STATUS_REGISTRY_HIVE_RECOVERED</p> + </td> + <td> + <p>{Registry Hive Recovered} The registry hive (file): %hs was corrupted and it has been recovered. Some data might have been lost.</p> + </td> + </tr> + <tr> + <td> + <p>0x8000002B<br />STATUS_DLL_MIGHT_BE_INSECURE</p> + </td> + <td> + <p>The application is attempting to run executable code from the module %hs. This may be insecure. An alternative, %hs, is available. Should the application use the secure module %hs?</p> + </td> + </tr> + <tr> + <td> + <p>0x8000002C<br />STATUS_DLL_MIGHT_BE_INCOMPATIBLE</p> + </td> + <td> + <p>The application is loading executable code from the module %hs. This is secure but may be incompatible with previous releases of the operating system. An alternative, %hs, is available. Should the application use the secure module %hs?</p> + </td> + </tr> + <tr> + <td> + <p>0x8000002D<br />STATUS_STOPPED_ON_SYMLINK</p> + </td> + <td> + <p>The create operation stopped after reaching a symbolic link.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000288<br />STATUS_DEVICE_REQUIRES_CLEANING</p> + </td> + <td> + <p>The device has indicated that cleaning is necessary.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000289<br />STATUS_DEVICE_DOOR_OPEN</p> + </td> + <td> + <p>The device has indicated that its door is open. Further operations require it closed and secured.</p> + </td> + </tr> + <tr> + <td> + <p>0x80000803<br />STATUS_DATA_LOST_REPAIR</p> + </td> + <td> + <p> + Windows discovered a corruption in the file %hs. This file has now been repaired. Check if any data in the file was lost because of the corruption.</p> + </td> + </tr> + <tr> + <td> + <p>0x80010001<br />DBG_EXCEPTION_NOT_HANDLED</p> + </td> + <td> + <p>Debugger did not handle the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0x80130001<br />STATUS_CLUSTER_NODE_ALREADY_UP</p> + </td> + <td> + <p>The cluster node is already up.</p> + </td> + </tr> + <tr> + <td> + <p>0x80130002<br />STATUS_CLUSTER_NODE_ALREADY_DOWN</p> + </td> + <td> + <p>The cluster node is already down.</p> + </td> + </tr> + <tr> + <td> + <p>0x80130003<br />STATUS_CLUSTER_NETWORK_ALREADY_ONLINE</p> + </td> + <td> + <p>The cluster network is already online.</p> + </td> + </tr> + <tr> + <td> + <p>0x80130004<br />STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE</p> + </td> + <td> + <p>The cluster network is already offline.</p> + </td> + </tr> + <tr> + <td> + <p>0x80130005<br />STATUS_CLUSTER_NODE_ALREADY_MEMBER</p> + </td> + <td> + <p>The cluster node is already a member of the cluster.</p> + </td> + </tr> + <tr> + <td> + <p>0x80190009<br />STATUS_COULD_NOT_RESIZE_LOG</p> + </td> + <td> + <p>The log could not be set to the requested size.</p> + </td> + </tr> + <tr> + <td> + <p>0x80190029<br />STATUS_NO_TXF_METADATA</p> + </td> + <td> + <p>There is no transaction metadata on the file.</p> + </td> + </tr> + <tr> + <td> + <p>0x80190031<br />STATUS_CANT_RECOVER_WITH_HANDLE_OPEN</p> + </td> + <td> + <p>The file cannot be recovered because there is a handle still open on it.</p> + </td> + </tr> + <tr> + <td> + <p>0x80190041<br />STATUS_TXF_METADATA_ALREADY_PRESENT</p> + </td> + <td> + <p>Transaction metadata is already present on this file and cannot be superseded.</p> + </td> + </tr> + <tr> + <td> + <p>0x80190042<br />STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET</p> + </td> + <td> + <p>A transaction scope could not be entered because the scope handler has not been initialized.</p> + </td> + </tr> + <tr> + <td> + <p>0x801B00EB<br />STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED</p> + </td> + <td> + <p>{Display Driver Stopped Responding and recovered} The %hs display driver has stopped working normally. The recovery had been performed.</p> + </td> + </tr> + <tr> + <td> + <p>0x801C0001<br />STATUS_FLT_BUFFER_TOO_SMALL</p> + </td> + <td> + <p>{Buffer too small} The buffer is too small to contain the entry. No information has been written to the buffer.</p> + </td> + </tr> + <tr> + <td> + <p>0x80210001<br />STATUS_FVE_PARTIAL_METADATA</p> + </td> + <td> + <p>Volume metadata read or write is incomplete.</p> + </td> + </tr> + <tr> + <td> + <p>0x80210002<br />STATUS_FVE_TRANSIENT_STATE</p> + </td> + <td> + <p>BitLocker encryption keys were ignored because the volume was in a transient state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000001<br />STATUS_UNSUCCESSFUL</p> + </td> + <td> + <p>{Operation Failed} The requested operation was unsuccessful.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000002<br />STATUS_NOT_IMPLEMENTED</p> + </td> + <td> + <p>{Not Implemented} The requested operation is not implemented.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000003<br />STATUS_INVALID_INFO_CLASS</p> + </td> + <td> + <p>{Invalid Parameter} The specified information class is not a valid information class for the specified object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000004<br />STATUS_INFO_LENGTH_MISMATCH</p> + </td> + <td> + <p>The specified information record length does not match the length that is required for the specified information class.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000005<br />STATUS_ACCESS_VIOLATION</p> + </td> + <td> + <p>The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000006<br />STATUS_IN_PAGE_ERROR</p> + </td> + <td> + <p>The instruction at 0x%08lx referenced memory at 0x%08lx. The required data was not placed into memory because of an I/O error status of 0x%08lx.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000007<br />STATUS_PAGEFILE_QUOTA</p> + </td> + <td> + <p>The page file quota for the process has been exhausted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000008<br />STATUS_INVALID_HANDLE</p> + </td> + <td> + <p>An invalid HANDLE was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000009<br />STATUS_BAD_INITIAL_STACK</p> + </td> + <td> + <p>An invalid initial stack was specified in a call to NtCreateThread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000A<br />STATUS_BAD_INITIAL_PC</p> + </td> + <td> + <p>An invalid initial start address was specified in a call to NtCreateThread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000B<br />STATUS_INVALID_CID</p> + </td> + <td> + <p>An invalid client ID was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000C<br />STATUS_TIMER_NOT_CANCELED</p> + </td> + <td> + <p>An attempt was made to cancel or set a timer that has an associated APC and the specified thread is not the thread that originally set the timer with an associated APC routine.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000D<br />STATUS_INVALID_PARAMETER</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000E<br />STATUS_NO_SUCH_DEVICE</p> + </td> + <td> + <p>A device that does not exist was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000000F<br />STATUS_NO_SUCH_FILE</p> + </td> + <td> + <p>{File Not Found} The file %hs does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000010<br />STATUS_INVALID_DEVICE_REQUEST</p> + </td> + <td> + <p>The specified request is not a valid operation for the target device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000011<br />STATUS_END_OF_FILE</p> + </td> + <td> + <p>The end-of-file marker has been reached. There is no valid data in the file beyond this marker.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000012<br />STATUS_WRONG_VOLUME</p> + </td> + <td> + <p>{Wrong Volume} The wrong volume is in the drive. Insert volume %hs into drive %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000013<br />STATUS_NO_MEDIA_IN_DEVICE</p> + </td> + <td> + <p>{No Disk} There is no disk in the drive. Insert a disk into drive %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000014<br />STATUS_UNRECOGNIZED_MEDIA</p> + </td> + <td> + <p>{Unknown Disk Format} The disk in drive %hs is not formatted properly. Check the disk, and reformat it, if needed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000015<br />STATUS_NONEXISTENT_SECTOR</p> + </td> + <td> + <p>{Sector Not Found} The specified sector does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000016<br />STATUS_MORE_PROCESSING_REQUIRED</p> + </td> + <td> + <p>{Still Busy} The specified I/O request packet (IRP) cannot be disposed of because the I/O operation is not complete.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000017<br />STATUS_NO_MEMORY</p> + </td> + <td> + <p>{Not Enough Quota} Not enough virtual memory or paging file quota is available to complete the specified operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000018<br />STATUS_CONFLICTING_ADDRESSES</p> + </td> + <td> + <p>{Conflicting Address Range} The specified address range conflicts with the address space.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000019<br />STATUS_NOT_MAPPED_VIEW</p> + </td> + <td> + <p>The address range to unmap is not a mapped view.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001A<br />STATUS_UNABLE_TO_FREE_VM</p> + </td> + <td> + <p>The virtual memory cannot be freed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001B<br />STATUS_UNABLE_TO_DELETE_SECTION</p> + </td> + <td> + <p>The specified section cannot be deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001C<br />STATUS_INVALID_SYSTEM_SERVICE</p> + </td> + <td> + <p>An invalid system service was specified in a system service call.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001D<br />STATUS_ILLEGAL_INSTRUCTION</p> + </td> + <td> + <p>{EXCEPTION} Illegal Instruction An attempt was made to execute an illegal instruction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001E<br />STATUS_INVALID_LOCK_SEQUENCE</p> + </td> + <td> + <p>{Invalid Lock Sequence} An attempt was made to execute an invalid lock sequence.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000001F<br />STATUS_INVALID_VIEW_SIZE</p> + </td> + <td> + <p>{Invalid Mapping} An attempt was made to create a view for a section that is bigger than the section.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000020<br />STATUS_INVALID_FILE_FOR_SECTION</p> + </td> + <td> + <p>{Bad File} The attributes of the specified mapping file for a section of memory cannot be read.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000021<br />STATUS_ALREADY_COMMITTED</p> + </td> + <td> + <p>{Already Committed} The specified address range is already committed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000022<br />STATUS_ACCESS_DENIED</p> + </td> + <td> + <p>{Access Denied} A process has requested access to an object but has not been granted those access rights.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000023<br />STATUS_BUFFER_TOO_SMALL</p> + </td> + <td> + <p>{Buffer Too Small} The buffer is too small to contain the entry. No information has been written to the buffer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000024<br />STATUS_OBJECT_TYPE_MISMATCH</p> + </td> + <td> + <p>{Wrong Type} There is a mismatch between the type of object that is required by the requested operation and the type of object that is specified in the request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000025<br />STATUS_NONCONTINUABLE_EXCEPTION</p> + </td> + <td> + <p>{EXCEPTION} Cannot Continue Windows cannot continue from this exception.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000026<br />STATUS_INVALID_DISPOSITION</p> + </td> + <td> + <p>An invalid exception disposition was returned by an exception handler.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000027<br />STATUS_UNWIND</p> + </td> + <td> + <p>Unwind exception code.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000028<br />STATUS_BAD_STACK</p> + </td> + <td> + <p>An invalid or unaligned stack was encountered during an unwind operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000029<br />STATUS_INVALID_UNWIND_TARGET</p> + </td> + <td> + <p>An invalid unwind target was encountered during an unwind operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002A<br />STATUS_NOT_LOCKED</p> + </td> + <td> + <p>An attempt was made to unlock a page of memory that was not locked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002B<br />STATUS_PARITY_ERROR</p> + </td> + <td> + <p>A device parity error on an I/O operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002C<br />STATUS_UNABLE_TO_DECOMMIT_VM</p> + </td> + <td> + <p>An attempt was made to decommit uncommitted virtual memory.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002D<br />STATUS_NOT_COMMITTED</p> + </td> + <td> + <p>An attempt was made to change the attributes on memory that has not been committed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002E<br />STATUS_INVALID_PORT_ATTRIBUTES</p> + </td> + <td> + <p>Invalid object attributes specified to NtCreatePort or invalid port attributes specified to NtConnectPort.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000002F<br />STATUS_PORT_MESSAGE_TOO_LONG</p> + </td> + <td> + <p>The length of the message that was passed to NtRequestPort or NtRequestWaitReplyPort is longer than the maximum message that is allowed by the port.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000030<br />STATUS_INVALID_PARAMETER_MIX</p> + </td> + <td> + <p>An invalid combination of parameters was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000031<br />STATUS_INVALID_QUOTA_LOWER</p> + </td> + <td> + <p>An attempt was made to lower a quota limit below the current usage.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000032<br />STATUS_DISK_CORRUPT_ERROR</p> + </td> + <td> + <p>{Corrupt Disk} The file system structure on the disk is corrupt and unusable. Run the Chkdsk utility on the volume %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000033<br />STATUS_OBJECT_NAME_INVALID</p> + </td> + <td> + <p>The object name is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000034<br />STATUS_OBJECT_NAME_NOT_FOUND</p> + </td> + <td> + <p>The object name is not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000035<br />STATUS_OBJECT_NAME_COLLISION</p> + </td> + <td> + <p>The object name already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000037<br />STATUS_PORT_DISCONNECTED</p> + </td> + <td> + <p>An attempt was made to send a message to a disconnected communication port.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000038<br />STATUS_DEVICE_ALREADY_ATTACHED</p> + </td> + <td> + <p>An attempt was made to attach to a device that was already attached to another device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000039<br />STATUS_OBJECT_PATH_INVALID</p> + </td> + <td> + <p>The object path component was not a directory object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003A<br />STATUS_OBJECT_PATH_NOT_FOUND</p> + </td> + <td> + <p>{Path Not Found} The path %hs does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003B<br />STATUS_OBJECT_PATH_SYNTAX_BAD</p> + </td> + <td> + <p>The object path component was not a directory object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003C<br />STATUS_DATA_OVERRUN</p> + </td> + <td> + <p>{Data Overrun} A data overrun error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003D<br />STATUS_DATA_LATE_ERROR</p> + </td> + <td> + <p>{Data Late} A data late error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003E<br />STATUS_DATA_ERROR</p> + </td> + <td> + <p>{Data Error} An error occurred in reading or writing data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000003F<br />STATUS_CRC_ERROR</p> + </td> + <td> + <p>{Bad CRC} A cyclic redundancy check (CRC) checksum error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000040<br />STATUS_SECTION_TOO_BIG</p> + </td> + <td> + <p>{Section Too Large} The specified section is too big to map the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000041<br />STATUS_PORT_CONNECTION_REFUSED</p> + </td> + <td> + <p>The NtConnectPort request is refused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000042<br />STATUS_INVALID_PORT_HANDLE</p> + </td> + <td> + <p>The type of port handle is invalid for the operation that is requested.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000043<br />STATUS_SHARING_VIOLATION</p> + </td> + <td> + <p>A file cannot be opened because the share access flags are incompatible.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000044<br />STATUS_QUOTA_EXCEEDED</p> + </td> + <td> + <p>Insufficient quota exists to complete the operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000045<br />STATUS_INVALID_PAGE_PROTECTION</p> + </td> + <td> + <p>The specified page protection was not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000046<br />STATUS_MUTANT_NOT_OWNED</p> + </td> + <td> + <p>An attempt to release a mutant object was made by a thread that was not the owner of the mutant object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000047<br />STATUS_SEMAPHORE_LIMIT_EXCEEDED</p> + </td> + <td> + <p>An attempt was made to release a semaphore such that its maximum count would have been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000048<br />STATUS_PORT_ALREADY_SET</p> + </td> + <td> + <p>An attempt was made to set the DebugPort or ExceptionPort of a process, but a port already exists in the process, or an attempt was made to set the CompletionPort of a file but a port was already set in the file, or an attempt was made to set the associated completion port of an ALPC port but it is already set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000049<br />STATUS_SECTION_NOT_IMAGE</p> + </td> + <td> + <p>An attempt was made to query image information on a section that does not map an image.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004A<br />STATUS_SUSPEND_COUNT_EXCEEDED</p> + </td> + <td> + <p>An attempt was made to suspend a thread whose suspend count was at its maximum.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004B<br />STATUS_THREAD_IS_TERMINATING</p> + </td> + <td> + <p>An attempt was made to suspend a thread that has begun termination.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004C<br />STATUS_BAD_WORKING_SET_LIMIT</p> + </td> + <td> + <p>An attempt was made to set the working set limit to an invalid value (for example, the minimum greater than maximum).</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004D<br />STATUS_INCOMPATIBLE_FILE_MAP</p> + </td> + <td> + <p>A section was created to map a file that is not compatible with an already existing section that maps the same file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004E<br />STATUS_SECTION_PROTECTION</p> + </td> + <td> + <p>A view to a section specifies a protection that is incompatible with the protection of the initial view.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000004F<br />STATUS_EAS_NOT_SUPPORTED</p> + </td> + <td> + <p>An operation involving EAs failed because the file system does not support EAs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000050<br />STATUS_EA_TOO_LARGE</p> + </td> + <td> + <p>An EA operation failed because the EA set is too large.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000051<br />STATUS_NONEXISTENT_EA_ENTRY</p> + </td> + <td> + <p>An EA operation failed because the name or EA index is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000052<br />STATUS_NO_EAS_ON_FILE</p> + </td> + <td> + <p>The file for which EAs were requested has no EAs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000053<br />STATUS_EA_CORRUPT_ERROR</p> + </td> + <td> + <p>The EA is corrupt and cannot be read.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000054<br />STATUS_FILE_LOCK_CONFLICT</p> + </td> + <td> + <p>A requested read/write cannot be granted due to a conflicting file lock.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000055<br />STATUS_LOCK_NOT_GRANTED</p> + </td> + <td> + <p>A requested file lock cannot be granted due to other existing locks.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000056<br />STATUS_DELETE_PENDING</p> + </td> + <td> + <p>A non-close operation has been requested of a file object that has a delete pending.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000057<br />STATUS_CTL_FILE_NOT_SUPPORTED</p> + </td> + <td> + <p>An attempt was made to set the control attribute on a file. This attribute is not supported in the destination file system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000058<br />STATUS_UNKNOWN_REVISION</p> + </td> + <td> + <p>Indicates a revision number that was encountered or specified is not one that is known by the service. It may be a more recent revision than the service is aware of.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000059<br />STATUS_REVISION_MISMATCH</p> + </td> + <td> + <p>Indicates that two revision levels are incompatible.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005A<br />STATUS_INVALID_OWNER</p> + </td> + <td> + <p>Indicates a particular security ID may not be assigned as the owner of an object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005B<br />STATUS_INVALID_PRIMARY_GROUP</p> + </td> + <td> + <p>Indicates a particular security ID may not be assigned as the primary group of an object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005C<br />STATUS_NO_IMPERSONATION_TOKEN</p> + </td> + <td> + <p>An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005D<br />STATUS_CANT_DISABLE_MANDATORY</p> + </td> + <td> + <p>A mandatory group may not be disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005E<br />STATUS_NO_LOGON_SERVERS</p> + </td> + <td> + <p>No logon servers are currently available to service the logon request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000005F<br />STATUS_NO_SUCH_LOGON_SESSION</p> + </td> + <td> + <p>A specified logon session does not exist. It may already have been terminated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000060<br />STATUS_NO_SUCH_PRIVILEGE</p> + </td> + <td> + <p>A specified privilege does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000061<br />STATUS_PRIVILEGE_NOT_HELD</p> + </td> + <td> + <p>A required privilege is not held by the client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000062<br />STATUS_INVALID_ACCOUNT_NAME</p> + </td> + <td> + <p>The name provided is not a properly formed account name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000063<br />STATUS_USER_EXISTS</p> + </td> + <td> + <p>The specified account already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000064<br />STATUS_NO_SUCH_USER</p> + </td> + <td> + <p>The specified account does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000065<br />STATUS_GROUP_EXISTS</p> + </td> + <td> + <p>The specified group already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000066<br />STATUS_NO_SUCH_GROUP</p> + </td> + <td> + <p>The specified group does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000067<br />STATUS_MEMBER_IN_GROUP</p> + </td> + <td> + <p>The specified user account is already in the specified group account. Also used to indicate a group cannot be deleted because it contains a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000068<br />STATUS_MEMBER_NOT_IN_GROUP</p> + </td> + <td> + <p>The specified user account is not a member of the specified group account.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000069<br />STATUS_LAST_ADMIN</p> + </td> + <td> + <p>Indicates the requested operation would disable or delete the last remaining administration account. This is not allowed to prevent creating a situation in which the system cannot be administrated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006A<br />STATUS_WRONG_PASSWORD</p> + </td> + <td> + <p>When trying to update a password, this return status indicates that the value provided as the current password is not correct.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006B<br />STATUS_ILL_FORMED_PASSWORD</p> + </td> + <td> + <p>When trying to update a password, this return status indicates that the value provided for the new password contains values that are not allowed in passwords.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006C<br />STATUS_PASSWORD_RESTRICTION</p> + </td> + <td> + <p>When trying to update a password, this status indicates that some password update rule has been violated. For example, the password may not meet length criteria.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006D<br />STATUS_LOGON_FAILURE</p> + </td> + <td> + <p>The attempted logon is invalid. This is either due to a bad username or authentication information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006E<br />STATUS_ACCOUNT_RESTRICTION</p> + </td> + <td> + <p>Indicates a referenced user name and authentication information are valid, but some user account restriction has prevented successful authentication (such as time-of-day restrictions).</p> + </td> + </tr> + <tr> + <td> + <p>0xC000006F<br />STATUS_INVALID_LOGON_HOURS</p> + </td> + <td> + <p>The user account has time restrictions and may not be logged onto at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000070<br />STATUS_INVALID_WORKSTATION</p> + </td> + <td> + <p>The user account is restricted so that it may not be used to log on from the source workstation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000071<br />STATUS_PASSWORD_EXPIRED</p> + </td> + <td> + <p>The user account password has expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000072<br />STATUS_ACCOUNT_DISABLED</p> + </td> + <td> + <p>The referenced account is currently disabled and may not be logged on to.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000073<br />STATUS_NONE_MAPPED</p> + </td> + <td> + <p>None of the information to be translated has been translated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000074<br />STATUS_TOO_MANY_LUIDS_REQUESTED</p> + </td> + <td> + <p>The number of LUIDs requested may not be allocated with a single allocation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000075<br />STATUS_LUIDS_EXHAUSTED</p> + </td> + <td> + <p>Indicates there are no more LUIDs to allocate.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000076<br />STATUS_INVALID_SUB_AUTHORITY</p> + </td> + <td> + <p>Indicates the sub-authority value is invalid for the particular use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000077<br />STATUS_INVALID_ACL</p> + </td> + <td> + <p>Indicates the ACL structure is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000078<br />STATUS_INVALID_SID</p> + </td> + <td> + <p>Indicates the SID structure is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000079<br />STATUS_INVALID_SECURITY_DESCR</p> + </td> + <td> + <p>Indicates the SECURITY_DESCRIPTOR structure is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007A<br />STATUS_PROCEDURE_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified procedure address cannot be found in the DLL.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007B<br />STATUS_INVALID_IMAGE_FORMAT</p> + </td> + <td> + <p>{Bad Image} %hs is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007C<br />STATUS_NO_TOKEN</p> + </td> + <td> + <p>An attempt was made to reference a token that does not exist. This is typically done by referencing the token that is associated with a thread when the thread is not impersonating a client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007D<br />STATUS_BAD_INHERITANCE_ACL</p> + </td> + <td> + <p>Indicates that an attempt to build either an inherited ACL or ACE was not successful. This can be caused by a number of things. One of the more probable causes is the replacement of a CreatorId with a SID that did not fit into the ACE or ACL.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007E<br />STATUS_RANGE_NOT_LOCKED</p> + </td> + <td> + <p>The range specified in NtUnlockFile was not locked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000007F<br />STATUS_DISK_FULL</p> + </td> + <td> + <p>An operation failed because the disk was full.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000080<br />STATUS_SERVER_DISABLED</p> + </td> + <td> + <p>The GUID allocation server is disabled at the moment.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000081<br />STATUS_SERVER_NOT_DISABLED</p> + </td> + <td> + <p>The GUID allocation server is enabled at the moment.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000082<br />STATUS_TOO_MANY_GUIDS_REQUESTED</p> + </td> + <td> + <p>Too many GUIDs were requested from the allocation server at once.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000083<br />STATUS_GUIDS_EXHAUSTED</p> + </td> + <td> + <p>The GUIDs could not be allocated because the Authority Agent was exhausted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000084<br />STATUS_INVALID_ID_AUTHORITY</p> + </td> + <td> + <p>The value provided was an invalid value for an identifier authority.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000085<br />STATUS_AGENTS_EXHAUSTED</p> + </td> + <td> + <p>No more authority agent values are available for the particular identifier authority value.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000086<br />STATUS_INVALID_VOLUME_LABEL</p> + </td> + <td> + <p>An invalid volume label has been specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000087<br />STATUS_SECTION_NOT_EXTENDED</p> + </td> + <td> + <p>A mapped section could not be extended.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000088<br />STATUS_NOT_MAPPED_DATA</p> + </td> + <td> + <p>Specified section to flush does not map a data file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000089<br />STATUS_RESOURCE_DATA_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified image file did not contain a resource section.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008A<br />STATUS_RESOURCE_TYPE_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified resource type cannot be found in the image file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008B<br />STATUS_RESOURCE_NAME_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified resource name cannot be found in the image file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008C<br />STATUS_ARRAY_BOUNDS_EXCEEDED</p> + </td> + <td> + <p>{EXCEPTION} Array bounds exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008D<br />STATUS_FLOAT_DENORMAL_OPERAND</p> + </td> + <td> + <p>{EXCEPTION} Floating-point denormal operand.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008E<br />STATUS_FLOAT_DIVIDE_BY_ZERO</p> + </td> + <td> + <p>{EXCEPTION} Floating-point division by zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000008F<br />STATUS_FLOAT_INEXACT_RESULT</p> + </td> + <td> + <p>{EXCEPTION} Floating-point inexact result.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000090<br />STATUS_FLOAT_INVALID_OPERATION</p> + </td> + <td> + <p>{EXCEPTION} Floating-point invalid operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000091<br />STATUS_FLOAT_OVERFLOW</p> + </td> + <td> + <p>{EXCEPTION} Floating-point overflow.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000092<br />STATUS_FLOAT_STACK_CHECK</p> + </td> + <td> + <p>{EXCEPTION} Floating-point stack check.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000093<br />STATUS_FLOAT_UNDERFLOW</p> + </td> + <td> + <p>{EXCEPTION} Floating-point underflow.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000094<br />STATUS_INTEGER_DIVIDE_BY_ZERO</p> + </td> + <td> + <p>{EXCEPTION} Integer division by zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000095<br />STATUS_INTEGER_OVERFLOW</p> + </td> + <td> + <p>{EXCEPTION} Integer overflow.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000096<br />STATUS_PRIVILEGED_INSTRUCTION</p> + </td> + <td> + <p>{EXCEPTION} Privileged instruction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000097<br />STATUS_TOO_MANY_PAGING_FILES</p> + </td> + <td> + <p>An attempt was made to install more paging files than the system supports.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000098<br />STATUS_FILE_INVALID</p> + </td> + <td> + <p>The volume for a file has been externally altered such that the opened file is no longer valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000099<br />STATUS_ALLOTTED_SPACE_EXCEEDED</p> + </td> + <td> + <p>When a block of memory is allotted for future updates, such as the memory allocated to hold discretionary access control and primary group information, successive updates may exceed the amount of memory originally allotted. Because a quota may already have been charged to several processes that have handles to the object, it is not reasonable to alter the size of the allocated memory. Instead, a request that requires more memory than has been allotted must fail and the STATUS_ALLOTTED_SPACE_EXCEEDED error returned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000009A<br />STATUS_INSUFFICIENT_RESOURCES</p> + </td> + <td> + <p>Insufficient system resources exist to complete the API.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000009B<br />STATUS_DFS_EXIT_PATH_FOUND</p> + </td> + <td> + <p>An attempt has been made to open a DFS exit path control file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000009C<br />STATUS_DEVICE_DATA_ERROR</p> + </td> + <td> + <p>There are bad blocks (sectors) on the hard disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000009D<br />STATUS_DEVICE_NOT_CONNECTED</p> + </td> + <td> + <p>There is bad cabling, non-termination, or the controller is not able to obtain access to the hard disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000009F<br />STATUS_FREE_VM_NOT_AT_BASE</p> + </td> + <td> + <p>Virtual memory cannot be freed because the base address is not the base of the region and a region size of zero was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A0<br />STATUS_MEMORY_NOT_ALLOCATED</p> + </td> + <td> + <p>An attempt was made to free virtual memory that is not allocated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A1<br />STATUS_WORKING_SET_QUOTA</p> + </td> + <td> + <p>The working set is not big enough to allow the requested pages to be locked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A2<br />STATUS_MEDIA_WRITE_PROTECTED</p> + </td> + <td> + <p>{Write Protect Error} The disk cannot be written to because it is write-protected. Remove the write protection from the volume %hs in drive %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A3<br />STATUS_DEVICE_NOT_READY</p> + </td> + <td> + <p>{Drive Not Ready} The drive is not ready for use; its door may be open. Check drive %hs and make sure that a disk is inserted and that the drive door is closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A4<br />STATUS_INVALID_GROUP_ATTRIBUTES</p> + </td> + <td> + <p>The specified attributes are invalid or are incompatible with the attributes for the group as a whole.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A5<br />STATUS_BAD_IMPERSONATION_LEVEL</p> + </td> + <td> + <p>A specified impersonation level is invalid. Also used to indicate that a required impersonation level was not provided.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A6<br />STATUS_CANT_OPEN_ANONYMOUS</p> + </td> + <td> + <p>An attempt was made to open an anonymous-level token. Anonymous tokens may not be opened.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A7<br />STATUS_BAD_VALIDATION_CLASS</p> + </td> + <td> + <p>The validation information class requested was invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A8<br />STATUS_BAD_TOKEN_TYPE</p> + </td> + <td> + <p>The type of a token object is inappropriate for its attempted use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000A9<br />STATUS_BAD_MASTER_BOOT_RECORD</p> + </td> + <td> + <p>The type of a token object is inappropriate for its attempted use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AA<br />STATUS_INSTRUCTION_MISALIGNMENT</p> + </td> + <td> + <p>An attempt was made to execute an instruction at an unaligned address and the host system does not support unaligned instruction references.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AB<br />STATUS_INSTANCE_NOT_AVAILABLE</p> + </td> + <td> + <p>The maximum named pipe instance count has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AC<br />STATUS_PIPE_NOT_AVAILABLE</p> + </td> + <td> + <p>An instance of a named pipe cannot be found in the listening state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AD<br />STATUS_INVALID_PIPE_STATE</p> + </td> + <td> + <p>The named pipe is not in the connected or closing state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AE<br />STATUS_PIPE_BUSY</p> + </td> + <td> + <p>The specified pipe is set to complete operations and there are current I/O operations queued so that it cannot be changed to queue operations.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000AF<br />STATUS_ILLEGAL_FUNCTION</p> + </td> + <td> + <p>The specified handle is not open to the server end of the named pipe.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B0<br />STATUS_PIPE_DISCONNECTED</p> + </td> + <td> + <p>The specified named pipe is in the disconnected state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B1<br />STATUS_PIPE_CLOSING</p> + </td> + <td> + <p>The specified named pipe is in the closing state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B2<br />STATUS_PIPE_CONNECTED</p> + </td> + <td> + <p>The specified named pipe is in the connected state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B3<br />STATUS_PIPE_LISTENING</p> + </td> + <td> + <p>The specified named pipe is in the listening state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B4<br />STATUS_INVALID_READ_MODE</p> + </td> + <td> + <p>The specified named pipe is not in message mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B5<br />STATUS_IO_TIMEOUT</p> + </td> + <td> + <p>{Device Timeout} The specified I/O operation on %hs was not completed before the time-out period expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B6<br />STATUS_FILE_FORCED_CLOSED</p> + </td> + <td> + <p>The specified file has been closed by another process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B7<br />STATUS_PROFILING_NOT_STARTED</p> + </td> + <td> + <p>Profiling is not started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B8<br />STATUS_PROFILING_NOT_STOPPED</p> + </td> + <td> + <p>Profiling is not stopped.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000B9<br />STATUS_COULD_NOT_INTERPRET</p> + </td> + <td> + <p>The passed ACL did not contain the minimum required information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BA<br />STATUS_FILE_IS_A_DIRECTORY</p> + </td> + <td> + <p>The file that was specified as a target is a directory, and the caller specified that it could be anything but a directory.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BB<br />STATUS_NOT_SUPPORTED</p> + </td> + <td> + <p>The request is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BC<br />STATUS_REMOTE_NOT_LISTENING</p> + </td> + <td> + <p>This remote computer is not listening.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BD<br />STATUS_DUPLICATE_NAME</p> + </td> + <td> + <p>A duplicate name exists on the network.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BE<br />STATUS_BAD_NETWORK_PATH</p> + </td> + <td> + <p>The network path cannot be located.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000BF<br />STATUS_NETWORK_BUSY</p> + </td> + <td> + <p>The network is busy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C0<br />STATUS_DEVICE_DOES_NOT_EXIST</p> + </td> + <td> + <p>This device does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C1<br />STATUS_TOO_MANY_COMMANDS</p> + </td> + <td> + <p>The network BIOS command limit has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C2<br />STATUS_ADAPTER_HARDWARE_ERROR</p> + </td> + <td> + <p>An I/O adapter hardware error has occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C3<br />STATUS_INVALID_NETWORK_RESPONSE</p> + </td> + <td> + <p>The network responded incorrectly.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C4<br />STATUS_UNEXPECTED_NETWORK_ERROR</p> + </td> + <td> + <p>An unexpected network error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C5<br />STATUS_BAD_REMOTE_ADAPTER</p> + </td> + <td> + <p>The remote adapter is not compatible.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C6<br />STATUS_PRINT_QUEUE_FULL</p> + </td> + <td> + <p>The print queue is full.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C7<br />STATUS_NO_SPOOL_SPACE</p> + </td> + <td> + <p>Space to store the file that is waiting to be printed is not available on the server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C8<br />STATUS_PRINT_CANCELLED</p> + </td> + <td> + <p>The requested print file has been canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000C9<br />STATUS_NETWORK_NAME_DELETED</p> + </td> + <td> + <p>The network name was deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CA<br />STATUS_NETWORK_ACCESS_DENIED</p> + </td> + <td> + <p>Network access is denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CB<br />STATUS_BAD_DEVICE_TYPE</p> + </td> + <td> + <p>{Incorrect Network Resource Type} The specified device type (LPT, for example) conflicts with the actual device type on the remote resource.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CC<br />STATUS_BAD_NETWORK_NAME</p> + </td> + <td> + <p>{Network Name Not Found} The specified share name cannot be found on the remote server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CD<br />STATUS_TOO_MANY_NAMES</p> + </td> + <td> + <p>The name limit for the network adapter card of the local computer was exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CE<br />STATUS_TOO_MANY_SESSIONS</p> + </td> + <td> + <p>The network BIOS session limit was exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000CF<br />STATUS_SHARING_PAUSED</p> + </td> + <td> + <p>File sharing has been temporarily paused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D0<br />STATUS_REQUEST_NOT_ACCEPTED</p> + </td> + <td> + <p>No more connections can be made to this remote computer at this time because the computer has already accepted the maximum number of connections.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D1<br />STATUS_REDIRECTOR_PAUSED</p> + </td> + <td> + <p>Print or disk redirection is temporarily paused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D2<br />STATUS_NET_WRITE_FAULT</p> + </td> + <td> + <p>A network data fault occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D3<br />STATUS_PROFILING_AT_LIMIT</p> + </td> + <td> + <p>The number of active profiling objects is at the maximum and no more may be started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D4<br />STATUS_NOT_SAME_DEVICE</p> + </td> + <td> + <p>{Incorrect Volume} The destination file of a rename request is located on a different device than the source of the rename request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D5<br />STATUS_FILE_RENAMED</p> + </td> + <td> + <p>The specified file has been renamed and thus cannot be modified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D6<br />STATUS_VIRTUAL_CIRCUIT_CLOSED</p> + </td> + <td> + <p>{Network Request Timeout} The session with a remote server has been disconnected because the time-out interval for a request has expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D7<br />STATUS_NO_SECURITY_ON_OBJECT</p> + </td> + <td> + <p>Indicates an attempt was made to operate on the security of an object that does not have security associated with it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D8<br />STATUS_CANT_WAIT</p> + </td> + <td> + <p>Used to indicate that an operation cannot continue without blocking for I/O.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000D9<br />STATUS_PIPE_EMPTY</p> + </td> + <td> + <p>Used to indicate that a read operation was done on an empty pipe.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DA<br />STATUS_CANT_ACCESS_DOMAIN_INFO</p> + </td> + <td> + <p>Configuration information could not be read from the domain controller, either because the machine is unavailable or access has been denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DB<br />STATUS_CANT_TERMINATE_SELF</p> + </td> + <td> + <p>Indicates that a thread attempted to terminate itself by default (called NtTerminateThread with NULL) and it was the last thread in the current process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DC<br />STATUS_INVALID_SERVER_STATE</p> + </td> + <td> + <p>Indicates the Sam Server was in the wrong state to perform the desired operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DD<br />STATUS_INVALID_DOMAIN_STATE</p> + </td> + <td> + <p>Indicates the domain was in the wrong state to perform the desired operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DE<br />STATUS_INVALID_DOMAIN_ROLE</p> + </td> + <td> + <p>This operation is only allowed for the primary domain controller of the domain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000DF<br />STATUS_NO_SUCH_DOMAIN</p> + </td> + <td> + <p>The specified domain did not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E0<br />STATUS_DOMAIN_EXISTS</p> + </td> + <td> + <p>The specified domain already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E1<br />STATUS_DOMAIN_LIMIT_EXCEEDED</p> + </td> + <td> + <p>An attempt was made to exceed the limit on the number of domains per server for this release.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E2<br />STATUS_OPLOCK_NOT_GRANTED</p> + </td> + <td> + <p>An error status returned when the opportunistic lock (oplock) request is denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E3<br />STATUS_INVALID_OPLOCK_PROTOCOL</p> + </td> + <td> + <p>An error status returned when an invalid opportunistic lock (oplock) acknowledgment is received by a file system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E4<br />STATUS_INTERNAL_DB_CORRUPTION</p> + </td> + <td> + <p>This error indicates that the requested operation cannot be completed due to a catastrophic media failure or an on-disk data structure corruption.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E5<br />STATUS_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E6<br />STATUS_GENERIC_NOT_MAPPED</p> + </td> + <td> + <p>Indicates generic access types were contained in an access mask which should already be mapped to non-generic access types.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E7<br />STATUS_BAD_DESCRIPTOR_FORMAT</p> + </td> + <td> + <p>Indicates a security descriptor is not in the necessary format (absolute or self-relative).</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E8<br />STATUS_INVALID_USER_BUFFER</p> + </td> + <td> + <p>An access to a user buffer failed at an expected point in time. This code is defined because the caller does not want to accept STATUS_ACCESS_VIOLATION in its filter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000E9<br />STATUS_UNEXPECTED_IO_ERROR</p> + </td> + <td> + <p>If an I/O error that is not defined in the standard FsRtl filter is returned, it is converted to the following error, which is guaranteed to be in the filter. In this case, information is lost; however, the filter correctly handles the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000EA<br />STATUS_UNEXPECTED_MM_CREATE_ERR</p> + </td> + <td> + <p>If an MM error that is not defined in the standard FsRtl filter is returned, it is converted to one of the following errors, which are guaranteed to be in the filter. In this case, information is lost; however, the filter correctly handles the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000EB<br />STATUS_UNEXPECTED_MM_MAP_ERROR</p> + </td> + <td> + <p>If an MM error that is not defined in the standard FsRtl filter is returned, it is converted to one of the following errors, which are guaranteed to be in the filter. In this case, information is lost; however, the filter correctly handles the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000EC<br />STATUS_UNEXPECTED_MM_EXTEND_ERR</p> + </td> + <td> + <p>If an MM error that is not defined in the standard FsRtl filter is returned, it is converted to one of the following errors, which are guaranteed to be in the filter. In this case, information is lost; however, the filter correctly handles the exception.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000ED<br />STATUS_NOT_LOGON_PROCESS</p> + </td> + <td> + <p>The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000EE<br />STATUS_LOGON_SESSION_EXISTS</p> + </td> + <td> + <p>An attempt has been made to start a new session manager or LSA logon session by using an ID that is already in use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000EF<br />STATUS_INVALID_PARAMETER_1</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the first argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F0<br />STATUS_INVALID_PARAMETER_2</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the second argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F1<br />STATUS_INVALID_PARAMETER_3</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the third argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F2<br />STATUS_INVALID_PARAMETER_4</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the fourth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F3<br />STATUS_INVALID_PARAMETER_5</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the fifth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F4<br />STATUS_INVALID_PARAMETER_6</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the sixth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F5<br />STATUS_INVALID_PARAMETER_7</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the seventh argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F6<br />STATUS_INVALID_PARAMETER_8</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the eighth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F7<br />STATUS_INVALID_PARAMETER_9</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the ninth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F8<br />STATUS_INVALID_PARAMETER_10</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the tenth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000F9<br />STATUS_INVALID_PARAMETER_11</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the eleventh argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FA<br />STATUS_INVALID_PARAMETER_12</p> + </td> + <td> + <p>An invalid parameter was passed to a service or function as the twelfth argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FB<br />STATUS_REDIRECTOR_NOT_STARTED</p> + </td> + <td> + <p>An attempt was made to access a network file, but the network software was not yet started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FC<br />STATUS_REDIRECTOR_STARTED</p> + </td> + <td> + <p>An attempt was made to start the redirector, but the redirector has already been started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FD<br />STATUS_STACK_OVERFLOW</p> + </td> + <td> + <p>A new guard page for the stack cannot be created.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FE<br />STATUS_NO_SUCH_PACKAGE</p> + </td> + <td> + <p>A specified authentication package is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00000FF<br />STATUS_BAD_FUNCTION_TABLE</p> + </td> + <td> + <p>A malformed function table was encountered during an unwind operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000100<br />STATUS_VARIABLE_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified environment variable name was not found in the specified environment block.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000101<br />STATUS_DIRECTORY_NOT_EMPTY</p> + </td> + <td> + <p>Indicates that the directory trying to be deleted is not empty.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000102<br />STATUS_FILE_CORRUPT_ERROR</p> + </td> + <td> + <p>{Corrupt File} The file or directory %hs is corrupt and unreadable. Run the Chkdsk utility.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000103<br />STATUS_NOT_A_DIRECTORY</p> + </td> + <td> + <p>A requested opened file is not a directory.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000104<br />STATUS_BAD_LOGON_SESSION_STATE</p> + </td> + <td> + <p>The logon session is not in a state that is consistent with the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000105<br />STATUS_LOGON_SESSION_COLLISION</p> + </td> + <td> + <p>An internal LSA error has occurred. An authentication package has requested the creation of a logon session but the ID of an already existing logon session has been specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000106<br />STATUS_NAME_TOO_LONG</p> + </td> + <td> + <p>A specified name string is too long for its intended use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000107<br />STATUS_FILES_OPEN</p> + </td> + <td> + <p>The user attempted to force close the files on a redirected drive, but there were opened files on the drive, and the user did not specify a sufficient level of force.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000108<br />STATUS_CONNECTION_IN_USE</p> + </td> + <td> + <p>The user attempted to force close the files on a redirected drive, but there were opened directories on the drive, and the user did not specify a sufficient level of force.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000109<br />STATUS_MESSAGE_NOT_FOUND</p> + </td> + <td> + <p>RtlFindMessage could not locate the requested message ID in the message table resource.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000010A<br />STATUS_PROCESS_IS_TERMINATING</p> + </td> + <td> + <p>An attempt was made to duplicate an object handle into or out of an exiting process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000010B<br />STATUS_INVALID_LOGON_TYPE</p> + </td> + <td> + <p>Indicates an invalid value has been provided for the LogonType requested.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000010C<br />STATUS_NO_GUID_TRANSLATION</p> + </td> + <td> + <p>Indicates that an attempt was made to assign protection to a file system file or directory and one of the SIDs in the security descriptor could not be translated into a GUID that could be stored by the file system. This causes the protection attempt to fail, which may cause a file creation attempt to fail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000010D<br />STATUS_CANNOT_IMPERSONATE</p> + </td> + <td> + <p>Indicates that an attempt has been made to impersonate via a named pipe that has not yet been read from.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000010E<br />STATUS_IMAGE_ALREADY_LOADED</p> + </td> + <td> + <p>Indicates that the specified image is already loaded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000117<br />STATUS_NO_LDT</p> + </td> + <td> + <p>Indicates that an attempt was made to change the size of the LDT for a process that has no LDT.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000118<br />STATUS_INVALID_LDT_SIZE</p> + </td> + <td> + <p>Indicates that an attempt was made to grow an LDT by setting its size, or that the size was not an even number of selectors.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000119<br />STATUS_INVALID_LDT_OFFSET</p> + </td> + <td> + <p>Indicates that the starting value for the LDT information was not an integral multiple of the selector size.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011A<br />STATUS_INVALID_LDT_DESCRIPTOR</p> + </td> + <td> + <p>Indicates that the user supplied an invalid descriptor when trying to set up LDT descriptors.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011B<br />STATUS_INVALID_IMAGE_NE_FORMAT</p> + </td> + <td> + <p>The specified image file did not have the correct format. It appears to be NE format.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011C<br />STATUS_RXACT_INVALID_STATE</p> + </td> + <td> + <p>Indicates that the transaction state of a registry subtree is incompatible with the requested operation. For example, a request has been made to start a new transaction with one already in progress, or a request has been made to apply a transaction when one is not currently in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011D<br />STATUS_RXACT_COMMIT_FAILURE</p> + </td> + <td> + <p>Indicates an error has occurred during a registry transaction commit. The database has been left in an unknown, but probably inconsistent, state. The state of the registry transaction is left as COMMITTING.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011E<br />STATUS_MAPPED_FILE_SIZE_ZERO</p> + </td> + <td> + <p>An attempt was made to map a file of size zero with the maximum size specified as zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000011F<br />STATUS_TOO_MANY_OPENED_FILES</p> + </td> + <td> + <p>Too many files are opened on a remote server. This error should only be returned by the Windows redirector on a remote drive.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000120<br />STATUS_CANCELLED</p> + </td> + <td> + <p>The I/O request was canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000121<br />STATUS_CANNOT_DELETE</p> + </td> + <td> + <p>An attempt has been made to remove a file or directory that cannot be deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000122<br />STATUS_INVALID_COMPUTER_NAME</p> + </td> + <td> + <p>Indicates a name that was specified as a remote computer name is syntactically invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000123<br />STATUS_FILE_DELETED</p> + </td> + <td> + <p>An I/O request other than close was performed on a file after it was deleted, which can only happen to a request that did not complete before the last handle was closed via NtClose.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000124<br />STATUS_SPECIAL_ACCOUNT</p> + </td> + <td> + <p>Indicates an operation that is incompatible with built-in accounts has been attempted on a built-in (special) SAM account. For example, built-in accounts cannot be deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000125<br />STATUS_SPECIAL_GROUP</p> + </td> + <td> + <p>The operation requested may not be performed on the specified group because it is a built-in special group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000126<br />STATUS_SPECIAL_USER</p> + </td> + <td> + <p>The operation requested may not be performed on the specified user because it is a built-in special user.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000127<br />STATUS_MEMBERS_PRIMARY_GROUP</p> + </td> + <td> + <p>Indicates a member cannot be removed from a group because the group is currently the member's primary group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000128<br />STATUS_FILE_CLOSED</p> + </td> + <td> + <p>An I/O request other than close and several other special case operations was attempted using a file object that had already been closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000129<br />STATUS_TOO_MANY_THREADS</p> + </td> + <td> + <p>Indicates a process has too many threads to perform the requested action. For example, assignment of a primary token may only be performed when a process has zero or one threads.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012A<br />STATUS_THREAD_NOT_IN_PROCESS</p> + </td> + <td> + <p>An attempt was made to operate on a thread within a specific process, but the specified thread is not in the specified process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012B<br />STATUS_TOKEN_ALREADY_IN_USE</p> + </td> + <td> + <p>An attempt was made to establish a token for use as a primary token but the token is already in use. A token can only be the primary token of one process at a time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012C<br />STATUS_PAGEFILE_QUOTA_EXCEEDED</p> + </td> + <td> + <p>The page file quota was exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012D<br />STATUS_COMMITMENT_LIMIT</p> + </td> + <td> + <p>{Out of Virtual Memory} Your system is low on virtual memory. To ensure that Windows runs correctly, increase the size of your virtual memory paging file. For more information, see Help.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012E<br />STATUS_INVALID_IMAGE_LE_FORMAT</p> + </td> + <td> + <p>The specified image file did not have the correct format: it appears to be LE format.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000012F<br />STATUS_INVALID_IMAGE_NOT_MZ</p> + </td> + <td> + <p>The specified image file did not have the correct format: it did not have an initial MZ.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000130<br />STATUS_INVALID_IMAGE_PROTECT</p> + </td> + <td> + <p>The specified image file did not have the correct format: it did not have a proper e_lfarlc in the MZ header.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000131<br />STATUS_INVALID_IMAGE_WIN_16</p> + </td> + <td> + <p>The specified image file did not have the correct format: it appears to be a 16-bit Windows image.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000132<br />STATUS_LOGON_SERVER_CONFLICT</p> + </td> + <td> + <p>The Netlogon service cannot start because another Netlogon service running in the domain conflicts with the specified role.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000133<br />STATUS_TIME_DIFFERENCE_AT_DC</p> + </td> + <td> + <p>The time at the primary domain controller is different from the time at the backup domain controller or member server by too large an amount.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000134<br />STATUS_SYNCHRONIZATION_REQUIRED</p> + </td> + <td> + <p>The SAM database on a Windows Server is significantly out of synchronization with the copy on the domain controller. A complete synchronization is required.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000135<br />STATUS_DLL_NOT_FOUND</p> + </td> + <td> + <p>{Unable To Locate Component} This application has failed to start because %hs was not found. Reinstalling the application may fix this problem.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000136<br />STATUS_OPEN_FAILED</p> + </td> + <td> + <p>The NtCreateFile API failed. This error should never be returned to an application; it is a place holder for the Windows LAN Manager Redirector to use in its internal error-mapping routines.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000137<br />STATUS_IO_PRIVILEGE_FAILED</p> + </td> + <td> + <p>{Privilege Failed} The I/O permissions for the process could not be changed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000138<br />STATUS_ORDINAL_NOT_FOUND</p> + </td> + <td> + <p>{Ordinal Not Found} The ordinal %ld could not be located in the dynamic link library %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000139<br />STATUS_ENTRYPOINT_NOT_FOUND</p> + </td> + <td> + <p>{Entry Point Not Found} The procedure entry point %hs could not be located in the dynamic link library %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013A<br />STATUS_CONTROL_C_EXIT</p> + </td> + <td> + <p>{Application Exit by CTRL+C} The application terminated as a result of a CTRL+C.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013B<br />STATUS_LOCAL_DISCONNECT</p> + </td> + <td> + <p>{Virtual Circuit Closed} The network transport on your computer has closed a network connection. There may or may not be I/O requests outstanding.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013C<br />STATUS_REMOTE_DISCONNECT</p> + </td> + <td> + <p>{Virtual Circuit Closed} The network transport on a remote computer has closed a network connection. There may or may not be I/O requests outstanding.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013D<br />STATUS_REMOTE_RESOURCES</p> + </td> + <td> + <p>{Insufficient Resources on Remote Computer} The remote computer has insufficient resources to complete the network request. For example, the remote computer may not have enough available memory to carry out the request at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013E<br />STATUS_LINK_FAILED</p> + </td> + <td> + <p>{Virtual Circuit Closed} An existing connection (virtual circuit) has been broken at the remote computer. There is probably something wrong with the network software protocol or the network hardware on the remote computer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000013F<br />STATUS_LINK_TIMEOUT</p> + </td> + <td> + <p>{Virtual Circuit Closed} The network transport on your computer has closed a network connection because it had to wait too long for a response from the remote computer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000140<br />STATUS_INVALID_CONNECTION</p> + </td> + <td> + <p>The connection handle that was given to the transport was invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000141<br />STATUS_INVALID_ADDRESS</p> + </td> + <td> + <p>The address handle that was given to the transport was invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000142<br />STATUS_DLL_INIT_FAILED</p> + </td> + <td> + <p>{DLL Initialization Failed} Initialization of the dynamic link library %hs failed. The process is terminating abnormally.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000143<br />STATUS_MISSING_SYSTEMFILE</p> + </td> + <td> + <p>{Missing System File} The required system file %hs is bad or missing.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000144<br />STATUS_UNHANDLED_EXCEPTION</p> + </td> + <td> + <p>{Application Error} The exception %s (0x%08lx) occurred in the application at location 0x%08lx.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000145<br />STATUS_APP_INIT_FAILURE</p> + </td> + <td> + <p>{Application Error} The application failed to initialize properly (0x%lx). Click OK to terminate the application.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000146<br />STATUS_PAGEFILE_CREATE_FAILED</p> + </td> + <td> + <p>{Unable to Create Paging File} The creation of the paging file %hs failed (%lx). The requested size was %ld.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000147<br />STATUS_NO_PAGEFILE</p> + </td> + <td> + <p>{No Paging File Specified} No paging file was specified in the system configuration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000148<br />STATUS_INVALID_LEVEL</p> + </td> + <td> + <p>{Incorrect System Call Level} An invalid level was passed into the specified system call.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000149<br />STATUS_WRONG_PASSWORD_CORE</p> + </td> + <td> + <p>{Incorrect Password to LAN Manager Server} You specified an incorrect password to a LAN Manager 2.x or MS-NET server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014A<br />STATUS_ILLEGAL_FLOAT_CONTEXT</p> + </td> + <td> + <p>{EXCEPTION} A real-mode application issued a floating-point instruction and floating-point hardware is not present.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014B<br />STATUS_PIPE_BROKEN</p> + </td> + <td> + <p>The pipe operation has failed because the other end of the pipe has been closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014C<br />STATUS_REGISTRY_CORRUPT</p> + </td> + <td> + <p>{The Registry Is Corrupt} The structure of one of the files that contains registry data is corrupt; the image of the file in memory is corrupt; or the file could not be recovered because the alternate copy or log was absent or corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014D<br />STATUS_REGISTRY_IO_FAILED</p> + </td> + <td> + <p>An I/O operation initiated by the Registry failed and cannot be recovered. The registry could not read in, write out, or flush one of the files that contain the system's image of the registry.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014E<br />STATUS_NO_EVENT_PAIR</p> + </td> + <td> + <p>An event pair synchronization operation was performed using the thread-specific client/server event pair object, but no event pair object was associated with the thread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000014F<br />STATUS_UNRECOGNIZED_VOLUME</p> + </td> + <td> + <p>The volume does not contain a recognized file system. Be sure that all required file system drivers are loaded and that the volume is not corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000150<br />STATUS_SERIAL_NO_DEVICE_INITED</p> + </td> + <td> + <p>No serial device was successfully initialized. The serial driver will unload.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000151<br />STATUS_NO_SUCH_ALIAS</p> + </td> + <td> + <p>The specified local group does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000152<br />STATUS_MEMBER_NOT_IN_ALIAS</p> + </td> + <td> + <p>The specified account name is not a member of the group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000153<br />STATUS_MEMBER_IN_ALIAS</p> + </td> + <td> + <p>The specified account name is already a member of the group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000154<br />STATUS_ALIAS_EXISTS</p> + </td> + <td> + <p>The specified local group already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000155<br />STATUS_LOGON_NOT_GRANTED</p> + </td> + <td> + <p>A requested type of logon (for example, interactive, network, and service) is not granted by the local security policy of the target system. Ask the system administrator to grant the necessary form of logon.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000156<br />STATUS_TOO_MANY_SECRETS</p> + </td> + <td> + <p>The maximum number of secrets that may be stored in a single system was exceeded. The length and number of secrets is limited to satisfy U.S. State Department export restrictions.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000157<br />STATUS_SECRET_TOO_LONG</p> + </td> + <td> + <p>The length of a secret exceeds the maximum allowable length. The length and number of secrets is limited to satisfy U.S. State Department export restrictions.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000158<br />STATUS_INTERNAL_DB_ERROR</p> + </td> + <td> + <p>The local security authority (LSA) database contains an internal inconsistency.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000159<br />STATUS_FULLSCREEN_MODE</p> + </td> + <td> + <p>The requested operation cannot be performed in full-screen mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015A<br />STATUS_TOO_MANY_CONTEXT_IDS</p> + </td> + <td> + <p>During a logon attempt, the user's security context accumulated too many security IDs. This is a very unusual situation. Remove the user from some global or local groups to reduce the number of security IDs to incorporate into the security context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015B<br />STATUS_LOGON_TYPE_NOT_GRANTED</p> + </td> + <td> + <p>A user has requested a type of logon (for example, interactive or network) that has not been granted. An administrator has control over who may logon interactively and through the network.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015C<br />STATUS_NOT_REGISTRY_FILE</p> + </td> + <td> + <p>The system has attempted to load or restore a file into the registry, and the specified file is not in the format of a registry file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015D<br />STATUS_NT_CROSS_ENCRYPTION_REQUIRED</p> + </td> + <td> + <p>An attempt was made to change a user password in the security account manager without providing the necessary Windows cross-encrypted password.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015E<br />STATUS_DOMAIN_CTRLR_CONFIG_ERROR</p> + </td> + <td> + <p>A Windows Server has an incorrect configuration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000015F<br />STATUS_FT_MISSING_MEMBER</p> + </td> + <td> + <p>An attempt was made to explicitly access the secondary copy of information via a device control to the fault tolerance driver and the secondary copy is not present in the system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000160<br />STATUS_ILL_FORMED_SERVICE_ENTRY</p> + </td> + <td> + <p>A configuration registry node that represents a driver service entry was ill-formed and did not contain the required value entries.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000161<br />STATUS_ILLEGAL_CHARACTER</p> + </td> + <td> + <p>An illegal character was encountered. For a multibyte character set, this includes a lead byte without a succeeding trail byte. For the Unicode character set this includes the characters 0xFFFF and 0xFFFE.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000162<br />STATUS_UNMAPPABLE_CHARACTER</p> + </td> + <td> + <p>No mapping for the Unicode character exists in the target multibyte code page.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000163<br />STATUS_UNDEFINED_CHARACTER</p> + </td> + <td> + <p>The Unicode character is not defined in the Unicode character set that is installed on the system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000164<br />STATUS_FLOPPY_VOLUME</p> + </td> + <td> + <p>The paging file cannot be created on a floppy disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000165<br />STATUS_FLOPPY_ID_MARK_NOT_FOUND</p> + </td> + <td> + <p>{Floppy Disk Error} While accessing a floppy disk, an ID address mark was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000166<br />STATUS_FLOPPY_WRONG_CYLINDER</p> + </td> + <td> + <p>{Floppy Disk Error} While accessing a floppy disk, the track address from the sector ID field was found to be different from the track address that is maintained by the controller.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000167<br />STATUS_FLOPPY_UNKNOWN_ERROR</p> + </td> + <td> + <p>{Floppy Disk Error} The floppy disk controller reported an error that is not recognized by the floppy disk driver.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000168<br />STATUS_FLOPPY_BAD_REGISTERS</p> + </td> + <td> + <p>{Floppy Disk Error} While accessing a floppy-disk, the controller returned inconsistent results via its registers.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000169<br />STATUS_DISK_RECALIBRATE_FAILED</p> + </td> + <td> + <p>{Hard Disk Error} While accessing the hard disk, a recalibrate operation failed, even after retries.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000016A<br />STATUS_DISK_OPERATION_FAILED</p> + </td> + <td> + <p>{Hard Disk Error} While accessing the hard disk, a disk operation failed even after retries.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000016B<br />STATUS_DISK_RESET_FAILED</p> + </td> + <td> + <p>{Hard Disk Error} While accessing the hard disk, a disk controller reset was needed, but even that failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000016C<br />STATUS_SHARED_IRQ_BUSY</p> + </td> + <td> + <p>An attempt was made to open a device that was sharing an interrupt request (IRQ) with other devices. At least one other device that uses that IRQ was already opened. Two concurrent opens of devices that share an IRQ and only work via interrupts is not supported for the particular bus type that the devices use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000016D<br />STATUS_FT_ORPHANING</p> + </td> + <td> + <p>{FT Orphaning} A disk that is part of a fault-tolerant volume can no longer be accessed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000016E<br />STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT</p> + </td> + <td> + <p>The basic input/output system (BIOS) failed to connect a system interrupt to the device or bus for which the device is connected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000172<br />STATUS_PARTITION_FAILURE</p> + </td> + <td> + <p>The tape could not be partitioned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000173<br />STATUS_INVALID_BLOCK_LENGTH</p> + </td> + <td> + <p>When accessing a new tape of a multi-volume partition, the current blocksize is incorrect.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000174<br />STATUS_DEVICE_NOT_PARTITIONED</p> + </td> + <td> + <p>The tape partition information could not be found when loading a tape.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000175<br />STATUS_UNABLE_TO_LOCK_MEDIA</p> + </td> + <td> + <p>An attempt to lock the eject media mechanism failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000176<br />STATUS_UNABLE_TO_UNLOAD_MEDIA</p> + </td> + <td> + <p>An attempt to unload media failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000177<br />STATUS_EOM_OVERFLOW</p> + </td> + <td> + <p>The physical end of tape was detected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000178<br />STATUS_NO_MEDIA</p> + </td> + <td> + <p>{No Media} There is no media in the drive. Insert media into drive %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017A<br />STATUS_NO_SUCH_MEMBER</p> + </td> + <td> + <p>A member could not be added to or removed from the local group because the member does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017B<br />STATUS_INVALID_MEMBER</p> + </td> + <td> + <p>A new member could not be added to a local group because the member has the wrong account type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017C<br />STATUS_KEY_DELETED</p> + </td> + <td> + <p>An illegal operation was attempted on a registry key that has been marked for deletion.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017D<br />STATUS_NO_LOG_SPACE</p> + </td> + <td> + <p>The system could not allocate the required space in a registry log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017E<br />STATUS_TOO_MANY_SIDS</p> + </td> + <td> + <p>Too many SIDs have been specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000017F<br />STATUS_LM_CROSS_ENCRYPTION_REQUIRED</p> + </td> + <td> + <p>An attempt was made to change a user password in the security account manager without providing the necessary LM cross-encrypted password.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000180<br />STATUS_KEY_HAS_CHILDREN</p> + </td> + <td> + <p>An attempt was made to create a symbolic link in a registry key that already has subkeys or values.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000181<br />STATUS_CHILD_MUST_BE_VOLATILE</p> + </td> + <td> + <p>An attempt was made to create a stable subkey under a volatile parent key.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000182<br />STATUS_DEVICE_CONFIGURATION_ERROR</p> + </td> + <td> + <p>The I/O device is configured incorrectly or the configuration parameters to the driver are incorrect.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000183<br />STATUS_DRIVER_INTERNAL_ERROR</p> + </td> + <td> + <p>An error was detected between two drivers or within an I/O driver.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000184<br />STATUS_INVALID_DEVICE_STATE</p> + </td> + <td> + <p>The device is not in a valid state to perform this request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000185<br />STATUS_IO_DEVICE_ERROR</p> + </td> + <td> + <p>The I/O device reported an I/O error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000186<br />STATUS_DEVICE_PROTOCOL_ERROR</p> + </td> + <td> + <p>A protocol error was detected between the driver and the device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000187<br />STATUS_BACKUP_CONTROLLER</p> + </td> + <td> + <p>This operation is only allowed for the primary domain controller of the domain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000188<br />STATUS_LOG_FILE_FULL</p> + </td> + <td> + <p>The log file space is insufficient to support this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000189<br />STATUS_TOO_LATE</p> + </td> + <td> + <p>A write operation was attempted to a volume after it was dismounted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018A<br />STATUS_NO_TRUST_LSA_SECRET</p> + </td> + <td> + <p>The workstation does not have a trust secret for the primary domain in the local LSA database.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018B<br />STATUS_NO_TRUST_SAM_ACCOUNT</p> + </td> + <td> + <p>The SAM database on the Windows Server does not have a computer account for this workstation trust relationship.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018C<br />STATUS_TRUSTED_DOMAIN_FAILURE</p> + </td> + <td> + <p>The logon request failed because the trust relationship between the primary domain and the trusted domain failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018D<br />STATUS_TRUSTED_RELATIONSHIP_FAILURE</p> + </td> + <td> + <p>The logon request failed because the trust relationship between this workstation and the primary domain failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018E<br />STATUS_EVENTLOG_FILE_CORRUPT</p> + </td> + <td> + <p>The Eventlog log file is corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000018F<br />STATUS_EVENTLOG_CANT_START</p> + </td> + <td> + <p>No Eventlog log file could be opened. The Eventlog service did not start.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000190<br />STATUS_TRUST_FAILURE</p> + </td> + <td> + <p>The network logon failed. This may be because the validation authority cannot be reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000191<br />STATUS_MUTANT_LIMIT_EXCEEDED</p> + </td> + <td> + <p>An attempt was made to acquire a mutant such that its maximum count would have been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000192<br />STATUS_NETLOGON_NOT_STARTED</p> + </td> + <td> + <p>An attempt was made to logon, but the NetLogon service was not started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000193<br />STATUS_ACCOUNT_EXPIRED</p> + </td> + <td> + <p>The user account has expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000194<br />STATUS_POSSIBLE_DEADLOCK</p> + </td> + <td> + <p>{EXCEPTION} Possible deadlock condition.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000195<br />STATUS_NETWORK_CREDENTIAL_CONFLICT</p> + </td> + <td> + <p>Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000196<br />STATUS_REMOTE_SESSION_LIMIT</p> + </td> + <td> + <p>An attempt was made to establish a session to a network server, but there are already too many sessions established to that server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000197<br />STATUS_EVENTLOG_FILE_CHANGED</p> + </td> + <td> + <p>The log file has changed between reads.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000198<br />STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT</p> + </td> + <td> + <p>The account used is an interdomain trust account. Use your global user account or local user account to access this server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000199<br />STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT</p> + </td> + <td> + <p>The account used is a computer account. Use your global user account or local user account to access this server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019A<br />STATUS_NOLOGON_SERVER_TRUST_ACCOUNT</p> + </td> + <td> + <p>The account used is a server trust account. Use your global user account or local user account to access this server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019B<br />STATUS_DOMAIN_TRUST_INCONSISTENT</p> + </td> + <td> + <p>The name or SID of the specified domain is inconsistent with the trust information for that domain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019C<br />STATUS_FS_DRIVER_REQUIRED</p> + </td> + <td> + <p>A volume has been accessed for which a file system driver is required that has not yet been loaded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019D<br />STATUS_IMAGE_ALREADY_LOADED_AS_DLL</p> + </td> + <td> + <p>Indicates that the specified image is already loaded as a DLL.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019E<br />STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING</p> + </td> + <td> + <p>Short name settings may not be changed on this volume due to the global registry setting.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000019F<br />STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME</p> + </td> + <td> + <p>Short names are not enabled on this volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00001A0<br />STATUS_SECURITY_STREAM_IS_INCONSISTENT</p> + </td> + <td> + <p>The security stream for the given volume is in an inconsistent state. Please run CHKDSK on the volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00001A1<br />STATUS_INVALID_LOCK_RANGE</p> + </td> + <td> + <p>A requested file lock operation cannot be processed due to an invalid byte range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00001A2<br />STATUS_INVALID_ACE_CONDITION</p> + </td> + <td> + <p>The specified access control entry (ACE) contains an invalid condition.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00001A3<br />STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT</p> + </td> + <td> + <p>The subsystem needed to support the image type is not present.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00001A4<br />STATUS_NOTIFICATION_GUID_ALREADY_DEFINED</p> + </td> + <td> + <p>The specified file already has a notification GUID associated with it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000201<br />STATUS_NETWORK_OPEN_RESTRICTION</p> + </td> + <td> + <p>A remote open failed because the network open restrictions were not satisfied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000202<br />STATUS_NO_USER_SESSION_KEY</p> + </td> + <td> + <p>There is no user session key for the specified logon session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000203<br />STATUS_USER_SESSION_DELETED</p> + </td> + <td> + <p>The remote user session has been deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000204<br />STATUS_RESOURCE_LANG_NOT_FOUND</p> + </td> + <td> + <p>Indicates the specified resource language ID cannot be found in the image file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000205<br />STATUS_INSUFF_SERVER_RESOURCES</p> + </td> + <td> + <p>Insufficient server resources exist to complete the request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000206<br />STATUS_INVALID_BUFFER_SIZE</p> + </td> + <td> + <p>The size of the buffer is invalid for the specified operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000207<br />STATUS_INVALID_ADDRESS_COMPONENT</p> + </td> + <td> + <p>The transport rejected the specified network address as invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000208<br />STATUS_INVALID_ADDRESS_WILDCARD</p> + </td> + <td> + <p>The transport rejected the specified network address due to invalid use of a wildcard.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000209<br />STATUS_TOO_MANY_ADDRESSES</p> + </td> + <td> + <p>The transport address could not be opened because all the available addresses are in use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020A<br />STATUS_ADDRESS_ALREADY_EXISTS</p> + </td> + <td> + <p>The transport address could not be opened because it already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020B<br />STATUS_ADDRESS_CLOSED</p> + </td> + <td> + <p>The transport address is now closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020C<br />STATUS_CONNECTION_DISCONNECTED</p> + </td> + <td> + <p>The transport connection is now disconnected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020D<br />STATUS_CONNECTION_RESET</p> + </td> + <td> + <p>The transport connection has been reset.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020E<br />STATUS_TOO_MANY_NODES</p> + </td> + <td> + <p>The transport cannot dynamically acquire any more nodes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000020F<br />STATUS_TRANSACTION_ABORTED</p> + </td> + <td> + <p>The transport aborted a pending transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000210<br />STATUS_TRANSACTION_TIMED_OUT</p> + </td> + <td> + <p>The transport timed out a request that is waiting for a response.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000211<br />STATUS_TRANSACTION_NO_RELEASE</p> + </td> + <td> + <p>The transport did not receive a release for a pending response.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000212<br />STATUS_TRANSACTION_NO_MATCH</p> + </td> + <td> + <p>The transport did not find a transaction that matches the specific token.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000213<br />STATUS_TRANSACTION_RESPONDED</p> + </td> + <td> + <p>The transport had previously responded to a transaction request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000214<br />STATUS_TRANSACTION_INVALID_ID</p> + </td> + <td> + <p>The transport does not recognize the specified transaction request ID.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000215<br />STATUS_TRANSACTION_INVALID_TYPE</p> + </td> + <td> + <p>The transport does not recognize the specified transaction request type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000216<br />STATUS_NOT_SERVER_SESSION</p> + </td> + <td> + <p>The transport can only process the specified request on the server side of a session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000217<br />STATUS_NOT_CLIENT_SESSION</p> + </td> + <td> + <p>The transport can only process the specified request on the client side of a session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000218<br />STATUS_CANNOT_LOAD_REGISTRY_FILE</p> + </td> + <td> + <p>{Registry File Failure} The registry cannot load the hive (file): %hs or its log or alternate. It is corrupt, absent, or not writable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000219<br />STATUS_DEBUG_ATTACH_FAILED</p> + </td> + <td> + <p>{Unexpected Failure in DebugActiveProcess} An unexpected failure occurred while processing a DebugActiveProcess API request. You may choose OK to terminate the process, or Cancel to ignore the error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021A<br />STATUS_SYSTEM_PROCESS_TERMINATED</p> + </td> + <td> + <p>{Fatal System Error} The %hs system process terminated unexpectedly with a status of 0x%08x (0x%08x 0x%08x). The system has been shut down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021B<br />STATUS_DATA_NOT_ACCEPTED</p> + </td> + <td> + <p>{Data Not Accepted} The TDI client could not handle the data received during an indication.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021C<br />STATUS_NO_BROWSER_SERVERS_FOUND</p> + </td> + <td> + <p>{Unable to Retrieve Browser Server List} The list of servers for this workgroup is not currently available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021D<br />STATUS_VDM_HARD_ERROR</p> + </td> + <td> + <p>NTVDM encountered a hard error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021E<br />STATUS_DRIVER_CANCEL_TIMEOUT</p> + </td> + <td> + <p>{Cancel Timeout} The driver %hs failed to complete a canceled I/O request in the allotted time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000021F<br />STATUS_REPLY_MESSAGE_MISMATCH</p> + </td> + <td> + <p>{Reply Message Mismatch} An attempt was made to reply to an LPC message, but the thread specified by the client ID in the message was not waiting on that message.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000220<br />STATUS_MAPPED_ALIGNMENT</p> + </td> + <td> + <p>{Mapped View Alignment Incorrect} An attempt was made to map a view of a file, but either the specified base address or the offset into the file were not aligned on the proper allocation granularity.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000221<br />STATUS_IMAGE_CHECKSUM_MISMATCH</p> + </td> + <td> + <p>{Bad Image Checksum} The image %hs is possibly corrupt. The header checksum does not match the computed checksum.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000222<br />STATUS_LOST_WRITEBEHIND_DATA</p> + </td> + <td> + <p>{Delayed Write Failed} Windows was unable to save all the data for the file %hs. The data has been lost. This error may be caused by a failure of your computer hardware or network connection. Try to save this file elsewhere.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000223<br />STATUS_CLIENT_SERVER_PARAMETERS_INVALID</p> + </td> + <td> + <p>The parameters passed to the server in the client/server shared memory window were invalid. Too much data may have been put in the shared memory window.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000224<br />STATUS_PASSWORD_MUST_CHANGE</p> + </td> + <td> + <p>The user password must be changed before logging on the first time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000225<br />STATUS_NOT_FOUND</p> + </td> + <td> + <p>The object was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000226<br />STATUS_NOT_TINY_STREAM</p> + </td> + <td> + <p>The stream is not a tiny stream.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000227<br />STATUS_RECOVERY_FAILURE</p> + </td> + <td> + <p>A transaction recovery failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000228<br />STATUS_STACK_OVERFLOW_READ</p> + </td> + <td> + <p>The request must be handled by the stack overflow code.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000229<br />STATUS_FAIL_CHECK</p> + </td> + <td> + <p>A consistency check failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022A<br />STATUS_DUPLICATE_OBJECTID</p> + </td> + <td> + <p>The attempt to insert the ID in the index failed because the ID is already in the index.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022B<br />STATUS_OBJECTID_EXISTS</p> + </td> + <td> + <p>The attempt to set the object ID failed because the object already has an ID.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022C<br />STATUS_CONVERT_TO_LARGE</p> + </td> + <td> + <p>Internal OFS status codes indicating how an allocation operation is handled. Either it is retried after the containing oNode is moved or the extent stream is converted to a large stream.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022D<br />STATUS_RETRY</p> + </td> + <td> + <p>The request needs to be retried.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022E<br />STATUS_FOUND_OUT_OF_SCOPE</p> + </td> + <td> + <p>The attempt to find the object found an object on the volume that matches by ID; however, it is out of the scope of the handle that is used for the operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000022F<br />STATUS_ALLOCATE_BUCKET</p> + </td> + <td> + <p>The bucket array must be grown. Retry the transaction after doing so.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000230<br />STATUS_PROPSET_NOT_FOUND</p> + </td> + <td> + <p>The specified property set does not exist on the object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000231<br />STATUS_MARSHALL_OVERFLOW</p> + </td> + <td> + <p>The user/kernel marshaling buffer has overflowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000232<br />STATUS_INVALID_VARIANT</p> + </td> + <td> + <p>The supplied variant structure contains invalid data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000233<br />STATUS_DOMAIN_CONTROLLER_NOT_FOUND</p> + </td> + <td> + <p>A domain controller for this domain was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000234<br />STATUS_ACCOUNT_LOCKED_OUT</p> + </td> + <td> + <p>The user account has been automatically locked because too many invalid logon attempts or password change attempts have been requested.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000235<br />STATUS_HANDLE_NOT_CLOSABLE</p> + </td> + <td> + <p>NtClose was called on a handle that was protected from close via NtSetInformationObject.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000236<br />STATUS_CONNECTION_REFUSED</p> + </td> + <td> + <p>The transport-connection attempt was refused by the remote system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000237<br />STATUS_GRACEFUL_DISCONNECT</p> + </td> + <td> + <p>The transport connection was gracefully closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000238<br />STATUS_ADDRESS_ALREADY_ASSOCIATED</p> + </td> + <td> + <p>The transport endpoint already has an address associated with it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000239<br />STATUS_ADDRESS_NOT_ASSOCIATED</p> + </td> + <td> + <p>An address has not yet been associated with the transport endpoint.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023A<br />STATUS_CONNECTION_INVALID</p> + </td> + <td> + <p>An operation was attempted on a nonexistent transport connection.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023B<br />STATUS_CONNECTION_ACTIVE</p> + </td> + <td> + <p>An invalid operation was attempted on an active transport connection.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023C<br />STATUS_NETWORK_UNREACHABLE</p> + </td> + <td> + <p>The remote network is not reachable by the transport.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023D<br />STATUS_HOST_UNREACHABLE</p> + </td> + <td> + <p>The remote system is not reachable by the transport.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023E<br />STATUS_PROTOCOL_UNREACHABLE</p> + </td> + <td> + <p>The remote system does not support the transport protocol.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000023F<br />STATUS_PORT_UNREACHABLE</p> + </td> + <td> + <p>No service is operating at the destination port of the transport on the remote system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000240<br />STATUS_REQUEST_ABORTED</p> + </td> + <td> + <p>The request was aborted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000241<br />STATUS_CONNECTION_ABORTED</p> + </td> + <td> + <p>The transport connection was aborted by the local system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000242<br />STATUS_BAD_COMPRESSION_BUFFER</p> + </td> + <td> + <p>The specified buffer contains ill-formed data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000243<br />STATUS_USER_MAPPED_FILE</p> + </td> + <td> + <p>The requested operation cannot be performed on a file with a user mapped section open.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000244<br />STATUS_AUDIT_FAILED</p> + </td> + <td> + <p>{Audit Failed} An attempt to generate a security audit failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000245<br />STATUS_TIMER_RESOLUTION_NOT_SET</p> + </td> + <td> + <p>The timer resolution was not previously set by the current process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000246<br />STATUS_CONNECTION_COUNT_LIMIT</p> + </td> + <td> + <p>A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000247<br />STATUS_LOGIN_TIME_RESTRICTION</p> + </td> + <td> + <p>Attempting to log on during an unauthorized time of day for this account.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000248<br />STATUS_LOGIN_WKSTA_RESTRICTION</p> + </td> + <td> + <p>The account is not authorized to log on from this station.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000249<br />STATUS_IMAGE_MP_UP_MISMATCH</p> + </td> + <td> + <p>{UP/MP Image Mismatch} The image %hs has been modified for use on a uniprocessor system, but you are running it on a multiprocessor machine. Reinstall the image file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000250<br />STATUS_INSUFFICIENT_LOGON_INFO</p> + </td> + <td> + <p>There is insufficient account information to log you on.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000251<br />STATUS_BAD_DLL_ENTRYPOINT</p> + </td> + <td> + <p>{Invalid DLL Entrypoint} The dynamic link library %hs is not written correctly. The stack pointer has been left in an inconsistent state. The entry point should be declared as WINAPI or STDCALL. Select YES to fail the DLL load. Select NO to continue execution. Selecting NO may cause the application to operate incorrectly.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000252<br />STATUS_BAD_SERVICE_ENTRYPOINT</p> + </td> + <td> + <p>{Invalid Service Callback Entrypoint} The %hs service is not written correctly. The stack pointer has been left in an inconsistent state. The callback entry point should be declared as WINAPI or STDCALL. Selecting OK will cause the service to continue operation. However, the service process may operate incorrectly.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000253<br />STATUS_LPC_REPLY_LOST</p> + </td> + <td> + <p>The server received the messages but did not send a reply.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000254<br />STATUS_IP_ADDRESS_CONFLICT1</p> + </td> + <td> + <p>There is an IP address conflict with another system on the network.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000255<br />STATUS_IP_ADDRESS_CONFLICT2</p> + </td> + <td> + <p>There is an IP address conflict with another system on the network.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000256<br />STATUS_REGISTRY_QUOTA_LIMIT</p> + </td> + <td> + <p>{Low On Registry Space} The system has reached the maximum size that is allowed for the system part of the registry. Additional storage requests will be ignored.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000257<br />STATUS_PATH_NOT_COVERED</p> + </td> + <td> + <p>The contacted server does not support the indicated part of the DFS namespace.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000258<br />STATUS_NO_CALLBACK_ACTIVE</p> + </td> + <td> + <p>A callback return system service cannot be executed when no callback is active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000259<br />STATUS_LICENSE_QUOTA_EXCEEDED</p> + </td> + <td> + <p>The service being accessed is licensed for a particular number of connections. No more connections can be made to the service at this time because the service has already accepted the maximum number of connections.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000025A<br />STATUS_PWD_TOO_SHORT</p> + </td> + <td> + <p>The password provided is too short to meet the policy of your user account. Choose a longer password.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000025B<br />STATUS_PWD_TOO_RECENT</p> + </td> + <td> + <p>The policy of your user account does not allow you to change passwords too frequently. This is done to prevent users from changing back to a familiar, but potentially discovered, password. If you feel your password has been compromised, contact your administrator immediately to have a new one assigned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000025C<br />STATUS_PWD_HISTORY_CONFLICT</p> + </td> + <td> + <p>You have attempted to change your password to one that you have used in the past. The policy of your user account does not allow this. Select a password that you have not previously used.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000025E<br />STATUS_PLUGPLAY_NO_DEVICE</p> + </td> + <td> + <p>You have attempted to load a legacy device driver while its device instance had been disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000025F<br />STATUS_UNSUPPORTED_COMPRESSION</p> + </td> + <td> + <p>The specified compression format is unsupported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000260<br />STATUS_INVALID_HW_PROFILE</p> + </td> + <td> + <p>The specified hardware profile configuration is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000261<br />STATUS_INVALID_PLUGPLAY_DEVICE_PATH</p> + </td> + <td> + <p>The specified Plug and Play registry device path is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000262<br />STATUS_DRIVER_ORDINAL_NOT_FOUND</p> + </td> + <td> + <p>{Driver Entry Point Not Found} The %hs device driver could not locate the ordinal %ld in driver %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000263<br />STATUS_DRIVER_ENTRYPOINT_NOT_FOUND</p> + </td> + <td> + <p>{Driver Entry Point Not Found} The %hs device driver could not locate the entry point %hs in driver %hs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000264<br />STATUS_RESOURCE_NOT_OWNED</p> + </td> + <td> + <p>{Application Error} The application attempted to release a resource it did not own. Click OK to terminate the application.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000265<br />STATUS_TOO_MANY_LINKS</p> + </td> + <td> + <p>An attempt was made to create more links on a file than the file system supports.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000266<br />STATUS_QUOTA_LIST_INCONSISTENT</p> + </td> + <td> + <p>The specified quota list is internally inconsistent with its descriptor.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000267<br />STATUS_FILE_IS_OFFLINE</p> + </td> + <td> + <p>The specified file has been relocated to offline storage.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000268<br />STATUS_EVALUATION_EXPIRATION</p> + </td> + <td> + <p>{Windows Evaluation Notification} The evaluation period for this installation of Windows has expired. This system will shutdown in 1 hour. To restore access to this installation of Windows, upgrade this installation by using a licensed distribution of this product.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000269<br />STATUS_ILLEGAL_DLL_RELOCATION</p> + </td> + <td> + <p>{Illegal System DLL Relocation} The system DLL %hs was relocated in memory. The application will not run properly. The relocation occurred because the DLL %hs occupied an address range that is reserved for Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026A<br />STATUS_LICENSE_VIOLATION</p> + </td> + <td> + <p>{License Violation} The system has detected tampering with your registered product type. This is a violation of your software license. Tampering with the product type is not permitted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026B<br />STATUS_DLL_INIT_FAILED_LOGOFF</p> + </td> + <td> + <p>{DLL Initialization Failed} The application failed to initialize because the window station is shutting down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026C<br />STATUS_DRIVER_UNABLE_TO_LOAD</p> + </td> + <td> + <p>{Unable to Load Device Driver} %hs device driver could not be loaded. Error Status was 0x%x.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026D<br />STATUS_DFS_UNAVAILABLE</p> + </td> + <td> + <p>DFS is unavailable on the contacted server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026E<br />STATUS_VOLUME_DISMOUNTED</p> + </td> + <td> + <p>An operation was attempted to a volume after it was dismounted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000026F<br />STATUS_WX86_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error occurred in the Win32 x86 emulation subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000270<br />STATUS_WX86_FLOAT_STACK_CHECK</p> + </td> + <td> + <p>Win32 x86 emulation subsystem floating-point stack check.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000271<br />STATUS_VALIDATE_CONTINUE</p> + </td> + <td> + <p>The validation process needs to continue on to the next step.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000272<br />STATUS_NO_MATCH</p> + </td> + <td> + <p>There was no match for the specified key in the index.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000273<br />STATUS_NO_MORE_MATCHES</p> + </td> + <td> + <p>There are no more matches for the current index enumeration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000275<br />STATUS_NOT_A_REPARSE_POINT</p> + </td> + <td> + <p>The NTFS file or directory is not a reparse point.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000276<br />STATUS_IO_REPARSE_TAG_INVALID</p> + </td> + <td> + <p>The Windows I/O reparse tag passed for the NTFS reparse point is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000277<br />STATUS_IO_REPARSE_TAG_MISMATCH</p> + </td> + <td> + <p>The Windows I/O reparse tag does not match the one that is in the NTFS reparse point.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000278<br />STATUS_IO_REPARSE_DATA_INVALID</p> + </td> + <td> + <p>The user data passed for the NTFS reparse point is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000279<br />STATUS_IO_REPARSE_TAG_NOT_HANDLED</p> + </td> + <td> + <p>The layered file system driver for this I/O tag did not handle it when needed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000280<br />STATUS_REPARSE_POINT_NOT_RESOLVED</p> + </td> + <td> + <p>The NTFS symbolic link could not be resolved even though the initial file name is valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000281<br />STATUS_DIRECTORY_IS_A_REPARSE_POINT</p> + </td> + <td> + <p>The NTFS directory is a reparse point.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000282<br />STATUS_RANGE_LIST_CONFLICT</p> + </td> + <td> + <p>The range could not be added to the range list because of a conflict.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000283<br />STATUS_SOURCE_ELEMENT_EMPTY</p> + </td> + <td> + <p>The specified medium changer source element contains no media.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000284<br />STATUS_DESTINATION_ELEMENT_FULL</p> + </td> + <td> + <p>The specified medium changer destination element already contains media.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000285<br />STATUS_ILLEGAL_ELEMENT_ADDRESS</p> + </td> + <td> + <p>The specified medium changer element does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000286<br />STATUS_MAGAZINE_NOT_PRESENT</p> + </td> + <td> + <p>The specified element is contained in a magazine that is no longer present.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000287<br />STATUS_REINITIALIZATION_NEEDED</p> + </td> + <td> + <p>The device requires re-initialization due to hardware errors.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028A<br />STATUS_ENCRYPTION_FAILED</p> + </td> + <td> + <p>The file encryption attempt failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028B<br />STATUS_DECRYPTION_FAILED</p> + </td> + <td> + <p>The file decryption attempt failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028C<br />STATUS_RANGE_NOT_FOUND</p> + </td> + <td> + <p>The specified range could not be found in the range list.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028D<br />STATUS_NO_RECOVERY_POLICY</p> + </td> + <td> + <p>There is no encryption recovery policy configured for this system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028E<br />STATUS_NO_EFS</p> + </td> + <td> + <p>The required encryption driver is not loaded for this system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000028F<br />STATUS_WRONG_EFS</p> + </td> + <td> + <p>The file was encrypted with a different encryption driver than is currently loaded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000290<br />STATUS_NO_USER_KEYS</p> + </td> + <td> + <p>There are no EFS keys defined for the user.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000291<br />STATUS_FILE_NOT_ENCRYPTED</p> + </td> + <td> + <p>The specified file is not encrypted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000292<br />STATUS_NOT_EXPORT_FORMAT</p> + </td> + <td> + <p>The specified file is not in the defined EFS export format.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000293<br />STATUS_FILE_ENCRYPTED</p> + </td> + <td> + <p>The specified file is encrypted and the user does not have the ability to decrypt it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000295<br />STATUS_WMI_GUID_NOT_FOUND</p> + </td> + <td> + <p>The GUID passed was not recognized as valid by a WMI data provider.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000296<br />STATUS_WMI_INSTANCE_NOT_FOUND</p> + </td> + <td> + <p>The instance name passed was not recognized as valid by a WMI data provider.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000297<br />STATUS_WMI_ITEMID_NOT_FOUND</p> + </td> + <td> + <p>The data item ID passed was not recognized as valid by a WMI data provider.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000298<br />STATUS_WMI_TRY_AGAIN</p> + </td> + <td> + <p>The WMI request could not be completed and should be retried.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000299<br />STATUS_SHARED_POLICY</p> + </td> + <td> + <p>The policy object is shared and can only be modified at the root.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029A<br />STATUS_POLICY_OBJECT_NOT_FOUND</p> + </td> + <td> + <p>The policy object does not exist when it should.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029B<br />STATUS_POLICY_ONLY_IN_DS</p> + </td> + <td> + <p>The requested policy information only lives in the Ds.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029C<br />STATUS_VOLUME_NOT_UPGRADED</p> + </td> + <td> + <p>The volume must be upgraded to enable this feature.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029D<br />STATUS_REMOTE_STORAGE_NOT_ACTIVE</p> + </td> + <td> + <p>The remote storage service is not operational at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029E<br />STATUS_REMOTE_STORAGE_MEDIA_ERROR</p> + </td> + <td> + <p>The remote storage service encountered a media error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000029F<br />STATUS_NO_TRACKING_SERVICE</p> + </td> + <td> + <p>The tracking (workstation) service is not running.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A0<br />STATUS_SERVER_SID_MISMATCH</p> + </td> + <td> + <p>The server process is running under a SID that is different from the SID that is required by client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A1<br />STATUS_DS_NO_ATTRIBUTE_OR_VALUE</p> + </td> + <td> + <p>The specified directory service attribute or value does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A2<br />STATUS_DS_INVALID_ATTRIBUTE_SYNTAX</p> + </td> + <td> + <p>The attribute syntax specified to the directory service is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A3<br />STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED</p> + </td> + <td> + <p>The attribute type specified to the directory service is not defined.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A4<br />STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS</p> + </td> + <td> + <p>The specified directory service attribute or value already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A5<br />STATUS_DS_BUSY</p> + </td> + <td> + <p>The directory service is busy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A6<br />STATUS_DS_UNAVAILABLE</p> + </td> + <td> + <p>The directory service is unavailable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A7<br />STATUS_DS_NO_RIDS_ALLOCATED</p> + </td> + <td> + <p>The directory service was unable to allocate a relative identifier.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A8<br />STATUS_DS_NO_MORE_RIDS</p> + </td> + <td> + <p>The directory service has exhausted the pool of relative identifiers.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002A9<br />STATUS_DS_INCORRECT_ROLE_OWNER</p> + </td> + <td> + <p>The requested operation could not be performed because the directory service is not the master for that type of operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AA<br />STATUS_DS_RIDMGR_INIT_ERROR</p> + </td> + <td> + <p>The directory service was unable to initialize the subsystem that allocates relative identifiers.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AB<br />STATUS_DS_OBJ_CLASS_VIOLATION</p> + </td> + <td> + <p>The requested operation did not satisfy one or more constraints that are associated with the class of the object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AC<br />STATUS_DS_CANT_ON_NON_LEAF</p> + </td> + <td> + <p>The directory service can perform the requested operation only on a leaf object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AD<br />STATUS_DS_CANT_ON_RDN</p> + </td> + <td> + <p>The directory service cannot perform the requested operation on the Relatively Defined Name (RDN) attribute of an object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AE<br />STATUS_DS_CANT_MOD_OBJ_CLASS</p> + </td> + <td> + <p>The directory service detected an attempt to modify the object class of an object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002AF<br />STATUS_DS_CROSS_DOM_MOVE_FAILED</p> + </td> + <td> + <p>An error occurred while performing a cross domain move operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B0<br />STATUS_DS_GC_NOT_AVAILABLE</p> + </td> + <td> + <p>Unable to contact the global catalog server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B1<br />STATUS_DIRECTORY_SERVICE_REQUIRED</p> + </td> + <td> + <p>The requested operation requires a directory service, and none was available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B2<br />STATUS_REPARSE_ATTRIBUTE_CONFLICT</p> + </td> + <td> + <p>The reparse attribute cannot be set because it is incompatible with an existing attribute.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B3<br />STATUS_CANT_ENABLE_DENY_ONLY</p> + </td> + <td> + <p>A group marked "use for deny only" cannot be enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B4<br />STATUS_FLOAT_MULTIPLE_FAULTS</p> + </td> + <td> + <p>{EXCEPTION} Multiple floating-point faults.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B5<br />STATUS_FLOAT_MULTIPLE_TRAPS</p> + </td> + <td> + <p>{EXCEPTION} Multiple floating-point traps.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B6<br />STATUS_DEVICE_REMOVED</p> + </td> + <td> + <p>The device has been removed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B7<br />STATUS_JOURNAL_DELETE_IN_PROGRESS</p> + </td> + <td> + <p>The volume change journal is being deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B8<br />STATUS_JOURNAL_NOT_ACTIVE</p> + </td> + <td> + <p>The volume change journal is not active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002B9<br />STATUS_NOINTERFACE</p> + </td> + <td> + <p>The requested interface is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C1<br />STATUS_DS_ADMIN_LIMIT_EXCEEDED</p> + </td> + <td> + <p>A directory service resource limit has been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C2<br />STATUS_DRIVER_FAILED_SLEEP</p> + </td> + <td> + <p>{System Standby Failed} The driver %hs does not support standby mode. Updating this driver may allow the system to go to standby mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C3<br />STATUS_MUTUAL_AUTHENTICATION_FAILED</p> + </td> + <td> + <p>Mutual Authentication failed. The server password is out of date at the domain controller.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C4<br />STATUS_CORRUPT_SYSTEM_FILE</p> + </td> + <td> + <p>The system file %1 has become corrupt and has been replaced.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C5<br />STATUS_DATATYPE_MISALIGNMENT_ERROR</p> + </td> + <td> + <p>{EXCEPTION} Alignment Error A data type misalignment error was detected in a load or store instruction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C6<br />STATUS_WMI_READ_ONLY</p> + </td> + <td> + <p>The WMI data item or data block is read-only.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C7<br />STATUS_WMI_SET_FAILURE</p> + </td> + <td> + <p>The WMI data item or data block could not be changed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C8<br />STATUS_COMMITMENT_MINIMUM</p> + </td> + <td> + <p>{Virtual Memory Minimum Too Low} Your system is low on virtual memory. Windows is increasing the size of your virtual memory paging file. During this process, memory requests for some applications may be denied. For more information, see Help.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002C9<br />STATUS_REG_NAT_CONSUMPTION</p> + </td> + <td> + <p>{EXCEPTION} Register NaT consumption faults. A NaT value is consumed on a non-speculative instruction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CA<br />STATUS_TRANSPORT_FULL</p> + </td> + <td> + <p>The transport element of the medium changer contains media, which is causing the operation to fail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CB<br />STATUS_DS_SAM_INIT_FAILURE</p> + </td> + <td> + <p>Security Accounts Manager initialization failed because of the following error: %hs Error Status: 0x%x. Click OK to shut down this system and restart in Directory Services Restore Mode. Check the event log for more detailed information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CC<br />STATUS_ONLY_IF_CONNECTED</p> + </td> + <td> + <p>This operation is supported only when you are connected to the server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CD<br />STATUS_DS_SENSITIVE_GROUP_VIOLATION</p> + </td> + <td> + <p>Only an administrator can modify the membership list of an administrative group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CE<br />STATUS_PNP_RESTART_ENUMERATION</p> + </td> + <td> + <p>A device was removed so enumeration must be restarted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002CF<br />STATUS_JOURNAL_ENTRY_DELETED</p> + </td> + <td> + <p>The journal entry has been deleted from the journal.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D0<br />STATUS_DS_CANT_MOD_PRIMARYGROUPID</p> + </td> + <td> + <p>Cannot change the primary group ID of a domain controller account.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D1<br />STATUS_SYSTEM_IMAGE_BAD_SIGNATURE</p> + </td> + <td> + <p>{Fatal System Error} The system image %s is not properly signed. The file has been replaced with the signed file. The system has been shut down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D2<br />STATUS_PNP_REBOOT_REQUIRED</p> + </td> + <td> + <p>The device will not start without a reboot.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D3<br />STATUS_POWER_STATE_INVALID</p> + </td> + <td> + <p>The power state of the current device cannot support this request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D4<br />STATUS_DS_INVALID_GROUP_TYPE</p> + </td> + <td> + <p>The specified group type is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D5<br />STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN</p> + </td> + <td> + <p>In a mixed domain, no nesting of a global group if the group is security enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D6<br />STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN</p> + </td> + <td> + <p>In a mixed domain, cannot nest local groups with other local groups, if the group is security enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D7<br />STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER</p> + </td> + <td> + <p>A global group cannot have a local group as a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D8<br />STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER</p> + </td> + <td> + <p>A global group cannot have a universal group as a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002D9<br />STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER</p> + </td> + <td> + <p>A universal group cannot have a local group as a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DA<br />STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER</p> + </td> + <td> + <p>A global group cannot have a cross-domain member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DB<br />STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER</p> + </td> + <td> + <p>A local group cannot have another cross-domain local group as a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DC<br />STATUS_DS_HAVE_PRIMARY_MEMBERS</p> + </td> + <td> + <p>Cannot change to a security-disabled group because primary members are in this group.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DD<br />STATUS_WMI_NOT_SUPPORTED</p> + </td> + <td> + <p>The WMI operation is not supported by the data block or method.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DE<br />STATUS_INSUFFICIENT_POWER</p> + </td> + <td> + <p>There is not enough power to complete the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002DF<br />STATUS_SAM_NEED_BOOTKEY_PASSWORD</p> + </td> + <td> + <p>The Security Accounts Manager needs to get the boot password.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E0<br />STATUS_SAM_NEED_BOOTKEY_FLOPPY</p> + </td> + <td> + <p>The Security Accounts Manager needs to get the boot key from the floppy disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E1<br />STATUS_DS_CANT_START</p> + </td> + <td> + <p>The directory service cannot start.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E2<br />STATUS_DS_INIT_FAILURE</p> + </td> + <td> + <p>The directory service could not start because of the following error: %hs Error Status: 0x%x. Click OK to shut down this system and restart in Directory Services Restore Mode. Check the event log for more detailed information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E3<br />STATUS_SAM_INIT_FAILURE</p> + </td> + <td> + <p>The Security Accounts Manager initialization failed because of the following error: %hs Error Status: 0x%x. Click OK to shut down this system and restart in Safe Mode. Check the event log for more detailed information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E4<br />STATUS_DS_GC_REQUIRED</p> + </td> + <td> + <p>The requested operation can be performed only on a global catalog server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E5<br />STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY</p> + </td> + <td> + <p>A local group can only be a member of other local groups in the same domain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E6<br />STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS</p> + </td> + <td> + <p>Foreign security principals cannot be members of universal groups.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E7<br />STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED</p> + </td> + <td> + <p>Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002E9<br />STATUS_CURRENT_DOMAIN_NOT_ALLOWED</p> + </td> + <td> + <p>This operation cannot be performed on the current domain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002EA<br />STATUS_CANNOT_MAKE</p> + </td> + <td> + <p>The directory or file cannot be created.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002EB<br />STATUS_SYSTEM_SHUTDOWN</p> + </td> + <td> + <p>The system is in the process of shutting down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002EC<br />STATUS_DS_INIT_FAILURE_CONSOLE</p> + </td> + <td> + <p>Directory Services could not start because of the following error: %hs Error Status: 0x%x. Click OK to shut down the system. You can use the recovery console to diagnose the system further.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002ED<br />STATUS_DS_SAM_INIT_FAILURE_CONSOLE</p> + </td> + <td> + <p>Security Accounts Manager initialization failed because of the following error: %hs Error Status: 0x%x. Click OK to shut down the system. You can use the recovery console to diagnose the system further.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002EE<br />STATUS_UNFINISHED_CONTEXT_DELETED</p> + </td> + <td> + <p>A security context was deleted before the context was completed. This is considered a logon failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002EF<br />STATUS_NO_TGT_REPLY</p> + </td> + <td> + <p>The client is trying to negotiate a context and the server requires user-to-user but did not send a TGT reply.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F0<br />STATUS_OBJECTID_NOT_FOUND</p> + </td> + <td> + <p>An object ID was not found in the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F1<br />STATUS_NO_IP_ADDRESSES</p> + </td> + <td> + <p>Unable to accomplish the requested task because the local machine does not have any IP addresses.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F2<br />STATUS_WRONG_CREDENTIAL_HANDLE</p> + </td> + <td> + <p>The supplied credential handle does not match the credential that is associated with the security context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F3<br />STATUS_CRYPTO_SYSTEM_INVALID</p> + </td> + <td> + <p>The crypto system or checksum function is invalid because a required function is unavailable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F4<br />STATUS_MAX_REFERRALS_EXCEEDED</p> + </td> + <td> + <p>The number of maximum ticket referrals has been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F5<br />STATUS_MUST_BE_KDC</p> + </td> + <td> + <p>The local machine must be a Kerberos KDC (domain controller) and it is not.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F6<br />STATUS_STRONG_CRYPTO_NOT_SUPPORTED</p> + </td> + <td> + <p>The other end of the security negotiation requires strong crypto but it is not supported on the local machine.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F7<br />STATUS_TOO_MANY_PRINCIPALS</p> + </td> + <td> + <p>The KDC reply contained more than one principal name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F8<br />STATUS_NO_PA_DATA</p> + </td> + <td> + <p>Expected to find PA data for a hint of what etype to use, but it was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002F9<br />STATUS_PKINIT_NAME_MISMATCH</p> + </td> + <td> + <p>The client certificate does not contain a valid UPN, or does not match the client name in the logon request. Contact your administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FA<br />STATUS_SMARTCARD_LOGON_REQUIRED</p> + </td> + <td> + <p>Smart card logon is required and was not used.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FB<br />STATUS_KDC_INVALID_REQUEST</p> + </td> + <td> + <p>An invalid request was sent to the KDC.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FC<br />STATUS_KDC_UNABLE_TO_REFER</p> + </td> + <td> + <p>The KDC was unable to generate a referral for the service requested.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FD<br />STATUS_KDC_UNKNOWN_ETYPE</p> + </td> + <td> + <p>The encryption type requested is not supported by the KDC.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FE<br />STATUS_SHUTDOWN_IN_PROGRESS</p> + </td> + <td> + <p>A system shutdown is in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00002FF<br />STATUS_SERVER_SHUTDOWN_IN_PROGRESS</p> + </td> + <td> + <p>The server machine is shutting down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000300<br />STATUS_NOT_SUPPORTED_ON_SBS</p> + </td> + <td> + <p>This operation is not supported on a computer running Windows Server 2003 for Small Business Server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000301<br />STATUS_WMI_GUID_DISCONNECTED</p> + </td> + <td> + <p>The WMI GUID is no longer available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000302<br />STATUS_WMI_ALREADY_DISABLED</p> + </td> + <td> + <p>Collection or events for the WMI GUID is already disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000303<br />STATUS_WMI_ALREADY_ENABLED</p> + </td> + <td> + <p>Collection or events for the WMI GUID is already enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000304<br />STATUS_MFT_TOO_FRAGMENTED</p> + </td> + <td> + <p>The master file table on the volume is too fragmented to complete this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000305<br />STATUS_COPY_PROTECTION_FAILURE</p> + </td> + <td> + <p>Copy protection failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000306<br />STATUS_CSS_AUTHENTICATION_FAILURE</p> + </td> + <td> + <p>Copy protection error—DVD CSS Authentication failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000307<br />STATUS_CSS_KEY_NOT_PRESENT</p> + </td> + <td> + <p>Copy protection error—The specified sector does not contain a valid key.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000308<br />STATUS_CSS_KEY_NOT_ESTABLISHED</p> + </td> + <td> + <p>Copy protection error—DVD session key not established.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000309<br />STATUS_CSS_SCRAMBLED_SECTOR</p> + </td> + <td> + <p>Copy protection error—The read failed because the sector is encrypted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000030A<br />STATUS_CSS_REGION_MISMATCH</p> + </td> + <td> + <p>Copy protection error—The region of the specified DVD does not correspond to the region setting of the drive.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000030B<br />STATUS_CSS_RESETS_EXHAUSTED</p> + </td> + <td> + <p>Copy protection error—The region setting of the drive may be permanent.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000320<br />STATUS_PKINIT_FAILURE</p> + </td> + <td> + <p>The Kerberos protocol encountered an error while validating the KDC certificate during smart card logon. There is more information in the system event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000321<br />STATUS_SMARTCARD_SUBSYSTEM_FAILURE</p> + </td> + <td> + <p>The Kerberos protocol encountered an error while attempting to use the smart card subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000322<br />STATUS_NO_KERB_KEY</p> + </td> + <td> + <p>The target server does not have acceptable Kerberos credentials.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000350<br />STATUS_HOST_DOWN</p> + </td> + <td> + <p>The transport determined that the remote system is down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000351<br />STATUS_UNSUPPORTED_PREAUTH</p> + </td> + <td> + <p>An unsupported pre-authentication mechanism was presented to the Kerberos package.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000352<br />STATUS_EFS_ALG_BLOB_TOO_BIG</p> + </td> + <td> + <p>The encryption algorithm that is used on the source file needs a bigger key buffer than the one that is used on the destination file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000353<br />STATUS_PORT_NOT_SET</p> + </td> + <td> + <p>An attempt to remove a processes DebugPort was made, but a port was not already associated with the process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000354<br />STATUS_DEBUGGER_INACTIVE</p> + </td> + <td> + <p>An attempt to do an operation on a debug port failed because the port is in the process of being deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000355<br />STATUS_DS_VERSION_CHECK_FAILURE</p> + </td> + <td> + <p>This version of Windows is not compatible with the behavior version of the directory forest, domain, or domain controller.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000356<br />STATUS_AUDITING_DISABLED</p> + </td> + <td> + <p>The specified event is currently not being audited.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000357<br />STATUS_PRENT4_MACHINE_ACCOUNT</p> + </td> + <td> + <p>The machine account was created prior to Windows NT 4.0. The account needs to be recreated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000358<br />STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER</p> + </td> + <td> + <p>An account group cannot have a universal group as a member.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000359<br />STATUS_INVALID_IMAGE_WIN_32</p> + </td> + <td> + <p>The specified image file did not have the correct format; it appears to be a 32-bit Windows image.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035A<br />STATUS_INVALID_IMAGE_WIN_64</p> + </td> + <td> + <p>The specified image file did not have the correct format; it appears to be a 64-bit Windows image.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035B<br />STATUS_BAD_BINDINGS</p> + </td> + <td> + <p>The client's supplied SSPI channel bindings were incorrect.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035C<br />STATUS_NETWORK_SESSION_EXPIRED</p> + </td> + <td> + <p>The client session has expired; so the client must re-authenticate to continue accessing the remote resources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035D<br />STATUS_APPHELP_BLOCK</p> + </td> + <td> + <p>The AppHelp dialog box canceled; thus preventing the application from starting.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035E<br />STATUS_ALL_SIDS_FILTERED</p> + </td> + <td> + <p>The SID filtering operation removed all SIDs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000035F<br />STATUS_NOT_SAFE_MODE_DRIVER</p> + </td> + <td> + <p>The driver was not loaded because the system is starting in safe mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000361<br />STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT</p> + </td> + <td> + <p>Access to %1 has been restricted by your Administrator by the default software restriction policy level.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000362<br />STATUS_ACCESS_DISABLED_BY_POLICY_PATH</p> + </td> + <td> + <p>Access to %1 has been restricted by your Administrator by location with policy rule %2 placed on path %3.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000363<br />STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER</p> + </td> + <td> + <p>Access to %1 has been restricted by your Administrator by software publisher policy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000364<br />STATUS_ACCESS_DISABLED_BY_POLICY_OTHER</p> + </td> + <td> + <p>Access to %1 has been restricted by your Administrator by policy rule %2.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000365<br />STATUS_FAILED_DRIVER_ENTRY</p> + </td> + <td> + <p>The driver was not loaded because it failed its initialization call.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000366<br />STATUS_DEVICE_ENUMERATION_ERROR</p> + </td> + <td> + <p>The device encountered an error while applying power or reading the device configuration. This may be caused by a failure of your hardware or by a poor connection.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000368<br />STATUS_MOUNT_POINT_NOT_RESOLVED</p> + </td> + <td> + <p>The create operation failed because the name contained at least one mount point that resolves to a volume to which the specified device object is not attached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000369<br />STATUS_INVALID_DEVICE_OBJECT_PARAMETER</p> + </td> + <td> + <p>The device object parameter is either not a valid device object or is not attached to the volume that is specified by the file name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036A<br />STATUS_MCA_OCCURED</p> + </td> + <td> + <p>A machine check error has occurred. Check the system event log for additional information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036B<br />STATUS_DRIVER_BLOCKED_CRITICAL</p> + </td> + <td> + <p>Driver %2 has been blocked from loading.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036C<br />STATUS_DRIVER_BLOCKED</p> + </td> + <td> + <p>Driver %2 has been blocked from loading.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036D<br />STATUS_DRIVER_DATABASE_ERROR</p> + </td> + <td> + <p>There was error [%2] processing the driver database.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036E<br />STATUS_SYSTEM_HIVE_TOO_LARGE</p> + </td> + <td> + <p>System hive size has exceeded its limit.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000036F<br />STATUS_INVALID_IMPORT_OF_NON_DLL</p> + </td> + <td> + <p>A dynamic link library (DLL) referenced a module that was neither a DLL nor the process's executable image.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000371<br />STATUS_NO_SECRETS</p> + </td> + <td> + <p>The local account store does not contain secret material for the specified account.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000372<br />STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY</p> + </td> + <td> + <p>Access to %1 has been restricted by your Administrator by policy rule %2.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000373<br />STATUS_FAILED_STACK_SWITCH</p> + </td> + <td> + <p>The system was not able to allocate enough memory to perform a stack switch.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000374<br />STATUS_HEAP_CORRUPTION</p> + </td> + <td> + <p>A heap has been corrupted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000380<br />STATUS_SMARTCARD_WRONG_PIN</p> + </td> + <td> + <p>An incorrect PIN was presented to the smart card.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000381<br />STATUS_SMARTCARD_CARD_BLOCKED</p> + </td> + <td> + <p>The smart card is blocked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000382<br />STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED</p> + </td> + <td> + <p>No PIN was presented to the smart card.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000383<br />STATUS_SMARTCARD_NO_CARD</p> + </td> + <td> + <p>No smart card is available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000384<br />STATUS_SMARTCARD_NO_KEY_CONTAINER</p> + </td> + <td> + <p>The requested key container does not exist on the smart card.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000385<br />STATUS_SMARTCARD_NO_CERTIFICATE</p> + </td> + <td> + <p>The requested certificate does not exist on the smart card.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000386<br />STATUS_SMARTCARD_NO_KEYSET</p> + </td> + <td> + <p>The requested keyset does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000387<br />STATUS_SMARTCARD_IO_ERROR</p> + </td> + <td> + <p>A communication error with the smart card has been detected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000388<br />STATUS_DOWNGRADE_DETECTED</p> + </td> + <td> + <p>The system detected a possible attempt to compromise security. Ensure that you can contact the server that authenticated you.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000389<br />STATUS_SMARTCARD_CERT_REVOKED</p> + </td> + <td> + <p>The smart card certificate used for authentication has been revoked. Contact your system administrator. There may be additional information in the event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038A<br />STATUS_ISSUING_CA_UNTRUSTED</p> + </td> + <td> + <p>An untrusted certificate authority was detected while processing the smart card certificate that is used for authentication. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038B<br />STATUS_REVOCATION_OFFLINE_C</p> + </td> + <td> + <p>The revocation status of the smart card certificate that is used for authentication could not be determined. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038C<br />STATUS_PKINIT_CLIENT_FAILURE</p> + </td> + <td> + <p>The smart card certificate used for authentication was not trusted. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038D<br />STATUS_SMARTCARD_CERT_EXPIRED</p> + </td> + <td> + <p>The smart card certificate used for authentication has expired. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038E<br />STATUS_DRIVER_FAILED_PRIOR_UNLOAD</p> + </td> + <td> + <p>The driver could not be loaded because a previous version of the driver is still in memory.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000038F<br />STATUS_SMARTCARD_SILENT_CONTEXT</p> + </td> + <td> + <p>The smart card provider could not perform the action because the context was acquired as silent.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000401<br />STATUS_PER_USER_TRUST_QUOTA_EXCEEDED</p> + </td> + <td> + <p>The delegated trust creation quota of the current user has been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000402<br />STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED</p> + </td> + <td> + <p>The total delegated trust creation quota has been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000403<br />STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED</p> + </td> + <td> + <p>The delegated trust deletion quota of the current user has been exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000404<br />STATUS_DS_NAME_NOT_UNIQUE</p> + </td> + <td> + <p>The requested name already exists as a unique identifier.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000405<br />STATUS_DS_DUPLICATE_ID_FOUND</p> + </td> + <td> + <p>The requested object has a non-unique identifier and cannot be retrieved.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000406<br />STATUS_DS_GROUP_CONVERSION_ERROR</p> + </td> + <td> + <p>The group cannot be converted due to attribute restrictions on the requested group type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000407<br />STATUS_VOLSNAP_PREPARE_HIBERNATE</p> + </td> + <td> + <p>{Volume Shadow Copy Service} Wait while the Volume Shadow Copy Service prepares volume %hs for hibernation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000408<br />STATUS_USER2USER_REQUIRED</p> + </td> + <td> + <p>Kerberos sub-protocol User2User is required.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000409<br />STATUS_STACK_BUFFER_OVERRUN</p> + </td> + <td> + <p>The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040A<br />STATUS_NO_S4U_PROT_SUPPORT</p> + </td> + <td> + <p>The Kerberos subsystem encountered an error. A service for user protocol request was made against a domain controller which does not support service for user.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040B<br />STATUS_CROSSREALM_DELEGATION_FAILURE</p> + </td> + <td> + <p>An attempt was made by this server to make a Kerberos constrained delegation request for a target that is outside the server realm. This action is not supported and the resulting error indicates a misconfiguration on the allowed-to-delegate-to list for this server. Contact your administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040C<br />STATUS_REVOCATION_OFFLINE_KDC</p> + </td> + <td> + <p>The revocation status of the domain controller certificate used for smart card authentication could not be determined. There is additional information in the system event log. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040D<br />STATUS_ISSUING_CA_UNTRUSTED_KDC</p> + </td> + <td> + <p>An untrusted certificate authority was detected while processing the domain controller certificate used for authentication. There is additional information in the system event log. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040E<br />STATUS_KDC_CERT_EXPIRED</p> + </td> + <td> + <p>The domain controller certificate used for smart card logon has expired. Contact your system administrator with the contents of your system event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000040F<br />STATUS_KDC_CERT_REVOKED</p> + </td> + <td> + <p>The domain controller certificate used for smart card logon has been revoked. Contact your system administrator with the contents of your system event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000410<br />STATUS_PARAMETER_QUOTA_EXCEEDED</p> + </td> + <td> + <p>Data present in one of the parameters is more than the function can operate on.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000411<br />STATUS_HIBERNATION_FAILURE</p> + </td> + <td> + <p>The system has failed to hibernate (The error code is %hs). Hibernation will be disabled until the system is restarted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000412<br />STATUS_DELAY_LOAD_FAILED</p> + </td> + <td> + <p>An attempt to delay-load a .dll or get a function address in a delay-loaded .dll failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000413<br />STATUS_AUTHENTICATION_FIREWALL_FAILED</p> + </td> + <td> + <p>Logon Failure: The machine you are logging onto is protected by an authentication firewall. The specified account is not allowed to authenticate to the machine.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000414<br />STATUS_VDM_DISALLOWED</p> + </td> + <td> + <p>%hs is a 16-bit application. You do not have permissions to execute 16-bit applications. Check your permissions with your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000415<br />STATUS_HUNG_DISPLAY_DRIVER_THREAD</p> + </td> + <td> + <p>{Display Driver Stopped Responding} The %hs display driver has stopped working normally. Save your work and reboot the system to restore full display functionality. The next time you reboot the machine a dialog will be displayed giving you a chance to report this failure to Microsoft.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000416<br />STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE</p> + </td> + <td> + <p>The Desktop heap encountered an error while allocating session memory. There is more information in the system event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000417<br />STATUS_INVALID_CRUNTIME_PARAMETER</p> + </td> + <td> + <p>An invalid parameter was passed to a C runtime function.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000418<br />STATUS_NTLM_BLOCKED</p> + </td> + <td> + <p>The authentication failed because NTLM was blocked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000419<br />STATUS_DS_SRC_SID_EXISTS_IN_FOREST</p> + </td> + <td> + <p>The source object's SID already exists in destination forest.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000041A<br />STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST</p> + </td> + <td> + <p>The domain name of the trusted domain already exists in the forest.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000041B<br />STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST</p> + </td> + <td> + <p>The flat name of the trusted domain already exists in the forest.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000041C<br />STATUS_INVALID_USER_PRINCIPAL_NAME</p> + </td> + <td> + <p>The User Principal Name (UPN) is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000420<br />STATUS_ASSERTION_FAILURE</p> + </td> + <td> + <p>There has been an assertion failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000421<br />STATUS_VERIFIER_STOP</p> + </td> + <td> + <p>Application verifier has found an error in the current process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000423<br />STATUS_CALLBACK_POP_STACK</p> + </td> + <td> + <p>A user mode unwind is in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000424<br />STATUS_INCOMPATIBLE_DRIVER_BLOCKED</p> + </td> + <td> + <p>%2 has been blocked from loading due to incompatibility with this system. Contact your software vendor for a compatible version of the driver.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000425<br />STATUS_HIVE_UNLOADED</p> + </td> + <td> + <p>Illegal operation attempted on a registry key which has already been unloaded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000426<br />STATUS_COMPRESSION_DISABLED</p> + </td> + <td> + <p>Compression is disabled for this volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000427<br />STATUS_FILE_SYSTEM_LIMITATION</p> + </td> + <td> + <p>The requested operation could not be completed due to a file system limitation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000428<br />STATUS_INVALID_IMAGE_HASH</p> + </td> + <td> + <p>The hash for image %hs cannot be found in the system catalogs. The image is likely corrupt or the victim of tampering.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000429<br />STATUS_NOT_CAPABLE</p> + </td> + <td> + <p>The implementation is not capable of performing the request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000042A<br />STATUS_REQUEST_OUT_OF_SEQUENCE</p> + </td> + <td> + <p>The requested operation is out of order with respect to other operations.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000042B<br />STATUS_IMPLEMENTATION_LIMIT</p> + </td> + <td> + <p>An operation attempted to exceed an implementation-defined limit.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000042C<br />STATUS_ELEVATION_REQUIRED</p> + </td> + <td> + <p>The requested operation requires elevation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000042D<br />STATUS_NO_SECURITY_CONTEXT</p> + </td> + <td> + <p>The required security context does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000042E<br />STATUS_PKU2U_CERT_FAILURE</p> + </td> + <td> + <p>The PKU2U protocol encountered an error while attempting to utilize the associated certificates.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000432<br />STATUS_BEYOND_VDL</p> + </td> + <td> + <p>The operation was attempted beyond the valid data length of the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000433<br />STATUS_ENCOUNTERED_WRITE_IN_PROGRESS</p> + </td> + <td> + <p>The attempted write operation encountered a write already in progress for some portion of the range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000434<br />STATUS_PTE_CHANGED</p> + </td> + <td> + <p>The page fault mappings changed in the middle of processing a fault so the operation must be retried.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000435<br />STATUS_PURGE_FAILED</p> + </td> + <td> + <p>The attempt to purge this file from memory failed to purge some or all the data from memory.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000440<br />STATUS_CRED_REQUIRES_CONFIRMATION</p> + </td> + <td> + <p>The requested credential requires confirmation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000441<br />STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE</p> + </td> + <td> + <p>The remote server sent an invalid response for a file being opened with Client Side Encryption.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000442<br />STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER</p> + </td> + <td> + <p>Client Side Encryption is not supported by the remote server even though it claims to support it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000443<br />STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE</p> + </td> + <td> + <p>File is encrypted and should be opened in Client Side Encryption mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000444<br />STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE</p> + </td> + <td> + <p>A new encrypted file is being created and a $EFS needs to be provided.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000445<br />STATUS_CS_ENCRYPTION_FILE_NOT_CSE</p> + </td> + <td> + <p>The SMB client requested a CSE FSCTL on a non-CSE file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000446<br />STATUS_INVALID_LABEL</p> + </td> + <td> + <p>Indicates a particular Security ID may not be assigned as the label of an object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000450<br />STATUS_DRIVER_PROCESS_TERMINATED</p> + </td> + <td> + <p>The process hosting the driver for this device has terminated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000451<br />STATUS_AMBIGUOUS_SYSTEM_DEVICE</p> + </td> + <td> + <p>The requested system device cannot be identified due to multiple indistinguishable devices potentially matching the identification criteria.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000452<br />STATUS_SYSTEM_DEVICE_NOT_FOUND</p> + </td> + <td> + <p>The requested system device cannot be found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000453<br />STATUS_RESTART_BOOT_APPLICATION</p> + </td> + <td> + <p>This boot application must be restarted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000454<br />STATUS_INSUFFICIENT_NVRAM_RESOURCES</p> + </td> + <td> + <p>Insufficient NVRAM resources exist to complete the API. A reboot might be required.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000460<br />STATUS_NO_RANGES_PROCESSED</p> + </td> + <td> + <p>No ranges for the specified operation were able to be processed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000463<br />STATUS_DEVICE_FEATURE_NOT_SUPPORTED</p> + </td> + <td> + <p>The storage device does not support Offload Write.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000464<br />STATUS_DEVICE_UNREACHABLE</p> + </td> + <td> + <p>Data cannot be moved because the source device cannot communicate with the destination device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000465<br />STATUS_INVALID_TOKEN</p> + </td> + <td> + <p>The token representing the data is invalid or expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000500<br />STATUS_INVALID_TASK_NAME</p> + </td> + <td> + <p>The specified task name is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000501<br />STATUS_INVALID_TASK_INDEX</p> + </td> + <td> + <p>The specified task index is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000502<br />STATUS_THREAD_ALREADY_IN_TASK</p> + </td> + <td> + <p>The specified thread is already joining a task.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000503<br />STATUS_CALLBACK_BYPASS</p> + </td> + <td> + <p>A callback has requested to bypass native code.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000602<br />STATUS_FAIL_FAST_EXCEPTION</p> + </td> + <td> + <p>A fail fast exception occurred. Exception handlers will not be invoked and the process will be terminated immediately.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000603<br />STATUS_IMAGE_CERT_REVOKED</p> + </td> + <td> + <p>Windows cannot verify the digital signature for this file. The signing certificate for this file has been revoked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000700<br />STATUS_PORT_CLOSED</p> + </td> + <td> + <p>The ALPC port is closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000701<br />STATUS_MESSAGE_LOST</p> + </td> + <td> + <p>The ALPC message requested is no longer available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000702<br />STATUS_INVALID_MESSAGE</p> + </td> + <td> + <p>The ALPC message supplied is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000703<br />STATUS_REQUEST_CANCELED</p> + </td> + <td> + <p>The ALPC message has been canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000704<br />STATUS_RECURSIVE_DISPATCH</p> + </td> + <td> + <p>Invalid recursive dispatch attempt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000705<br />STATUS_LPC_RECEIVE_BUFFER_EXPECTED</p> + </td> + <td> + <p>No receive buffer has been supplied in a synchronous request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000706<br />STATUS_LPC_INVALID_CONNECTION_USAGE</p> + </td> + <td> + <p>The connection port is used in an invalid context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000707<br />STATUS_LPC_REQUESTS_NOT_ALLOWED</p> + </td> + <td> + <p>The ALPC port does not accept new request messages.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000708<br />STATUS_RESOURCE_IN_USE</p> + </td> + <td> + <p>The resource requested is already in use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000709<br />STATUS_HARDWARE_MEMORY_ERROR</p> + </td> + <td> + <p>The hardware has reported an uncorrectable memory error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070A<br />STATUS_THREADPOOL_HANDLE_EXCEPTION</p> + </td> + <td> + <p>Status 0x%08x was returned, waiting on handle 0x%x for wait 0x%p, in waiter 0x%p.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070B<br />STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED</p> + </td> + <td> + <p>After a callback to 0x%p(0x%p), a completion call to Set event(0x%p) failed with status 0x%08x.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070C<br />STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED</p> + </td> + <td> + <p>After a callback to 0x%p(0x%p), a completion call to ReleaseSemaphore(0x%p, %d) failed with status 0x%08x.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070D<br />STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED</p> + </td> + <td> + <p>After a callback to 0x%p(0x%p), a completion call to ReleaseMutex(%p) failed with status 0x%08x.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070E<br />STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED</p> + </td> + <td> + <p>After a callback to 0x%p(0x%p), a completion call to FreeLibrary(%p) failed with status 0x%08x.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000070F<br />STATUS_THREADPOOL_RELEASED_DURING_OPERATION</p> + </td> + <td> + <p>The thread pool 0x%p was released while a thread was posting a callback to 0x%p(0x%p) to it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000710<br />STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING</p> + </td> + <td> + <p>A thread pool worker thread is impersonating a client, after a callback to 0x%p(0x%p). This is unexpected, indicating that the callback is missing a call to revert the impersonation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000711<br />STATUS_APC_RETURNED_WHILE_IMPERSONATING</p> + </td> + <td> + <p>A thread pool worker thread is impersonating a client, after executing an APC. This is unexpected, indicating that the APC is missing a call to revert the impersonation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000712<br />STATUS_PROCESS_IS_PROTECTED</p> + </td> + <td> + <p>Either the target process, or the target thread's containing process, is a protected process.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000713<br />STATUS_MCA_EXCEPTION</p> + </td> + <td> + <p>A thread is getting dispatched with MCA EXCEPTION because of MCA.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000714<br />STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE</p> + </td> + <td> + <p>The client certificate account mapping is not unique.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000715<br />STATUS_SYMLINK_CLASS_DISABLED</p> + </td> + <td> + <p>The symbolic link cannot be followed because its type is disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000716<br />STATUS_INVALID_IDN_NORMALIZATION</p> + </td> + <td> + <p>Indicates that the specified string is not valid for IDN normalization.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000717<br />STATUS_NO_UNICODE_TRANSLATION</p> + </td> + <td> + <p>No mapping for the Unicode character exists in the target multi-byte code page.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000718<br />STATUS_ALREADY_REGISTERED</p> + </td> + <td> + <p>The provided callback is already registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000719<br />STATUS_CONTEXT_MISMATCH</p> + </td> + <td> + <p>The provided context did not match the target.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071A<br />STATUS_PORT_ALREADY_HAS_COMPLETION_LIST</p> + </td> + <td> + <p>The specified port already has a completion list.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071B<br />STATUS_CALLBACK_RETURNED_THREAD_PRIORITY</p> + </td> + <td> + <p>A threadpool worker thread entered a callback at thread base priority 0x%x and exited at priority 0x%x.</p> + <p>This is unexpected, indicating that the callback missed restoring the priority.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071C<br />STATUS_INVALID_THREAD</p> + </td> + <td> + <p>An invalid thread, handle %p, is specified for this operation. Possibly, a threadpool worker thread was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071D<br />STATUS_CALLBACK_RETURNED_TRANSACTION</p> + </td> + <td> + <p>A threadpool worker thread entered a callback, which left transaction state.</p> + <p>This is unexpected, indicating that the callback missed clearing the transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071E<br />STATUS_CALLBACK_RETURNED_LDR_LOCK</p> + </td> + <td> + <p>A threadpool worker thread entered a callback, which left the loader lock held.</p> + <p>This is unexpected, indicating that the callback missed releasing the lock.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000071F<br />STATUS_CALLBACK_RETURNED_LANG</p> + </td> + <td> + <p>A threadpool worker thread entered a callback, which left with preferred languages set.</p> + <p>This is unexpected, indicating that the callback missed clearing them.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000720<br />STATUS_CALLBACK_RETURNED_PRI_BACK</p> + </td> + <td> + <p>A threadpool worker thread entered a callback, which left with background priorities set.</p> + <p>This is unexpected, indicating that the callback missed restoring the original priorities.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000800<br />STATUS_DISK_REPAIR_DISABLED</p> + </td> + <td> + <p>The attempted operation required self healing to be enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000801<br />STATUS_DS_DOMAIN_RENAME_IN_PROGRESS</p> + </td> + <td> + <p>The directory service cannot perform the requested operation because a domain rename operation is in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000802<br />STATUS_DISK_QUOTA_EXCEEDED</p> + </td> + <td> + <p>An operation failed because the storage quota was exceeded.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000804<br />STATUS_CONTENT_BLOCKED</p> + </td> + <td> + <p>An operation failed because the content was blocked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000805<br />STATUS_BAD_CLUSTERS</p> + </td> + <td> + <p>The operation could not be completed due to bad clusters on disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000806<br />STATUS_VOLUME_DIRTY</p> + </td> + <td> + <p>The operation could not be completed because the volume is dirty. Please run the Chkdsk utility and try again. </p> + </td> + </tr> + <tr> + <td> + <p>0xC0000901<br />STATUS_FILE_CHECKED_OUT</p> + </td> + <td> + <p>This file is checked out or locked for editing by another user.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000902<br />STATUS_CHECKOUT_REQUIRED</p> + </td> + <td> + <p>The file must be checked out before saving changes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000903<br />STATUS_BAD_FILE_TYPE</p> + </td> + <td> + <p>The file type being saved or retrieved has been blocked.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000904<br />STATUS_FILE_TOO_LARGE</p> + </td> + <td> + <p>The file size exceeds the limit allowed and cannot be saved.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000905<br />STATUS_FORMS_AUTH_REQUIRED</p> + </td> + <td> + <p>Access Denied. Before opening files in this location, you must first browse to the e.g. site and select the option to log on automatically.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000906<br />STATUS_VIRUS_INFECTED</p> + </td> + <td> + <p>The operation did not complete successfully because the file contains a virus.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000907<br />STATUS_VIRUS_DELETED</p> + </td> + <td> + <p>This file contains a virus and cannot be opened. Due to the nature of this virus, the file has been removed from this location.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000908<br />STATUS_BAD_MCFG_TABLE</p> + </td> + <td> + <p>The resources required for this device conflict with the MCFG table.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0000909<br />STATUS_CANNOT_BREAK_OPLOCK</p> + </td> + <td> + <p>The operation did not complete successfully because it would cause an oplock to be broken. The caller has requested that existing oplocks not be broken.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0009898<br />STATUS_WOW_ASSERTION</p> + </td> + <td> + <p>WOW Assertion Error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A000<br />STATUS_INVALID_SIGNATURE</p> + </td> + <td> + <p>The cryptographic signature is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A001<br />STATUS_HMAC_NOT_SUPPORTED</p> + </td> + <td> + <p>The cryptographic provider does not support HMAC.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A010<br />STATUS_IPSEC_QUEUE_OVERFLOW</p> + </td> + <td> + <p>The IPsec queue overflowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A011<br />STATUS_ND_QUEUE_OVERFLOW</p> + </td> + <td> + <p>The neighbor discovery queue overflowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A012<br />STATUS_HOPLIMIT_EXCEEDED</p> + </td> + <td> + <p>An Internet Control Message Protocol (ICMP) hop limit exceeded error was received.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A013<br />STATUS_PROTOCOL_NOT_SUPPORTED</p> + </td> + <td> + <p>The protocol is not installed on the local machine.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A080<br />STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED</p> + </td> + <td> + <p>{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error may be caused by network connectivity issues. Try to save this file elsewhere.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A081<br />STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR</p> + </td> + <td> + <p>{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error was returned by the server on which the file exists. Try to save this file elsewhere.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A082<br />STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR</p> + </td> + <td> + <p>{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error may be caused if the device has been removed or the media is write-protected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A083<br />STATUS_XML_PARSE_ERROR</p> + </td> + <td> + <p>Windows was unable to parse the requested XML data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A084<br />STATUS_XMLDSIG_ERROR</p> + </td> + <td> + <p>An error was encountered while processing an XML digital signature.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A085<br />STATUS_WRONG_COMPARTMENT</p> + </td> + <td> + <p>This indicates that the caller made the connection request in the wrong routing compartment.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A086<br />STATUS_AUTHIP_FAILURE</p> + </td> + <td> + <p>This indicates that there was an AuthIP failure when attempting to connect to the remote host.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A087<br />STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS</p> + </td> + <td> + <p>OID mapped groups cannot have members.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A088<br />STATUS_DS_OID_NOT_FOUND</p> + </td> + <td> + <p>The specified OID cannot be found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A100<br />STATUS_HASH_NOT_SUPPORTED</p> + </td> + <td> + <p>Hash generation for the specified version and hash type is not enabled on server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A101<br />STATUS_HASH_NOT_PRESENT</p> + </td> + <td> + <p>The hash requests is not present or not up to date with the current file contents.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A2A1<br />STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED</p> + </td> + <td> + <p>A file system filter on the server has not opted in for Offload Read support.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A2A2<br />STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED</p> + </td> + <td> + <p>A file system filter on the server has not opted in for Offload Write support.</p> + </td> + </tr> + <tr> + <td> + <p>0xC000A2A3<br />STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED</p> + </td> + <td> + <p>Offload read operations cannot be performed on:</p> + <ul> + <li class="unordered"> + <p class="BulletedList">Compressed files</p> + </li> + <li class="unordered"> + <p class="BulletedList">Sparse files</p> + </li> + <li class="unordered"> + <p class="BulletedList">Encrypted files</p> + </li> + <li class="unordered"> + <p class="BulletedList">File system metadata files</p> + </li> + </ul> + </td> + </tr> + <tr> + <td> + <p>0xC000A2A4<br />STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED</p> + </td> + <td> + <p>Offload write operations cannot be performed on:</p> + <ul> + <li class="unordered"> + <p class="BulletedList">Compressed files</p> + </li> + <li class="unordered"> + <p class="BulletedList">Sparse files</p> + </li> + <li class="unordered"> + <p class="BulletedList">Encrypted files</p> + </li> + <li class="unordered"> + <p class="BulletedList">File system metadata files</p> + </li> + </ul> + </td> + </tr> + <tr> + <td> + <p>0xC0010001<br />DBG_NO_STATE_CHANGE</p> + </td> + <td> + <p>The debugger did not perform a state change.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0010002<br />DBG_APP_NOT_IDLE</p> + </td> + <td> + <p>The debugger found that the application is not idle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020001<br />RPC_NT_INVALID_STRING_BINDING</p> + </td> + <td> + <p>The string binding is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020002<br />RPC_NT_WRONG_KIND_OF_BINDING</p> + </td> + <td> + <p>The binding handle is not the correct type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020003<br />RPC_NT_INVALID_BINDING</p> + </td> + <td> + <p>The binding handle is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020004<br />RPC_NT_PROTSEQ_NOT_SUPPORTED</p> + </td> + <td> + <p>The RPC protocol sequence is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020005<br />RPC_NT_INVALID_RPC_PROTSEQ</p> + </td> + <td> + <p>The RPC protocol sequence is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020006<br />RPC_NT_INVALID_STRING_UUID</p> + </td> + <td> + <p>The string UUID is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020007<br />RPC_NT_INVALID_ENDPOINT_FORMAT</p> + </td> + <td> + <p>The endpoint format is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020008<br />RPC_NT_INVALID_NET_ADDR</p> + </td> + <td> + <p>The network address is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020009<br />RPC_NT_NO_ENDPOINT_FOUND</p> + </td> + <td> + <p>No endpoint was found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000A<br />RPC_NT_INVALID_TIMEOUT</p> + </td> + <td> + <p>The time-out value is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000B<br />RPC_NT_OBJECT_NOT_FOUND</p> + </td> + <td> + <p>The object UUID was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000C<br />RPC_NT_ALREADY_REGISTERED</p> + </td> + <td> + <p>The object UUID has already been registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000D<br />RPC_NT_TYPE_ALREADY_REGISTERED</p> + </td> + <td> + <p>The type UUID has already been registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000E<br />RPC_NT_ALREADY_LISTENING</p> + </td> + <td> + <p>The RPC server is already listening.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002000F<br />RPC_NT_NO_PROTSEQS_REGISTERED</p> + </td> + <td> + <p>No protocol sequences have been registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020010<br />RPC_NT_NOT_LISTENING</p> + </td> + <td> + <p>The RPC server is not listening.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020011<br />RPC_NT_UNKNOWN_MGR_TYPE</p> + </td> + <td> + <p>The manager type is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020012<br />RPC_NT_UNKNOWN_IF</p> + </td> + <td> + <p>The interface is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020013<br />RPC_NT_NO_BINDINGS</p> + </td> + <td> + <p>There are no bindings.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020014<br />RPC_NT_NO_PROTSEQS</p> + </td> + <td> + <p>There are no protocol sequences.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020015<br />RPC_NT_CANT_CREATE_ENDPOINT</p> + </td> + <td> + <p>The endpoint cannot be created.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020016<br />RPC_NT_OUT_OF_RESOURCES</p> + </td> + <td> + <p>Insufficient resources are available to complete this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020017<br />RPC_NT_SERVER_UNAVAILABLE</p> + </td> + <td> + <p>The RPC server is unavailable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020018<br />RPC_NT_SERVER_TOO_BUSY</p> + </td> + <td> + <p>The RPC server is too busy to complete this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020019<br />RPC_NT_INVALID_NETWORK_OPTIONS</p> + </td> + <td> + <p>The network options are invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002001A<br />RPC_NT_NO_CALL_ACTIVE</p> + </td> + <td> + <p>No RPCs are active on this thread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002001B<br />RPC_NT_CALL_FAILED</p> + </td> + <td> + <p>The RPC failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002001C<br />RPC_NT_CALL_FAILED_DNE</p> + </td> + <td> + <p>The RPC failed and did not execute.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002001D<br />RPC_NT_PROTOCOL_ERROR</p> + </td> + <td> + <p>An RPC protocol error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002001F<br />RPC_NT_UNSUPPORTED_TRANS_SYN</p> + </td> + <td> + <p>The RPC server does not support the transfer syntax.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020021<br />RPC_NT_UNSUPPORTED_TYPE</p> + </td> + <td> + <p>The type UUID is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020022<br />RPC_NT_INVALID_TAG</p> + </td> + <td> + <p>The tag is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020023<br />RPC_NT_INVALID_BOUND</p> + </td> + <td> + <p>The array bounds are invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020024<br />RPC_NT_NO_ENTRY_NAME</p> + </td> + <td> + <p>The binding does not contain an entry name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020025<br />RPC_NT_INVALID_NAME_SYNTAX</p> + </td> + <td> + <p>The name syntax is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020026<br />RPC_NT_UNSUPPORTED_NAME_SYNTAX</p> + </td> + <td> + <p>The name syntax is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020028<br />RPC_NT_UUID_NO_ADDRESS</p> + </td> + <td> + <p>No network address is available to construct a UUID.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020029<br />RPC_NT_DUPLICATE_ENDPOINT</p> + </td> + <td> + <p>The endpoint is a duplicate.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002A<br />RPC_NT_UNKNOWN_AUTHN_TYPE</p> + </td> + <td> + <p>The authentication type is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002B<br />RPC_NT_MAX_CALLS_TOO_SMALL</p> + </td> + <td> + <p>The maximum number of calls is too small.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002C<br />RPC_NT_STRING_TOO_LONG</p> + </td> + <td> + <p>The string is too long.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002D<br />RPC_NT_PROTSEQ_NOT_FOUND</p> + </td> + <td> + <p>The RPC protocol sequence was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002E<br />RPC_NT_PROCNUM_OUT_OF_RANGE</p> + </td> + <td> + <p>The procedure number is out of range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002002F<br />RPC_NT_BINDING_HAS_NO_AUTH</p> + </td> + <td> + <p>The binding does not contain any authentication information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020030<br />RPC_NT_UNKNOWN_AUTHN_SERVICE</p> + </td> + <td> + <p>The authentication service is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020031<br />RPC_NT_UNKNOWN_AUTHN_LEVEL</p> + </td> + <td> + <p>The authentication level is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020032<br />RPC_NT_INVALID_AUTH_IDENTITY</p> + </td> + <td> + <p>The security context is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020033<br />RPC_NT_UNKNOWN_AUTHZ_SERVICE</p> + </td> + <td> + <p>The authorization service is unknown.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020034<br />EPT_NT_INVALID_ENTRY</p> + </td> + <td> + <p>The entry is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020035<br />EPT_NT_CANT_PERFORM_OP</p> + </td> + <td> + <p>The operation cannot be performed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020036<br />EPT_NT_NOT_REGISTERED</p> + </td> + <td> + <p>No more endpoints are available from the endpoint mapper.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020037<br />RPC_NT_NOTHING_TO_EXPORT</p> + </td> + <td> + <p>No interfaces have been exported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020038<br />RPC_NT_INCOMPLETE_NAME</p> + </td> + <td> + <p>The entry name is incomplete.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020039<br />RPC_NT_INVALID_VERS_OPTION</p> + </td> + <td> + <p>The version option is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003A<br />RPC_NT_NO_MORE_MEMBERS</p> + </td> + <td> + <p>There are no more members.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003B<br />RPC_NT_NOT_ALL_OBJS_UNEXPORTED</p> + </td> + <td> + <p>There is nothing to unexport.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003C<br />RPC_NT_INTERFACE_NOT_FOUND</p> + </td> + <td> + <p>The interface was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003D<br />RPC_NT_ENTRY_ALREADY_EXISTS</p> + </td> + <td> + <p>The entry already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003E<br />RPC_NT_ENTRY_NOT_FOUND</p> + </td> + <td> + <p>The entry was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002003F<br />RPC_NT_NAME_SERVICE_UNAVAILABLE</p> + </td> + <td> + <p>The name service is unavailable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020040<br />RPC_NT_INVALID_NAF_ID</p> + </td> + <td> + <p>The network address family is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020041<br />RPC_NT_CANNOT_SUPPORT</p> + </td> + <td> + <p>The requested operation is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020042<br />RPC_NT_NO_CONTEXT_AVAILABLE</p> + </td> + <td> + <p>No security context is available to allow impersonation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020043<br />RPC_NT_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error occurred in the RPC.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020044<br />RPC_NT_ZERO_DIVIDE</p> + </td> + <td> + <p>The RPC server attempted to divide an integer by zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020045<br />RPC_NT_ADDRESS_ERROR</p> + </td> + <td> + <p>An addressing error occurred in the RPC server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020046<br />RPC_NT_FP_DIV_ZERO</p> + </td> + <td> + <p>A floating point operation at the RPC server caused a divide by zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020047<br />RPC_NT_FP_UNDERFLOW</p> + </td> + <td> + <p>A floating point underflow occurred at the RPC server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020048<br />RPC_NT_FP_OVERFLOW</p> + </td> + <td> + <p>A floating point overflow occurred at the RPC server.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020049<br />RPC_NT_CALL_IN_PROGRESS</p> + </td> + <td> + <p>An RPC is already in progress for this thread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002004A<br />RPC_NT_NO_MORE_BINDINGS</p> + </td> + <td> + <p>There are no more bindings.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002004B<br />RPC_NT_GROUP_MEMBER_NOT_FOUND</p> + </td> + <td> + <p>The group member was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002004C<br />EPT_NT_CANT_CREATE</p> + </td> + <td> + <p>The endpoint mapper database entry could not be created.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002004D<br />RPC_NT_INVALID_OBJECT</p> + </td> + <td> + <p>The object UUID is the nil UUID.</p> + </td> + </tr> + <tr> + <td> + <p>0xC002004F<br />RPC_NT_NO_INTERFACES</p> + </td> + <td> + <p>No interfaces have been registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020050<br />RPC_NT_CALL_CANCELLED</p> + </td> + <td> + <p>The RPC was canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020051<br />RPC_NT_BINDING_INCOMPLETE</p> + </td> + <td> + <p>The binding handle does not contain all the required information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020052<br />RPC_NT_COMM_FAILURE</p> + </td> + <td> + <p>A communications failure occurred during an RPC.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020053<br />RPC_NT_UNSUPPORTED_AUTHN_LEVEL</p> + </td> + <td> + <p>The requested authentication level is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020054<br />RPC_NT_NO_PRINC_NAME</p> + </td> + <td> + <p>No principal name was registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020055<br />RPC_NT_NOT_RPC_ERROR</p> + </td> + <td> + <p>The error specified is not a valid Windows RPC error code.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020057<br />RPC_NT_SEC_PKG_ERROR</p> + </td> + <td> + <p>A security package-specific error occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020058<br />RPC_NT_NOT_CANCELLED</p> + </td> + <td> + <p>The thread was not canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020062<br />RPC_NT_INVALID_ASYNC_HANDLE</p> + </td> + <td> + <p>Invalid asynchronous RPC handle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020063<br />RPC_NT_INVALID_ASYNC_CALL</p> + </td> + <td> + <p>Invalid asynchronous RPC call handle for this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0020064<br />RPC_NT_PROXY_ACCESS_DENIED</p> + </td> + <td> + <p>Access to the HTTP proxy is denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030001<br />RPC_NT_NO_MORE_ENTRIES</p> + </td> + <td> + <p>The list of RPC servers available for auto-handle binding has been exhausted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030002<br />RPC_NT_SS_CHAR_TRANS_OPEN_FAIL</p> + </td> + <td> + <p>The file designated by DCERPCCHARTRANS cannot be opened.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030003<br />RPC_NT_SS_CHAR_TRANS_SHORT_FILE</p> + </td> + <td> + <p>The file containing the character translation table has fewer than 512 bytes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030004<br />RPC_NT_SS_IN_NULL_CONTEXT</p> + </td> + <td> + <p>A null context handle is passed as an [in] parameter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030005<br />RPC_NT_SS_CONTEXT_MISMATCH</p> + </td> + <td> + <p>The context handle does not match any known context handles.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030006<br />RPC_NT_SS_CONTEXT_DAMAGED</p> + </td> + <td> + <p>The context handle changed during a call.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030007<br />RPC_NT_SS_HANDLES_MISMATCH</p> + </td> + <td> + <p>The binding handles passed to an RPC do not match.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030008<br />RPC_NT_SS_CANNOT_GET_CALL_HANDLE</p> + </td> + <td> + <p>The stub is unable to get the call handle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030009<br />RPC_NT_NULL_REF_POINTER</p> + </td> + <td> + <p>A null reference pointer was passed to the stub.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003000A<br />RPC_NT_ENUM_VALUE_OUT_OF_RANGE</p> + </td> + <td> + <p>The enumeration value is out of range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003000B<br />RPC_NT_BYTE_COUNT_TOO_SMALL</p> + </td> + <td> + <p>The byte count is too small.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003000C<br />RPC_NT_BAD_STUB_DATA</p> + </td> + <td> + <p>The stub received bad data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030059<br />RPC_NT_INVALID_ES_ACTION</p> + </td> + <td> + <p>Invalid operation on the encoding/decoding handle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005A<br />RPC_NT_WRONG_ES_VERSION</p> + </td> + <td> + <p>Incompatible version of the serializing package.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005B<br />RPC_NT_WRONG_STUB_VERSION</p> + </td> + <td> + <p>Incompatible version of the RPC stub.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005C<br />RPC_NT_INVALID_PIPE_OBJECT</p> + </td> + <td> + <p>The RPC pipe object is invalid or corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005D<br />RPC_NT_INVALID_PIPE_OPERATION</p> + </td> + <td> + <p>An invalid operation was attempted on an RPC pipe object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005E<br />RPC_NT_WRONG_PIPE_VERSION</p> + </td> + <td> + <p>Unsupported RPC pipe version.</p> + </td> + </tr> + <tr> + <td> + <p>0xC003005F<br />RPC_NT_PIPE_CLOSED</p> + </td> + <td> + <p>The RPC pipe object has already been closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030060<br />RPC_NT_PIPE_DISCIPLINE_ERROR</p> + </td> + <td> + <p>The RPC call completed before all pipes were processed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0030061<br />RPC_NT_PIPE_EMPTY</p> + </td> + <td> + <p>No more data is available from the RPC pipe.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0040035<br />STATUS_PNP_BAD_MPS_TABLE</p> + </td> + <td> + <p>A device is missing in the system BIOS MPS table. This device will not be used. Contact your system vendor for a system BIOS update.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0040036<br />STATUS_PNP_TRANSLATION_FAILED</p> + </td> + <td> + <p>A translator failed to translate resources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0040037<br />STATUS_PNP_IRQ_TRANSLATION_FAILED</p> + </td> + <td> + <p>An IRQ translator failed to translate resources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0040038<br />STATUS_PNP_INVALID_ID</p> + </td> + <td> + <p>Driver %2 returned an invalid ID for a child device (%3).</p> + </td> + </tr> + <tr> + <td> + <p>0xC0040039<br />STATUS_IO_REISSUE_AS_CACHED</p> + </td> + <td> + <p>Reissue the given operation as a cached I/O operation</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0001<br />STATUS_CTX_WINSTATION_NAME_INVALID</p> + </td> + <td> + <p>Session name %1 is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0002<br />STATUS_CTX_INVALID_PD</p> + </td> + <td> + <p>The protocol driver %1 is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0003<br />STATUS_CTX_PD_NOT_FOUND</p> + </td> + <td> + <p>The protocol driver %1 was not found in the system path.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0006<br />STATUS_CTX_CLOSE_PENDING</p> + </td> + <td> + <p>A close operation is pending on the terminal connection.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0007<br />STATUS_CTX_NO_OUTBUF</p> + </td> + <td> + <p>No free output buffers are available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0008<br />STATUS_CTX_MODEM_INF_NOT_FOUND</p> + </td> + <td> + <p>The MODEM.INF file was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0009<br />STATUS_CTX_INVALID_MODEMNAME</p> + </td> + <td> + <p>The modem (%1) was not found in the MODEM.INF file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000A<br />STATUS_CTX_RESPONSE_ERROR</p> + </td> + <td> + <p>The modem did not accept the command sent to it. Verify that the configured modem name matches the attached modem.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000B<br />STATUS_CTX_MODEM_RESPONSE_TIMEOUT</p> + </td> + <td> + <p>The modem did not respond to the command sent to it. Verify that the modem cable is properly attached and the modem is turned on.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000C<br />STATUS_CTX_MODEM_RESPONSE_NO_CARRIER</p> + </td> + <td> + <p>Carrier detection has failed or the carrier has been dropped due to disconnection.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000D<br />STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE</p> + </td> + <td> + <p>A dial tone was not detected within the required time. Verify that the phone cable is properly attached and functional.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000E<br />STATUS_CTX_MODEM_RESPONSE_BUSY</p> + </td> + <td> + <p>A busy signal was detected at a remote site on callback.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A000F<br />STATUS_CTX_MODEM_RESPONSE_VOICE</p> + </td> + <td> + <p>A voice was detected at a remote site on callback.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0010<br />STATUS_CTX_TD_ERROR</p> + </td> + <td> + <p>Transport driver error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0012<br />STATUS_CTX_LICENSE_CLIENT_INVALID</p> + </td> + <td> + <p>The client you are using is not licensed to use this system. Your logon request is denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0013<br />STATUS_CTX_LICENSE_NOT_AVAILABLE</p> + </td> + <td> + <p>The system has reached its licensed logon limit. Try again later.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0014<br />STATUS_CTX_LICENSE_EXPIRED</p> + </td> + <td> + <p>The system license has expired. Your logon request is denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0015<br />STATUS_CTX_WINSTATION_NOT_FOUND</p> + </td> + <td> + <p>The specified session cannot be found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0016<br />STATUS_CTX_WINSTATION_NAME_COLLISION</p> + </td> + <td> + <p>The specified session name is already in use.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0017<br />STATUS_CTX_WINSTATION_BUSY</p> + </td> + <td> + <p>The requested operation cannot be completed because the terminal connection is currently processing a connect, disconnect, reset, or delete operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0018<br />STATUS_CTX_BAD_VIDEO_MODE</p> + </td> + <td> + <p>An attempt has been made to connect to a session whose video mode is not supported by the current client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0022<br />STATUS_CTX_GRAPHICS_INVALID</p> + </td> + <td> + <p>The application attempted to enable DOS graphics mode. DOS graphics mode is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0024<br />STATUS_CTX_NOT_CONSOLE</p> + </td> + <td> + <p>The requested operation can be performed only on the system console. This is most often the result of a driver or system DLL requiring direct console access.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0026<br />STATUS_CTX_CLIENT_QUERY_TIMEOUT</p> + </td> + <td> + <p>The client failed to respond to the server connect message.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0027<br />STATUS_CTX_CONSOLE_DISCONNECT</p> + </td> + <td> + <p>Disconnecting the console session is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0028<br />STATUS_CTX_CONSOLE_CONNECT</p> + </td> + <td> + <p>Reconnecting a disconnected session to the console is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A002A<br />STATUS_CTX_SHADOW_DENIED</p> + </td> + <td> + <p>The request to control another session remotely was denied.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A002B<br />STATUS_CTX_WINSTATION_ACCESS_DENIED</p> + </td> + <td> + <p>A process has requested access to a session, but has not been granted those access rights.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A002E<br />STATUS_CTX_INVALID_WD</p> + </td> + <td> + <p>The terminal connection driver %1 is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A002F<br />STATUS_CTX_WD_NOT_FOUND</p> + </td> + <td> + <p>The terminal connection driver %1 was not found in the system path.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0030<br />STATUS_CTX_SHADOW_INVALID</p> + </td> + <td> + <p>The requested session cannot be controlled remotely. You cannot control your own session, a session that is trying to control your session, a session that has no user logged on, or other sessions from the console.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0031<br />STATUS_CTX_SHADOW_DISABLED</p> + </td> + <td> + <p>The requested session is not configured to allow remote control.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0032<br />STATUS_RDP_PROTOCOL_ERROR</p> + </td> + <td> + <p>The RDP protocol component %2 detected an error in the protocol stream and has disconnected the client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0033<br />STATUS_CTX_CLIENT_LICENSE_NOT_SET</p> + </td> + <td> + <p>Your request to connect to this <a href="https://msdn.microsoft.com/en-us/library/43f5bde9-36cf-4d5a-af80-8c687cce8b60#terminal_server">terminal server</a> has been rejected. Your terminal server client license number has not been entered for this copy of the terminal client. Contact your system administrator for help in entering a valid, unique license number for this terminal server client. Click OK to continue.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0034<br />STATUS_CTX_CLIENT_LICENSE_IN_USE</p> + </td> + <td> + <p>Your request to connect to this terminal server has been rejected. Your terminal server client license number is currently being used by another user. Contact your system administrator to obtain a new copy of the terminal server client with a valid, unique license number. Click OK to continue.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0035<br />STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE</p> + </td> + <td> + <p>The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0036<br />STATUS_CTX_SHADOW_NOT_RUNNING</p> + </td> + <td> + <p>Remote control could not be terminated because the specified session is not currently being remotely controlled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0037<br />STATUS_CTX_LOGON_DISABLED</p> + </td> + <td> + <p>Your interactive logon privilege has been disabled. Contact your system administrator.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0038<br />STATUS_CTX_SECURITY_LAYER_ERROR</p> + </td> + <td> + <p>The terminal server security layer detected an error in the protocol stream and has disconnected the client.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00A0039<br />STATUS_TS_INCOMPATIBLE_SESSIONS</p> + </td> + <td> + <p>The target session is incompatible with the current session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0001<br />STATUS_MUI_FILE_NOT_FOUND</p> + </td> + <td> + <p>The resource loader failed to find an MUI file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0002<br />STATUS_MUI_INVALID_FILE</p> + </td> + <td> + <p>The resource loader failed to load an MUI file because the file failed to pass validation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0003<br />STATUS_MUI_INVALID_RC_CONFIG</p> + </td> + <td> + <p>The RC manifest is corrupted with garbage data, is an unsupported version, or is missing a required item.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0004<br />STATUS_MUI_INVALID_LOCALE_NAME</p> + </td> + <td> + <p>The RC manifest has an invalid culture name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0005<br />STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME</p> + </td> + <td> + <p>The RC manifest has and invalid ultimate fallback name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0006<br />STATUS_MUI_FILE_NOT_LOADED</p> + </td> + <td> + <p>The resource loader cache does not have a loaded MUI entry.</p> + </td> + </tr> + <tr> + <td> + <p>0xC00B0007<br />STATUS_RESOURCE_ENUM_USER_STOP</p> + </td> + <td> + <p>The user stopped resource enumeration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130001<br />STATUS_CLUSTER_INVALID_NODE</p> + </td> + <td> + <p>The cluster node is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130002<br />STATUS_CLUSTER_NODE_EXISTS</p> + </td> + <td> + <p>The cluster node already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130003<br />STATUS_CLUSTER_JOIN_IN_PROGRESS</p> + </td> + <td> + <p>A node is in the process of joining the cluster.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130004<br />STATUS_CLUSTER_NODE_NOT_FOUND</p> + </td> + <td> + <p>The cluster node was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130005<br />STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND</p> + </td> + <td> + <p>The cluster local node information was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130006<br />STATUS_CLUSTER_NETWORK_EXISTS</p> + </td> + <td> + <p>The cluster network already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130007<br />STATUS_CLUSTER_NETWORK_NOT_FOUND</p> + </td> + <td> + <p>The cluster network was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130008<br />STATUS_CLUSTER_NETINTERFACE_EXISTS</p> + </td> + <td> + <p>The cluster network interface already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130009<br />STATUS_CLUSTER_NETINTERFACE_NOT_FOUND</p> + </td> + <td> + <p>The cluster network interface was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000A<br />STATUS_CLUSTER_INVALID_REQUEST</p> + </td> + <td> + <p>The cluster request is not valid for this object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000B<br />STATUS_CLUSTER_INVALID_NETWORK_PROVIDER</p> + </td> + <td> + <p>The cluster network provider is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000C<br />STATUS_CLUSTER_NODE_DOWN</p> + </td> + <td> + <p>The cluster node is down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000D<br />STATUS_CLUSTER_NODE_UNREACHABLE</p> + </td> + <td> + <p>The cluster node is not reachable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000E<br />STATUS_CLUSTER_NODE_NOT_MEMBER</p> + </td> + <td> + <p>The cluster node is not a member of the cluster.</p> + </td> + </tr> + <tr> + <td> + <p>0xC013000F<br />STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS</p> + </td> + <td> + <p>A cluster join operation is not in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130010<br />STATUS_CLUSTER_INVALID_NETWORK</p> + </td> + <td> + <p>The cluster network is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130011<br />STATUS_CLUSTER_NO_NET_ADAPTERS</p> + </td> + <td> + <p>No network adapters are available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130012<br />STATUS_CLUSTER_NODE_UP</p> + </td> + <td> + <p>The cluster node is up.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130013<br />STATUS_CLUSTER_NODE_PAUSED</p> + </td> + <td> + <p>The cluster node is paused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130014<br />STATUS_CLUSTER_NODE_NOT_PAUSED</p> + </td> + <td> + <p>The cluster node is not paused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130015<br />STATUS_CLUSTER_NO_SECURITY_CONTEXT</p> + </td> + <td> + <p>No cluster security context is available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130016<br />STATUS_CLUSTER_NETWORK_NOT_INTERNAL</p> + </td> + <td> + <p>The cluster network is not configured for internal cluster communication.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0130017<br />STATUS_CLUSTER_POISONED</p> + </td> + <td> + <p>The cluster node has been poisoned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140001<br />STATUS_ACPI_INVALID_OPCODE</p> + </td> + <td> + <p>An attempt was made to run an invalid AML opcode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140002<br />STATUS_ACPI_STACK_OVERFLOW</p> + </td> + <td> + <p>The AML interpreter stack has overflowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140003<br />STATUS_ACPI_ASSERT_FAILED</p> + </td> + <td> + <p>An inconsistent state has occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140004<br />STATUS_ACPI_INVALID_INDEX</p> + </td> + <td> + <p>An attempt was made to access an array outside its bounds.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140005<br />STATUS_ACPI_INVALID_ARGUMENT</p> + </td> + <td> + <p>A required argument was not specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140006<br />STATUS_ACPI_FATAL</p> + </td> + <td> + <p>A fatal error has occurred.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140007<br />STATUS_ACPI_INVALID_SUPERNAME</p> + </td> + <td> + <p>An invalid SuperName was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140008<br />STATUS_ACPI_INVALID_ARGTYPE</p> + </td> + <td> + <p>An argument with an incorrect type was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140009<br />STATUS_ACPI_INVALID_OBJTYPE</p> + </td> + <td> + <p>An object with an incorrect type was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000A<br />STATUS_ACPI_INVALID_TARGETTYPE</p> + </td> + <td> + <p>A target with an incorrect type was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000B<br />STATUS_ACPI_INCORRECT_ARGUMENT_COUNT</p> + </td> + <td> + <p>An incorrect number of arguments was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000C<br />STATUS_ACPI_ADDRESS_NOT_MAPPED</p> + </td> + <td> + <p>An address failed to translate.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000D<br />STATUS_ACPI_INVALID_EVENTTYPE</p> + </td> + <td> + <p>An incorrect event type was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000E<br />STATUS_ACPI_HANDLER_COLLISION</p> + </td> + <td> + <p>A handler for the target already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC014000F<br />STATUS_ACPI_INVALID_DATA</p> + </td> + <td> + <p>Invalid data for the target was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140010<br />STATUS_ACPI_INVALID_REGION</p> + </td> + <td> + <p>An invalid region for the target was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140011<br />STATUS_ACPI_INVALID_ACCESS_SIZE</p> + </td> + <td> + <p>An attempt was made to access a field outside the defined range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140012<br />STATUS_ACPI_ACQUIRE_GLOBAL_LOCK</p> + </td> + <td> + <p>The global system lock could not be acquired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140013<br />STATUS_ACPI_ALREADY_INITIALIZED</p> + </td> + <td> + <p>An attempt was made to reinitialize the ACPI subsystem.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140014<br />STATUS_ACPI_NOT_INITIALIZED</p> + </td> + <td> + <p>The ACPI subsystem has not been initialized.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140015<br />STATUS_ACPI_INVALID_MUTEX_LEVEL</p> + </td> + <td> + <p>An incorrect mutex was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140016<br />STATUS_ACPI_MUTEX_NOT_OWNED</p> + </td> + <td> + <p>The mutex is not currently owned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140017<br />STATUS_ACPI_MUTEX_NOT_OWNER</p> + </td> + <td> + <p>An attempt was made to access the mutex by a process that was not the owner.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140018<br />STATUS_ACPI_RS_ACCESS</p> + </td> + <td> + <p>An error occurred during an access to region space.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140019<br />STATUS_ACPI_INVALID_TABLE</p> + </td> + <td> + <p>An attempt was made to use an incorrect table.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140020<br />STATUS_ACPI_REG_HANDLER_FAILED</p> + </td> + <td> + <p>The registration of an ACPI event failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0140021<br />STATUS_ACPI_POWER_REQUEST_FAILED</p> + </td> + <td> + <p>An ACPI power object failed to transition state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150001<br />STATUS_SXS_SECTION_NOT_FOUND</p> + </td> + <td> + <p>The requested section is not present in the activation context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150002<br />STATUS_SXS_CANT_GEN_ACTCTX</p> + </td> + <td> + <p> + Windows was unble to process the application binding information. Refer to the system event log for further information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150003<br />STATUS_SXS_INVALID_ACTCTXDATA_FORMAT</p> + </td> + <td> + <p>The application binding data format is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150004<br />STATUS_SXS_ASSEMBLY_NOT_FOUND</p> + </td> + <td> + <p>The referenced assembly is not installed on the system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150005<br />STATUS_SXS_MANIFEST_FORMAT_ERROR</p> + </td> + <td> + <p>The manifest file does not begin with the required tag and format information.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150006<br />STATUS_SXS_MANIFEST_PARSE_ERROR</p> + </td> + <td> + <p>The manifest file contains one or more syntax errors.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150007<br />STATUS_SXS_ACTIVATION_CONTEXT_DISABLED</p> + </td> + <td> + <p>The application attempted to activate a disabled activation context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150008<br />STATUS_SXS_KEY_NOT_FOUND</p> + </td> + <td> + <p>The requested lookup key was not found in any active activation context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150009<br />STATUS_SXS_VERSION_CONFLICT</p> + </td> + <td> + <p>A component version required by the application conflicts with another component version that is already active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015000A<br />STATUS_SXS_WRONG_SECTION_TYPE</p> + </td> + <td> + <p>The type requested activation context section does not match the query API used.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015000B<br />STATUS_SXS_THREAD_QUERIES_DISABLED</p> + </td> + <td> + <p>Lack of system resources has required isolated activation to be disabled for the current thread of execution.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015000C<br />STATUS_SXS_ASSEMBLY_MISSING</p> + </td> + <td> + <p>The referenced assembly could not be found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015000E<br />STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET</p> + </td> + <td> + <p>An attempt to set the process default activation context failed because the process default activation context was already set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015000F<br />STATUS_SXS_EARLY_DEACTIVATION</p> + </td> + <td> + <p>The activation context being deactivated is not the most recently activated one.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150010<br />STATUS_SXS_INVALID_DEACTIVATION</p> + </td> + <td> + <p>The activation context being deactivated is not active for the current thread of execution.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150011<br />STATUS_SXS_MULTIPLE_DEACTIVATION</p> + </td> + <td> + <p>The activation context being deactivated has already been deactivated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150012<br />STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY</p> + </td> + <td> + <p>The activation context of the system default assembly could not be generated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150013<br />STATUS_SXS_PROCESS_TERMINATION_REQUESTED</p> + </td> + <td> + <p>A component used by the isolation facility has requested that the process be terminated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150014<br />STATUS_SXS_CORRUPT_ACTIVATION_STACK</p> + </td> + <td> + <p>The activation context activation stack for the running thread of execution is corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150015<br />STATUS_SXS_CORRUPTION</p> + </td> + <td> + <p>The application isolation metadata for this process or thread has become corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150016<br />STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE</p> + </td> + <td> + <p>The value of an attribute in an identity is not within the legal range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150017<br />STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME</p> + </td> + <td> + <p>The name of an attribute in an identity is not within the legal range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150018<br />STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE</p> + </td> + <td> + <p>An identity contains two definitions for the same attribute.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150019<br />STATUS_SXS_IDENTITY_PARSE_ERROR</p> + </td> + <td> + <p>The identity string is malformed. This may be due to a trailing comma, more than two unnamed attributes, a missing attribute name, or a missing attribute value.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001A<br />STATUS_SXS_COMPONENT_STORE_CORRUPT</p> + </td> + <td> + <p>The component store has become corrupted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001B<br />STATUS_SXS_FILE_HASH_MISMATCH</p> + </td> + <td> + <p>A component's file does not match the verification information present in the component manifest.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001C<br />STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT</p> + </td> + <td> + <p>The identities of the manifests are identical, but their contents are different.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001D<br />STATUS_SXS_IDENTITIES_DIFFERENT</p> + </td> + <td> + <p>The component identities are different.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001E<br />STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT</p> + </td> + <td> + <p>The assembly is not a deployment.</p> + </td> + </tr> + <tr> + <td> + <p>0xC015001F<br />STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY</p> + </td> + <td> + <p>The file is not a part of the assembly.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150020<br />STATUS_ADVANCED_INSTALLER_FAILED</p> + </td> + <td> + <p>An advanced installer failed during setup or servicing.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150021<br />STATUS_XML_ENCODING_MISMATCH</p> + </td> + <td> + <p>The character encoding in the XML declaration did not match the encoding used in the document.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150022<br />STATUS_SXS_MANIFEST_TOO_BIG</p> + </td> + <td> + <p>The size of the manifest exceeds the maximum allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150023<br />STATUS_SXS_SETTING_NOT_REGISTERED</p> + </td> + <td> + <p>The setting is not registered.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150024<br />STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE</p> + </td> + <td> + <p>One or more required transaction members are not present.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150025<br />STATUS_SMI_PRIMITIVE_INSTALLER_FAILED</p> + </td> + <td> + <p>The SMI primitive installer failed during setup or servicing.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150026<br />STATUS_GENERIC_COMMAND_FAILED</p> + </td> + <td> + <p>A generic command executable returned a result that indicates failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0150027<br />STATUS_SXS_FILE_HASH_MISSING</p> + </td> + <td> + <p>A component is missing file verification information in its manifest.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190001<br />STATUS_TRANSACTIONAL_CONFLICT</p> + </td> + <td> + <p>The function attempted to use a name that is reserved for use by another transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190002<br />STATUS_INVALID_TRANSACTION</p> + </td> + <td> + <p>The transaction handle associated with this operation is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190003<br />STATUS_TRANSACTION_NOT_ACTIVE</p> + </td> + <td> + <p>The requested operation was made in the context of a transaction that is no longer active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190004<br />STATUS_TM_INITIALIZATION_FAILED</p> + </td> + <td> + <p>The transaction manager was unable to be successfully initialized. Transacted operations are not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190005<br />STATUS_RM_NOT_ACTIVE</p> + </td> + <td> + <p>Transaction support within the specified file system resource manager was not started or was shut down due to an error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190006<br />STATUS_RM_METADATA_CORRUPT</p> + </td> + <td> + <p>The metadata of the resource manager has been corrupted. The resource manager will not function.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190007<br />STATUS_TRANSACTION_NOT_JOINED</p> + </td> + <td> + <p>The resource manager attempted to prepare a transaction that it has not successfully joined.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190008<br />STATUS_DIRECTORY_NOT_RM</p> + </td> + <td> + <p>The specified directory does not contain a file system resource manager.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019000A<br />STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE</p> + </td> + <td> + <p>The remote server or share does not support transacted file operations.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019000B<br />STATUS_LOG_RESIZE_INVALID_SIZE</p> + </td> + <td> + <p>The requested log size for the file system resource manager is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019000C<br />STATUS_REMOTE_FILE_VERSION_MISMATCH</p> + </td> + <td> + <p>The remote server sent mismatching version number or Fid for a file opened with transactions.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019000F<br />STATUS_CRM_PROTOCOL_ALREADY_EXISTS</p> + </td> + <td> + <p>The resource manager tried to register a protocol that already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190010<br />STATUS_TRANSACTION_PROPAGATION_FAILED</p> + </td> + <td> + <p>The attempt to propagate the transaction failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190011<br />STATUS_CRM_PROTOCOL_NOT_FOUND</p> + </td> + <td> + <p>The requested propagation protocol was not registered as a CRM.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190012<br />STATUS_TRANSACTION_SUPERIOR_EXISTS</p> + </td> + <td> + <p>The transaction object already has a superior enlistment, and the caller attempted an operation that would have created a new superior. Only a single superior enlistment is allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190013<br />STATUS_TRANSACTION_REQUEST_NOT_VALID</p> + </td> + <td> + <p>The requested operation is not valid on the transaction object in its current state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190014<br />STATUS_TRANSACTION_NOT_REQUESTED</p> + </td> + <td> + <p>The caller has called a response API, but the response is not expected because the transaction manager did not issue the corresponding request to the caller.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190015<br />STATUS_TRANSACTION_ALREADY_ABORTED</p> + </td> + <td> + <p>It is too late to perform the requested operation, because the transaction has already been aborted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190016<br />STATUS_TRANSACTION_ALREADY_COMMITTED</p> + </td> + <td> + <p>It is too late to perform the requested operation, because the transaction has already been committed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190017<br />STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER</p> + </td> + <td> + <p>The buffer passed in to NtPushTransaction or NtPullTransaction is not in a valid format.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190018<br />STATUS_CURRENT_TRANSACTION_NOT_VALID</p> + </td> + <td> + <p>The current transaction context associated with the thread is not a valid handle to a transaction object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190019<br />STATUS_LOG_GROWTH_FAILED</p> + </td> + <td> + <p>An attempt to create space in the transactional resource manager's log failed. The failure status has been recorded in the event log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190021<br />STATUS_OBJECT_NO_LONGER_EXISTS</p> + </td> + <td> + <p>The object (file, stream, or link) that corresponds to the handle has been deleted by a transaction savepoint rollback.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190022<br />STATUS_STREAM_MINIVERSION_NOT_FOUND</p> + </td> + <td> + <p>The specified file miniversion was not found for this transacted file open.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190023<br />STATUS_STREAM_MINIVERSION_NOT_VALID</p> + </td> + <td> + <p>The specified file miniversion was found but has been invalidated. The most likely cause is a transaction savepoint rollback.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190024<br />STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION</p> + </td> + <td> + <p>A miniversion may be opened only in the context of the transaction that created it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190025<br />STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT</p> + </td> + <td> + <p>It is not possible to open a miniversion with modify access.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190026<br />STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS</p> + </td> + <td> + <p>It is not possible to create any more miniversions for this stream.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190028<br />STATUS_HANDLE_NO_LONGER_VALID</p> + </td> + <td> + <p>The handle has been invalidated by a transaction. The most likely cause is the presence of memory mapping on a file or an open handle when the transaction ended or rolled back to savepoint.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190030<br />STATUS_LOG_CORRUPTION_DETECTED</p> + </td> + <td> + <p>The log data is corrupt.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190032<br />STATUS_RM_DISCONNECTED</p> + </td> + <td> + <p>The transaction outcome is unavailable because the resource manager responsible for it is disconnected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190033<br />STATUS_ENLISTMENT_NOT_SUPERIOR</p> + </td> + <td> + <p>The request was rejected because the enlistment in question is not a superior enlistment.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190036<br />STATUS_FILE_IDENTITY_NOT_PERSISTENT</p> + </td> + <td> + <p>The file cannot be opened in a transaction because its identity depends on the outcome of an unresolved transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190037<br />STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY</p> + </td> + <td> + <p>The operation cannot be performed because another transaction is depending on this property not changing.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190038<br />STATUS_CANT_CROSS_RM_BOUNDARY</p> + </td> + <td> + <p>The operation would involve a single file with two transactional resource managers and is, therefore, not allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190039<br />STATUS_TXF_DIR_NOT_EMPTY</p> + </td> + <td> + <p>The $Txf directory must be empty for this operation to succeed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003A<br />STATUS_INDOUBT_TRANSACTIONS_EXIST</p> + </td> + <td> + <p>The operation would leave a transactional resource manager in an inconsistent state and is therefore not allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003B<br />STATUS_TM_VOLATILE</p> + </td> + <td> + <p>The operation could not be completed because the transaction manager does not have a log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003C<br />STATUS_ROLLBACK_TIMER_EXPIRED</p> + </td> + <td> + <p>A rollback could not be scheduled because a previously scheduled rollback has already executed or been queued for execution.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003D<br />STATUS_TXF_ATTRIBUTE_CORRUPT</p> + </td> + <td> + <p>The transactional metadata attribute on the file or directory %hs is corrupt and unreadable.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003E<br />STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION</p> + </td> + <td> + <p>The encryption operation could not be completed because a transaction is active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019003F<br />STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED</p> + </td> + <td> + <p>This object is not allowed to be opened in a transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190040<br />STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE</p> + </td> + <td> + <p>Memory mapping (creating a mapped section) a remote file under a transaction is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190043<br />STATUS_TRANSACTION_REQUIRED_PROMOTION</p> + </td> + <td> + <p>Promotion was required to allow the resource manager to enlist, but the transaction was set to disallow it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190044<br />STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION</p> + </td> + <td> + <p>This file is open for modification in an unresolved transaction and may be opened for execute only by a transacted reader.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190045<br />STATUS_TRANSACTIONS_NOT_FROZEN</p> + </td> + <td> + <p>The request to thaw frozen transactions was ignored because transactions were not previously frozen.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190046<br />STATUS_TRANSACTION_FREEZE_IN_PROGRESS</p> + </td> + <td> + <p>Transactions cannot be frozen because a freeze is already in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190047<br />STATUS_NOT_SNAPSHOT_VOLUME</p> + </td> + <td> + <p>The target volume is not a snapshot volume. This operation is valid only on a volume mounted as a snapshot.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190048<br />STATUS_NO_SAVEPOINT_WITH_OPEN_FILES</p> + </td> + <td> + <p>The savepoint operation failed because files are open on the transaction, which is not permitted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190049<br />STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION</p> + </td> + <td> + <p>The sparse operation could not be completed because a transaction is active on the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004A<br />STATUS_TM_IDENTITY_MISMATCH</p> + </td> + <td> + <p>The call to create a transaction manager object failed because the Tm Identity that is stored in the log file does not match the Tm Identity that was passed in as an argument.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004B<br />STATUS_FLOATED_SECTION</p> + </td> + <td> + <p>I/O was attempted on a section object that has been floated as a result of a transaction ending. There is no valid data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004C<br />STATUS_CANNOT_ACCEPT_TRANSACTED_WORK</p> + </td> + <td> + <p>The transactional resource manager cannot currently accept transacted work due to a transient condition, such as low resources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004D<br />STATUS_CANNOT_ABORT_TRANSACTIONS</p> + </td> + <td> + <p>The transactional resource manager had too many transactions outstanding that could not be aborted. The transactional resource manager has been shut down.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004E<br />STATUS_TRANSACTION_NOT_FOUND</p> + </td> + <td> + <p>The specified transaction was unable to be opened because it was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019004F<br />STATUS_RESOURCEMANAGER_NOT_FOUND</p> + </td> + <td> + <p>The specified resource manager was unable to be opened because it was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190050<br />STATUS_ENLISTMENT_NOT_FOUND</p> + </td> + <td> + <p>The specified enlistment was unable to be opened because it was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190051<br />STATUS_TRANSACTIONMANAGER_NOT_FOUND</p> + </td> + <td> + <p>The specified transaction manager was unable to be opened because it was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190052<br />STATUS_TRANSACTIONMANAGER_NOT_ONLINE</p> + </td> + <td> + <p>The specified resource manager was unable to create an enlistment because its associated transaction manager is not online.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190053<br />STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION</p> + </td> + <td> + <p>The specified transaction manager was unable to create the objects contained in its log file in the Ob namespace. Therefore, the transaction manager was unable to recover.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190054<br />STATUS_TRANSACTION_NOT_ROOT</p> + </td> + <td> + <p>The call to create a superior enlistment on this transaction object could not be completed because the transaction object specified for the enlistment is a subordinate branch of the transaction. Only the root of the transaction can be enlisted as a superior.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190055<br />STATUS_TRANSACTION_OBJECT_EXPIRED</p> + </td> + <td> + <p>Because the associated transaction manager or resource manager has been closed, the handle is no longer valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190056<br />STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION</p> + </td> + <td> + <p>The compression operation could not be completed because a transaction is active on the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190057<br />STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED</p> + </td> + <td> + <p>The specified operation could not be performed on this superior enlistment because the enlistment was not created with the corresponding completion response in the NotificationMask.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190058<br />STATUS_TRANSACTION_RECORD_TOO_LONG</p> + </td> + <td> + <p>The specified operation could not be performed because the record to be logged was too long. This can occur because either there are too many enlistments on this transaction or the combined RecoveryInformation being logged on behalf of those enlistments is too long.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190059<br />STATUS_NO_LINK_TRACKING_IN_TRANSACTION</p> + </td> + <td> + <p>The link-tracking operation could not be completed because a transaction is active.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019005A<br />STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION</p> + </td> + <td> + <p>This operation cannot be performed in a transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC019005B<br />STATUS_TRANSACTION_INTEGRITY_VIOLATED</p> + </td> + <td> + <p>The kernel transaction manager had to abort or forget the transaction because it blocked forward progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190060<br />STATUS_EXPIRED_HANDLE</p> + </td> + <td> + <p>The handle is no longer properly associated with its transaction. It may have been opened in a transactional resource manager that was subsequently forced to restart. Please close the handle and open a new one.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0190061<br />STATUS_TRANSACTION_NOT_ENLISTED</p> + </td> + <td> + <p>The specified operation could not be performed because the resource manager is not enlisted in the transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0001<br />STATUS_LOG_SECTOR_INVALID</p> + </td> + <td> + <p>The log service found an invalid log sector.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0002<br />STATUS_LOG_SECTOR_PARITY_INVALID</p> + </td> + <td> + <p>The log service encountered a log sector with invalid block parity.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0003<br />STATUS_LOG_SECTOR_REMAPPED</p> + </td> + <td> + <p>The log service encountered a remapped log sector.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0004<br />STATUS_LOG_BLOCK_INCOMPLETE</p> + </td> + <td> + <p>The log service encountered a partial or incomplete log block.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0005<br />STATUS_LOG_INVALID_RANGE</p> + </td> + <td> + <p>The log service encountered an attempt to access data outside the active log range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0006<br />STATUS_LOG_BLOCKS_EXHAUSTED</p> + </td> + <td> + <p>The log service user-log marshaling buffers are exhausted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0007<br />STATUS_LOG_READ_CONTEXT_INVALID</p> + </td> + <td> + <p>The log service encountered an attempt to read from a marshaling area with an invalid read context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0008<br />STATUS_LOG_RESTART_INVALID</p> + </td> + <td> + <p>The log service encountered an invalid log restart area.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0009<br />STATUS_LOG_BLOCK_VERSION</p> + </td> + <td> + <p>The log service encountered an invalid log block version.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A000A<br />STATUS_LOG_BLOCK_INVALID</p> + </td> + <td> + <p>The log service encountered an invalid log block.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A000B<br />STATUS_LOG_READ_MODE_INVALID</p> + </td> + <td> + <p>The log service encountered an attempt to read the log with an invalid read mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A000D<br />STATUS_LOG_METADATA_CORRUPT</p> + </td> + <td> + <p>The log service encountered a corrupted metadata file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A000E<br />STATUS_LOG_METADATA_INVALID</p> + </td> + <td> + <p>The log service encountered a metadata file that could not be created by the log file system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A000F<br />STATUS_LOG_METADATA_INCONSISTENT</p> + </td> + <td> + <p>The log service encountered a metadata file with inconsistent data.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0010<br />STATUS_LOG_RESERVATION_INVALID</p> + </td> + <td> + <p>The log service encountered an attempt to erroneously allocate or dispose reservation space.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0011<br />STATUS_LOG_CANT_DELETE</p> + </td> + <td> + <p>The log service cannot delete the log file or the file system container.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0012<br />STATUS_LOG_CONTAINER_LIMIT_EXCEEDED</p> + </td> + <td> + <p>The log service has reached the maximum allowable containers allocated to a log file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0013<br />STATUS_LOG_START_OF_LOG</p> + </td> + <td> + <p>The log service has attempted to read or write backward past the start of the log.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0014<br />STATUS_LOG_POLICY_ALREADY_INSTALLED</p> + </td> + <td> + <p>The log policy could not be installed because a policy of the same type is already present.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0015<br />STATUS_LOG_POLICY_NOT_INSTALLED</p> + </td> + <td> + <p>The log policy in question was not installed at the time of the request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0016<br />STATUS_LOG_POLICY_INVALID</p> + </td> + <td> + <p>The installed set of policies on the log is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0017<br />STATUS_LOG_POLICY_CONFLICT</p> + </td> + <td> + <p>A policy on the log in question prevented the operation from completing.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0018<br />STATUS_LOG_PINNED_ARCHIVE_TAIL</p> + </td> + <td> + <p>The log space cannot be reclaimed because the log is pinned by the archive tail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0019<br />STATUS_LOG_RECORD_NONEXISTENT</p> + </td> + <td> + <p>The log record is not a record in the log file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001A<br />STATUS_LOG_RECORDS_RESERVED_INVALID</p> + </td> + <td> + <p>The number of reserved log records or the adjustment of the number of reserved log records is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001B<br />STATUS_LOG_SPACE_RESERVED_INVALID</p> + </td> + <td> + <p>The reserved log space or the adjustment of the log space is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001C<br />STATUS_LOG_TAIL_INVALID</p> + </td> + <td> + <p>A new or existing archive tail or the base of the active log is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001D<br />STATUS_LOG_FULL</p> + </td> + <td> + <p>The log space is exhausted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001E<br />STATUS_LOG_MULTIPLEXED</p> + </td> + <td> + <p>The log is multiplexed; no direct writes to the physical log are allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A001F<br />STATUS_LOG_DEDICATED</p> + </td> + <td> + <p>The operation failed because the log is dedicated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0020<br />STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS</p> + </td> + <td> + <p>The operation requires an archive context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0021<br />STATUS_LOG_ARCHIVE_IN_PROGRESS</p> + </td> + <td> + <p>Log archival is in progress.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0022<br />STATUS_LOG_EPHEMERAL</p> + </td> + <td> + <p>The operation requires a nonephemeral log, but the log is ephemeral.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0023<br />STATUS_LOG_NOT_ENOUGH_CONTAINERS</p> + </td> + <td> + <p>The log must have at least two containers before it can be read from or written to.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0024<br />STATUS_LOG_CLIENT_ALREADY_REGISTERED</p> + </td> + <td> + <p>A log client has already registered on the stream.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0025<br />STATUS_LOG_CLIENT_NOT_REGISTERED</p> + </td> + <td> + <p>A log client has not been registered on the stream.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0026<br />STATUS_LOG_FULL_HANDLER_IN_PROGRESS</p> + </td> + <td> + <p>A request has already been made to handle the log full condition.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0027<br />STATUS_LOG_CONTAINER_READ_FAILED</p> + </td> + <td> + <p>The log service encountered an error when attempting to read from a log container.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0028<br />STATUS_LOG_CONTAINER_WRITE_FAILED</p> + </td> + <td> + <p>The log service encountered an error when attempting to write to a log container.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0029<br />STATUS_LOG_CONTAINER_OPEN_FAILED</p> + </td> + <td> + <p>The log service encountered an error when attempting to open a log container.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002A<br />STATUS_LOG_CONTAINER_STATE_INVALID</p> + </td> + <td> + <p>The log service encountered an invalid container state when attempting a requested action.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002B<br />STATUS_LOG_STATE_INVALID</p> + </td> + <td> + <p>The log service is not in the correct state to perform a requested action.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002C<br />STATUS_LOG_PINNED</p> + </td> + <td> + <p>The log space cannot be reclaimed because the log is pinned.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002D<br />STATUS_LOG_METADATA_FLUSH_FAILED</p> + </td> + <td> + <p>The log metadata flush failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002E<br />STATUS_LOG_INCONSISTENT_SECURITY</p> + </td> + <td> + <p>Security on the log and its containers is inconsistent.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A002F<br />STATUS_LOG_APPENDED_FLUSH_FAILED</p> + </td> + <td> + <p>Records were appended to the log or reservation changes were made, but the log could not be flushed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01A0030<br />STATUS_LOG_PINNED_RESERVATION</p> + </td> + <td> + <p>The log is pinned due to reservation consuming most of the log space. Free some reserved records to make space available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01B00EA<br />STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD</p> + </td> + <td> + <p>{Display Driver Stopped Responding} The %hs display driver has stopped working normally. Save your work and reboot the system to restore full display functionality. The next time you reboot the computer, a dialog box will allow you to upload data about this failure to Microsoft.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0001<br />STATUS_FLT_NO_HANDLER_DEFINED</p> + </td> + <td> + <p>A handler was not defined by the filter for this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0002<br />STATUS_FLT_CONTEXT_ALREADY_DEFINED</p> + </td> + <td> + <p>A context is already defined for this object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0003<br />STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST</p> + </td> + <td> + <p>Asynchronous requests are not valid for this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0004<br />STATUS_FLT_DISALLOW_FAST_IO</p> + </td> + <td> + <p>This is an internal error code used by the filter manager to determine if a fast I/O operation should be forced down the input/output request packet (IRP) path. Minifilters should never return this value.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0005<br />STATUS_FLT_INVALID_NAME_REQUEST</p> + </td> + <td> + <p>An invalid name request was made. The name requested cannot be retrieved at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0006<br />STATUS_FLT_NOT_SAFE_TO_POST_OPERATION</p> + </td> + <td> + <p>Posting this operation to a worker thread for further processing is not safe at this time because it could lead to a system deadlock.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0007<br />STATUS_FLT_NOT_INITIALIZED</p> + </td> + <td> + <p>The Filter Manager was not initialized when a filter tried to register. Make sure that the Filter Manager is loaded as a driver.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0008<br />STATUS_FLT_FILTER_NOT_READY</p> + </td> + <td> + <p>The filter is not ready for attachment to volumes because it has not finished initializing (FltStartFiltering has not been called).</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0009<br />STATUS_FLT_POST_OPERATION_CLEANUP</p> + </td> + <td> + <p>The filter must clean up any operation-specific context at this time because it is being removed from the system before the operation is completed by the lower drivers.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000A<br />STATUS_FLT_INTERNAL_ERROR</p> + </td> + <td> + <p>The Filter Manager had an internal error from which it cannot recover; therefore, the operation has failed. This is usually the result of a filter returning an invalid value from a pre-operation callback.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000B<br />STATUS_FLT_DELETING_OBJECT</p> + </td> + <td> + <p>The object specified for this action is in the process of being deleted; therefore, the action requested cannot be completed at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000C<br />STATUS_FLT_MUST_BE_NONPAGED_POOL</p> + </td> + <td> + <p>A nonpaged pool must be used for this type of context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000D<br />STATUS_FLT_DUPLICATE_ENTRY</p> + </td> + <td> + <p>A duplicate handler definition has been provided for an operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000E<br />STATUS_FLT_CBDQ_DISABLED</p> + </td> + <td> + <p>The callback data queue has been disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C000F<br />STATUS_FLT_DO_NOT_ATTACH</p> + </td> + <td> + <p>Do not attach the filter to the volume at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0010<br />STATUS_FLT_DO_NOT_DETACH</p> + </td> + <td> + <p>Do not detach the filter from the volume at this time.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0011<br />STATUS_FLT_INSTANCE_ALTITUDE_COLLISION</p> + </td> + <td> + <p>An instance already exists at this altitude on the volume specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0012<br />STATUS_FLT_INSTANCE_NAME_COLLISION</p> + </td> + <td> + <p>An instance already exists with this name on the volume specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0013<br />STATUS_FLT_FILTER_NOT_FOUND</p> + </td> + <td> + <p>The system could not find the filter specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0014<br />STATUS_FLT_VOLUME_NOT_FOUND</p> + </td> + <td> + <p>The system could not find the volume specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0015<br />STATUS_FLT_INSTANCE_NOT_FOUND</p> + </td> + <td> + <p>The system could not find the instance specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0016<br />STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND</p> + </td> + <td> + <p>No registered context allocation definition was found for the given request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0017<br />STATUS_FLT_INVALID_CONTEXT_REGISTRATION</p> + </td> + <td> + <p>An invalid parameter was specified during context registration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0018<br />STATUS_FLT_NAME_CACHE_MISS</p> + </td> + <td> + <p>The name requested was not found in the Filter Manager name cache and could not be retrieved from the file system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0019<br />STATUS_FLT_NO_DEVICE_OBJECT</p> + </td> + <td> + <p>The requested device object does not exist for the given volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C001A<br />STATUS_FLT_VOLUME_ALREADY_MOUNTED</p> + </td> + <td> + <p>The specified volume is already mounted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C001B<br />STATUS_FLT_ALREADY_ENLISTED</p> + </td> + <td> + <p>The specified transaction context is already enlisted in a transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C001C<br />STATUS_FLT_CONTEXT_ALREADY_LINKED</p> + </td> + <td> + <p>The specified context is already attached to another object.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01C0020<br />STATUS_FLT_NO_WAITER_FOR_REPLY</p> + </td> + <td> + <p>No waiter is present for the filter's reply to this message.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0001<br />STATUS_MONITOR_NO_DESCRIPTOR</p> + </td> + <td> + <p>A monitor descriptor could not be obtained.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0002<br />STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT</p> + </td> + <td> + <p>This release does not support the format of the obtained monitor descriptor.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0003<br />STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM</p> + </td> + <td> + <p>The checksum of the obtained monitor descriptor is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0004<br />STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK</p> + </td> + <td> + <p>The monitor descriptor contains an invalid standard timing block.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0005<br />STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED</p> + </td> + <td> + <p>WMI data-block registration failed for one of the MSMonitorClass WMI subclasses.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0006<br />STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK</p> + </td> + <td> + <p>The provided monitor descriptor block is either corrupted or does not contain the monitor's detailed serial number.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0007<br />STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK</p> + </td> + <td> + <p>The provided monitor descriptor block is either corrupted or does not contain the monitor's user-friendly name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0008<br />STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA</p> + </td> + <td> + <p>There is no monitor descriptor data at the specified (offset or size) region.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D0009<br />STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK</p> + </td> + <td> + <p>The monitor descriptor contains an invalid detailed timing block.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01D000A<br />STATUS_MONITOR_INVALID_MANUFACTURE_DATE</p> + </td> + <td> + <p>Monitor descriptor contains invalid manufacture date.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0000<br />STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER</p> + </td> + <td> + <p>Exclusive mode ownership is needed to create an unmanaged primary allocation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0001<br />STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER</p> + </td> + <td> + <p>The driver needs more DMA buffer space to complete the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0002<br />STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER</p> + </td> + <td> + <p>The specified display adapter handle is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0003<br />STATUS_GRAPHICS_ADAPTER_WAS_RESET</p> + </td> + <td> + <p>The specified display adapter and all of its state have been reset.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0004<br />STATUS_GRAPHICS_INVALID_DRIVER_MODEL</p> + </td> + <td> + <p>The driver stack does not match the expected driver model.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0005<br />STATUS_GRAPHICS_PRESENT_MODE_CHANGED</p> + </td> + <td> + <p>Present happened but ended up into the changed desktop mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0006<br />STATUS_GRAPHICS_PRESENT_OCCLUDED</p> + </td> + <td> + <p>Nothing to present due to desktop occlusion.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0007<br />STATUS_GRAPHICS_PRESENT_DENIED</p> + </td> + <td> + <p>Not able to present due to denial of desktop access.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0008<br />STATUS_GRAPHICS_CANNOTCOLORCONVERT</p> + </td> + <td> + <p>Not able to present with color conversion.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E000B<br />STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED</p> + </td> + <td> + <p>Present redirection is disabled (desktop windowing management subsystem is off).</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E000C<br />STATUS_GRAPHICS_PRESENT_UNOCCLUDED</p> + </td> + <td> + <p>Previous exclusive VidPn source owner has released its ownership</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0100<br />STATUS_GRAPHICS_NO_VIDEO_MEMORY</p> + </td> + <td> + <p>Not enough video memory is available to complete the operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0101<br />STATUS_GRAPHICS_CANT_LOCK_MEMORY</p> + </td> + <td> + <p>Could not probe and lock the underlying memory of an allocation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0102<br />STATUS_GRAPHICS_ALLOCATION_BUSY</p> + </td> + <td> + <p>The allocation is currently busy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0103<br />STATUS_GRAPHICS_TOO_MANY_REFERENCES</p> + </td> + <td> + <p>An object being referenced has already reached the maximum reference count and cannot be referenced further.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0104<br />STATUS_GRAPHICS_TRY_AGAIN_LATER</p> + </td> + <td> + <p>A problem could not be solved due to an existing condition. Try again later.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0105<br />STATUS_GRAPHICS_TRY_AGAIN_NOW</p> + </td> + <td> + <p>A problem could not be solved due to an existing condition. Try again now.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0106<br />STATUS_GRAPHICS_ALLOCATION_INVALID</p> + </td> + <td> + <p>The allocation is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0107<br />STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE</p> + </td> + <td> + <p>No more unswizzling apertures are currently available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0108<br />STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED</p> + </td> + <td> + <p>The current allocation cannot be unswizzled by an aperture.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0109<br />STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION</p> + </td> + <td> + <p>The request failed because a pinned allocation cannot be evicted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0110<br />STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE</p> + </td> + <td> + <p>The allocation cannot be used from its current segment location for the specified operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0111<br />STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION</p> + </td> + <td> + <p>A locked allocation cannot be used in the current command buffer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0112<br />STATUS_GRAPHICS_ALLOCATION_CLOSED</p> + </td> + <td> + <p>The allocation being referenced has been closed permanently.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0113<br />STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE</p> + </td> + <td> + <p>An invalid allocation instance is being referenced.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0114<br />STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE</p> + </td> + <td> + <p>An invalid allocation handle is being referenced.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0115<br />STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE</p> + </td> + <td> + <p>The allocation being referenced does not belong to the current device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0116<br />STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST</p> + </td> + <td> + <p>The specified allocation lost its content.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0200<br />STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE</p> + </td> + <td> + <p>A GPU exception was detected on the given device. The device cannot be scheduled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0300<br />STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY</p> + </td> + <td> + <p>The specified VidPN topology is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0301<br />STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED</p> + </td> + <td> + <p>The specified VidPN topology is valid but is not supported by this model of the display adapter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0302<br />STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED</p> + </td> + <td> + <p>The specified VidPN topology is valid but is not currently supported by the display adapter due to allocation of its resources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0303<br />STATUS_GRAPHICS_INVALID_VIDPN</p> + </td> + <td> + <p>The specified VidPN handle is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0304<br />STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE</p> + </td> + <td> + <p>The specified video present source is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0305<br />STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET</p> + </td> + <td> + <p>The specified video present target is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0306<br />STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED</p> + </td> + <td> + <p>The specified VidPN modality is not supported (for example, at least two of the pinned modes are not co-functional).</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0308<br />STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET</p> + </td> + <td> + <p>The specified VidPN source mode set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0309<br />STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET</p> + </td> + <td> + <p>The specified VidPN target mode set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E030A<br />STATUS_GRAPHICS_INVALID_FREQUENCY</p> + </td> + <td> + <p>The specified video signal frequency is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E030B<br />STATUS_GRAPHICS_INVALID_ACTIVE_REGION</p> + </td> + <td> + <p>The specified video signal active region is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E030C<br />STATUS_GRAPHICS_INVALID_TOTAL_REGION</p> + </td> + <td> + <p>The specified video signal total region is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0310<br />STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE</p> + </td> + <td> + <p>The specified video present source mode is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0311<br />STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE</p> + </td> + <td> + <p>The specified video present target mode is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0312<br />STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET</p> + </td> + <td> + <p>The pinned mode must remain in the set on the VidPN's co-functional modality enumeration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0313<br />STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY</p> + </td> + <td> + <p>The specified video present path is already in the VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0314<br />STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET</p> + </td> + <td> + <p>The specified mode is already in the mode set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0315<br />STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET</p> + </td> + <td> + <p>The specified video present source set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0316<br />STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET</p> + </td> + <td> + <p>The specified video present target set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0317<br />STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET</p> + </td> + <td> + <p>The specified video present source is already in the video present source set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0318<br />STATUS_GRAPHICS_TARGET_ALREADY_IN_SET</p> + </td> + <td> + <p>The specified video present target is already in the video present target set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0319<br />STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH</p> + </td> + <td> + <p>The specified VidPN present path is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E031A<br />STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY</p> + </td> + <td> + <p>The miniport has no recommendation for augmenting the specified VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E031B<br />STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET</p> + </td> + <td> + <p>The specified monitor frequency range set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E031C<br />STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE</p> + </td> + <td> + <p>The specified monitor frequency range is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E031D<br />STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET</p> + </td> + <td> + <p>The specified frequency range is not in the specified monitor frequency range set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E031F<br />STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET</p> + </td> + <td> + <p>The specified frequency range is already in the specified monitor frequency range set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0320<br />STATUS_GRAPHICS_STALE_MODESET</p> + </td> + <td> + <p>The specified mode set is stale. Reacquire the new mode set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0321<br />STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET</p> + </td> + <td> + <p>The specified monitor source mode set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0322<br />STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE</p> + </td> + <td> + <p>The specified monitor source mode is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0323<br />STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN</p> + </td> + <td> + <p>The miniport does not have a recommendation regarding the request to provide a functional VidPN given the current display adapter configuration.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0324<br />STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE</p> + </td> + <td> + <p>The ID of the specified mode is being used by another mode in the set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0325<br />STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION</p> + </td> + <td> + <p>The system failed to determine a mode that is supported by both the display adapter and the monitor connected to it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0326<br />STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES</p> + </td> + <td> + <p>The number of video present targets must be greater than or equal to the number of video present sources.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0327<br />STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY</p> + </td> + <td> + <p>The specified present path is not in the VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0328<br />STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE</p> + </td> + <td> + <p>The display adapter must have at least one video present source.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0329<br />STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET</p> + </td> + <td> + <p>The display adapter must have at least one video present target.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032A<br />STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET</p> + </td> + <td> + <p>The specified monitor descriptor set is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032B<br />STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR</p> + </td> + <td> + <p>The specified monitor descriptor is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032C<br />STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET</p> + </td> + <td> + <p>The specified descriptor is not in the specified monitor descriptor set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032D<br />STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET</p> + </td> + <td> + <p>The specified descriptor is already in the specified monitor descriptor set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032E<br />STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE</p> + </td> + <td> + <p>The ID of the specified monitor descriptor is being used by another descriptor in the set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E032F<br />STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE</p> + </td> + <td> + <p>The specified video present target subset type is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0330<br />STATUS_GRAPHICS_RESOURCES_NOT_RELATED</p> + </td> + <td> + <p>Two or more of the specified resources are not related to each other, as defined by the interface semantics.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0331<br />STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE</p> + </td> + <td> + <p>The ID of the specified video present source is being used by another source in the set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0332<br />STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE</p> + </td> + <td> + <p>The ID of the specified video present target is being used by another target in the set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0333<br />STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET</p> + </td> + <td> + <p>The specified VidPN source cannot be used because there is no available VidPN target to connect it to.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0334<br />STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER</p> + </td> + <td> + <p>The newly arrived monitor could not be associated with a display adapter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0335<br />STATUS_GRAPHICS_NO_VIDPNMGR</p> + </td> + <td> + <p>The particular display adapter does not have an associated VidPN manager.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0336<br />STATUS_GRAPHICS_NO_ACTIVE_VIDPN</p> + </td> + <td> + <p>The VidPN manager of the particular display adapter does not have an active VidPN.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0337<br />STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY</p> + </td> + <td> + <p>The specified VidPN topology is stale; obtain the new topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0338<br />STATUS_GRAPHICS_MONITOR_NOT_CONNECTED</p> + </td> + <td> + <p>No monitor is connected on the specified video present target.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0339<br />STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY</p> + </td> + <td> + <p>The specified source is not part of the specified VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033A<br />STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE</p> + </td> + <td> + <p>The specified primary surface size is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033B<br />STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE</p> + </td> + <td> + <p>The specified visible region size is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033C<br />STATUS_GRAPHICS_INVALID_STRIDE</p> + </td> + <td> + <p>The specified stride is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033D<br />STATUS_GRAPHICS_INVALID_PIXELFORMAT</p> + </td> + <td> + <p>The specified pixel format is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033E<br />STATUS_GRAPHICS_INVALID_COLORBASIS</p> + </td> + <td> + <p>The specified color basis is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E033F<br />STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE</p> + </td> + <td> + <p>The specified pixel value access mode is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0340<br />STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY</p> + </td> + <td> + <p>The specified target is not part of the specified VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0341<br />STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT</p> + </td> + <td> + <p>Failed to acquire the display mode management interface.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0342<br />STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE</p> + </td> + <td> + <p>The specified VidPN source is already owned by a DMM client and cannot be used until that client releases it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0343<br />STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN</p> + </td> + <td> + <p>The specified VidPN is active and cannot be accessed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0344<br />STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL</p> + </td> + <td> + <p>The specified VidPN's present path importance ordinal is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0345<br />STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION</p> + </td> + <td> + <p>The specified VidPN's present path content geometry transformation is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0346<br />STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED</p> + </td> + <td> + <p>The specified content geometry transformation is not supported on the respective VidPN present path.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0347<br />STATUS_GRAPHICS_INVALID_GAMMA_RAMP</p> + </td> + <td> + <p>The specified gamma ramp is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0348<br />STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED</p> + </td> + <td> + <p>The specified gamma ramp is not supported on the respective VidPN present path.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0349<br />STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED</p> + </td> + <td> + <p>Multisampling is not supported on the respective VidPN present path.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E034A<br />STATUS_GRAPHICS_MODE_NOT_IN_MODESET</p> + </td> + <td> + <p>The specified mode is not in the specified mode set.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E034D<br />STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON</p> + </td> + <td> + <p>The specified VidPN topology recommendation reason is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E034E<br />STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE</p> + </td> + <td> + <p>The specified VidPN present path content type is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E034F<br />STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE</p> + </td> + <td> + <p>The specified VidPN present path copy protection type is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0350<br />STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS</p> + </td> + <td> + <p>Only one unassigned mode set can exist at any one time for a particular VidPN source or target.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0352<br />STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING</p> + </td> + <td> + <p>The specified scan line ordering type is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0353<br />STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED</p> + </td> + <td> + <p>The topology changes are not allowed for the specified VidPN.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0354<br />STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS</p> + </td> + <td> + <p>All available importance ordinals are being used in the specified topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0355<br />STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT</p> + </td> + <td> + <p>The specified primary surface has a different private-format attribute than the current primary surface.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0356<br />STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM</p> + </td> + <td> + <p>The specified mode-pruning algorithm is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0357<br />STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN</p> + </td> + <td> + <p>The specified monitor-capability origin is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0358<br />STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT</p> + </td> + <td> + <p>The specified monitor-frequency range constraint is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0359<br />STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED</p> + </td> + <td> + <p>The maximum supported number of present paths has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E035A<br />STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION</p> + </td> + <td> + <p>The miniport requested that augmentation be canceled for the specified source of the specified VidPN's topology.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E035B<br />STATUS_GRAPHICS_INVALID_CLIENT_TYPE</p> + </td> + <td> + <p>The specified client type was not recognized.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E035C<br />STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET</p> + </td> + <td> + <p>The client VidPN is not set on this adapter (for example, no user mode-initiated mode changes have taken place on this adapter).</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0400<br />STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED</p> + </td> + <td> + <p>The specified display adapter child device already has an external device connected to it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0401<br />STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED</p> + </td> + <td> + <p>The display adapter child device does not support reporting a descriptor.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0430<br />STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER</p> + </td> + <td> + <p>The display adapter is not linked to any other adapters.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0431<br />STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED</p> + </td> + <td> + <p>The lead adapter in a linked configuration was not enumerated yet.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0432<br />STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED</p> + </td> + <td> + <p>Some chain adapters in a linked configuration have not yet been enumerated.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0433<br />STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY</p> + </td> + <td> + <p>The chain of linked adapters is not ready to start because of an unknown failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0434<br />STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED</p> + </td> + <td> + <p>An attempt was made to start a lead link display adapter when the chain links had not yet started.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0435<br />STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON</p> + </td> + <td> + <p>An attempt was made to turn on a lead link display adapter when the chain links were turned off.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0436<br />STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE</p> + </td> + <td> + <p>The adapter link was found in an inconsistent state. Not all adapters are in an expected PNP/power state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0438<br />STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER</p> + </td> + <td> + <p>The driver trying to start is not the same as the driver for the posted display adapter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E043B<br />STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED</p> + </td> + <td> + <p>An operation is being attempted that requires the display adapter to be in a quiescent state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0500<br />STATUS_GRAPHICS_OPM_NOT_SUPPORTED</p> + </td> + <td> + <p>The driver does not support OPM.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0501<br />STATUS_GRAPHICS_COPP_NOT_SUPPORTED</p> + </td> + <td> + <p>The driver does not support COPP.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0502<br />STATUS_GRAPHICS_UAB_NOT_SUPPORTED</p> + </td> + <td> + <p>The driver does not support UAB.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0503<br />STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS</p> + </td> + <td> + <p>The specified encrypted parameters are invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0504<br />STATUS_GRAPHICS_OPM_PARAMETER_ARRAY_TOO_SMALL</p> + </td> + <td> + <p>An array passed to a function cannot hold all of the data that the function wants to put in it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0505<br />STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST</p> + </td> + <td> + <p>The GDI display device passed to this function does not have any active protected outputs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0506<br />STATUS_GRAPHICS_PVP_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME</p> + </td> + <td> + <p>The PVP cannot find an actual GDI display device that corresponds to the passed-in GDI display device name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0507<br />STATUS_GRAPHICS_PVP_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP</p> + </td> + <td> + <p>This function failed because the GDI display device passed to it was not attached to the Windows desktop.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0508<br />STATUS_GRAPHICS_PVP_MIRRORING_DEVICES_NOT_SUPPORTED</p> + </td> + <td> + <p>The PVP does not support mirroring display devices because they do not have any protected outputs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050A<br />STATUS_GRAPHICS_OPM_INVALID_POINTER</p> + </td> + <td> + <p>The function failed because an invalid pointer parameter was passed to it. A pointer parameter is invalid if it is null, is not correctly aligned, or it points to an invalid address or a kernel mode address.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050B<br />STATUS_GRAPHICS_OPM_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error caused an operation to fail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050C<br />STATUS_GRAPHICS_OPM_INVALID_HANDLE</p> + </td> + <td> + <p>The function failed because the caller passed in an invalid OPM user-mode handle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050D<br />STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE</p> + </td> + <td> + <p>This function failed because the GDI device passed to it did not have any monitors associated with it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050E<br />STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH</p> + </td> + <td> + <p>A certificate could not be returned because the certificate buffer passed to the function was too small.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E050F<br />STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED</p> + </td> + <td> + <p>DxgkDdiOpmCreateProtectedOutput() could not create a protected output because the video present yarget is in spanning mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0510<br />STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED</p> + </td> + <td> + <p>DxgkDdiOpmCreateProtectedOutput() could not create a protected output because the video present target is in theater mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0511<br />STATUS_GRAPHICS_PVP_HFS_FAILED</p> + </td> + <td> + <p>The function call failed because the display adapter's hardware functionality scan (HFS) failed to validate the graphics hardware.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0512<br />STATUS_GRAPHICS_OPM_INVALID_SRM</p> + </td> + <td> + <p>The HDCP SRM passed to this function did not comply with section 5 of the HDCP 1.1 specification.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0513<br />STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP</p> + </td> + <td> + <p>The protected output cannot enable the HDCP system because it does not support it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0514<br />STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP</p> + </td> + <td> + <p>The protected output cannot enable analog copy protection because it does not support it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0515<br />STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA</p> + </td> + <td> + <p>The protected output cannot enable the CGMS-A protection technology because it does not support it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0516<br />STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET</p> + </td> + <td> + <p>DxgkDdiOPMGetInformation() cannot return the version of the SRM being used because the application never successfully passed an SRM to the protected output.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0517<br />STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH</p> + </td> + <td> + <p>DxgkDdiOPMConfigureProtectedOutput() cannot enable the specified output protection technology because the output's screen resolution is too high.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0518<br />STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE</p> + </td> + <td> + <p>DxgkDdiOPMConfigureProtectedOutput() cannot enable HDCP because other physical outputs are using the display adapter's HDCP hardware.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051A<br />STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS</p> + </td> + <td> + <p>The operating system asynchronously destroyed this OPM-protected output because the operating system state changed. This error typically occurs because the monitor PDO associated with this protected output was removed or stopped, the protected output's session became a nonconsole session, or the protected output's desktop became inactive.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051B<br />STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS</p> + </td> + <td> + <p>OPM functions cannot be called when a session is changing its type. Three types of sessions currently exist: console, disconnected, and remote (RDP or ICA).</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051C<br />STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS</p> + </td> + <td> + <p>The DxgkDdiOPMGetCOPPCompatibleInformation, DxgkDdiOPMGetInformation, or DxgkDdiOPMConfigureProtectedOutput function failed. This error is returned only if a protected output has OPM semantics. </p> + <p>DxgkDdiOPMGetCOPPCompatibleInformation always returns this error if a protected output has OPM semantics.</p> + <p>DxgkDdiOPMGetInformation returns this error code if the caller requested COPP-specific information.</p> + <p>DxgkDdiOPMConfigureProtectedOutput returns this error when the caller tries to use a COPP-specific command.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051D<br />STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST</p> + </td> + <td> + <p>The DxgkDdiOPMGetInformation and DxgkDdiOPMGetCOPPCompatibleInformation functions return this error code if the passed-in sequence number is not the expected sequence number or the passed-in OMAC value is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051E<br />STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR</p> + </td> + <td> + <p>The function failed because an unexpected error occurred inside a display driver.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E051F<br />STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS</p> + </td> + <td> + <p>The DxgkDdiOPMGetCOPPCompatibleInformation, DxgkDdiOPMGetInformation, or DxgkDdiOPMConfigureProtectedOutput function failed. This error is returned only if a protected output has COPP semantics. </p> + <p>DxgkDdiOPMGetCOPPCompatibleInformation returns this error code if the caller requested OPM-specific information.</p> + <p>DxgkDdiOPMGetInformation always returns this error if a protected output has COPP semantics.</p> + <p>DxgkDdiOPMConfigureProtectedOutput returns this error when the caller tries to use an OPM-specific command.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0520<br />STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED</p> + </td> + <td> + <p>The DxgkDdiOPMGetCOPPCompatibleInformation and DxgkDdiOPMConfigureProtectedOutput functions return this error if the display driver does not support the DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING and DXGKMDT_OPM_SET_ACP_AND_CGMSA_SIGNALING GUIDs.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0521<br />STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST</p> + </td> + <td> + <p>The DxgkDdiOPMConfigureProtectedOutput function returns this error code if the passed-in sequence number is not the expected sequence number or the passed-in OMAC value is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0580<br />STATUS_GRAPHICS_I2C_NOT_SUPPORTED</p> + </td> + <td> + <p>The monitor connected to the specified video output does not have an I2C bus.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0581<br />STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST</p> + </td> + <td> + <p>No device on the I2C bus has the specified address.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0582<br />STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA</p> + </td> + <td> + <p>An error occurred while transmitting data to the device on the I2C bus.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0583<br />STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA</p> + </td> + <td> + <p>An error occurred while receiving data from the device on the I2C bus.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0584<br />STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED</p> + </td> + <td> + <p>The monitor does not support the specified VCP code.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0585<br />STATUS_GRAPHICS_DDCCI_INVALID_DATA</p> + </td> + <td> + <p>The data received from the monitor is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0586<br />STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE</p> + </td> + <td> + <p>A function call failed because a monitor returned an invalid timing status byte when the operating system used the DDC/CI get timing report and timing message command to get a timing report from a monitor.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0587<br />STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING</p> + </td> + <td> + <p>A monitor returned a DDC/CI capabilities string that did not comply with the ACCESS.bus 3.0, DDC/CI 1.1, or MCCS 2 Revision 1 specification.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0588<br />STATUS_GRAPHICS_MCA_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error caused an operation to fail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E0589<br />STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND</p> + </td> + <td> + <p>An operation failed because a DDC/CI message had an invalid value in its command field.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E058A<br />STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH</p> + </td> + <td> + <p>This error occurred because a DDC/CI message had an invalid value in its length field.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E058B<br />STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM</p> + </td> + <td> + <p>This error occurred because the value in a DDC/CI message's checksum field did not match the message's computed checksum value. This error implies that the data was corrupted while it was being transmitted from a monitor to a computer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E058C<br />STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE</p> + </td> + <td> + <p>This function failed because an invalid monitor handle was passed to it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E058D<br />STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS</p> + </td> + <td> + <p>The operating system asynchronously destroyed the monitor that corresponds to this handle because the operating system's state changed. This error typically occurs because the monitor PDO associated with this handle was removed or stopped, or a display mode change occurred. A display mode change occurs when Windows sends a WM_DISPLAYCHANGE message to applications.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E0<br />STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED</p> + </td> + <td> + <p>This function can be used only if a program is running in the local console session. It cannot be used if a program is running on a remote desktop session or on a terminal server session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E1<br />STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME</p> + </td> + <td> + <p>This function cannot find an actual GDI display device that corresponds to the specified GDI display device name.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E2<br />STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP</p> + </td> + <td> + <p>The function failed because the specified GDI display device was not attached to the Windows desktop.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E3<br />STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED</p> + </td> + <td> + <p>This function does not support GDI mirroring display devices because GDI mirroring display devices do not have any physical monitors associated with them.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E4<br />STATUS_GRAPHICS_INVALID_POINTER</p> + </td> + <td> + <p>The function failed because an invalid pointer parameter was passed to it. A pointer parameter is invalid if it is null, is not correctly aligned, or points to an invalid address or to a kernel mode address.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E5<br />STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE</p> + </td> + <td> + <p>This function failed because the GDI device passed to it did not have a monitor associated with it.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E6<br />STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL</p> + </td> + <td> + <p>An array passed to the function cannot hold all of the data that the function must copy into the array.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E7<br />STATUS_GRAPHICS_INTERNAL_ERROR</p> + </td> + <td> + <p>An internal error caused an operation to fail.</p> + </td> + </tr> + <tr> + <td> + <p>0xC01E05E8<br />STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS</p> + </td> + <td> + <p>The function failed because the current session is changing its type. This function cannot be called when the current session is changing its type. Three types of sessions currently exist: console, disconnected, and remote (RDP or ICA).</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210000<br />STATUS_FVE_LOCKED_VOLUME</p> + </td> + <td> + <p>The volume must be unlocked before it can be used.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210001<br />STATUS_FVE_NOT_ENCRYPTED</p> + </td> + <td> + <p>The volume is fully decrypted and no key is available.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210002<br />STATUS_FVE_BAD_INFORMATION</p> + </td> + <td> + <p>The control block for the encrypted volume is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210003<br />STATUS_FVE_TOO_SMALL</p> + </td> + <td> + <p>Not enough free space remains on the volume to allow encryption.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210004<br />STATUS_FVE_FAILED_WRONG_FS</p> + </td> + <td> + <p>The partition cannot be encrypted because the file system is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210005<br />STATUS_FVE_FAILED_BAD_FS</p> + </td> + <td> + <p>The file system is inconsistent. Run the Check Disk utility.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210006<br />STATUS_FVE_FS_NOT_EXTENDED</p> + </td> + <td> + <p>The file system does not extend to the end of the volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210007<br />STATUS_FVE_FS_MOUNTED</p> + </td> + <td> + <p>This operation cannot be performed while a file system is mounted on the volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210008<br />STATUS_FVE_NO_LICENSE</p> + </td> + <td> + <p>BitLocker Drive Encryption is not included with this version of Windows.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210009<br />STATUS_FVE_ACTION_NOT_ALLOWED</p> + </td> + <td> + <p>The requested action was denied by the FVE control engine.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000A<br />STATUS_FVE_BAD_DATA</p> + </td> + <td> + <p>The data supplied is malformed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000B<br />STATUS_FVE_VOLUME_NOT_BOUND</p> + </td> + <td> + <p>The volume is not bound to the system.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000C<br />STATUS_FVE_NOT_DATA_VOLUME</p> + </td> + <td> + <p>The volume specified is not a data volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000D<br />STATUS_FVE_CONV_READ_ERROR</p> + </td> + <td> + <p>A read operation failed while converting the volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000E<br />STATUS_FVE_CONV_WRITE_ERROR</p> + </td> + <td> + <p>A write operation failed while converting the volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021000F<br />STATUS_FVE_OVERLAPPED_UPDATE</p> + </td> + <td> + <p>The control block for the encrypted volume was updated by another thread. Try again.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210010<br />STATUS_FVE_FAILED_SECTOR_SIZE</p> + </td> + <td> + <p>The volume encryption algorithm cannot be used on this sector size.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210011<br />STATUS_FVE_FAILED_AUTHENTICATION</p> + </td> + <td> + <p>BitLocker recovery authentication failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210012<br />STATUS_FVE_NOT_OS_VOLUME</p> + </td> + <td> + <p>The volume specified is not the boot operating system volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210013<br />STATUS_FVE_KEYFILE_NOT_FOUND</p> + </td> + <td> + <p>The BitLocker startup key or recovery password could not be read from external media.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210014<br />STATUS_FVE_KEYFILE_INVALID</p> + </td> + <td> + <p>The BitLocker startup key or recovery password file is corrupt or invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210015<br />STATUS_FVE_KEYFILE_NO_VMK</p> + </td> + <td> + <p>The BitLocker encryption key could not be obtained from the startup key or the recovery password.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210016<br />STATUS_FVE_TPM_DISABLED</p> + </td> + <td> + <p>The TPM is disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210017<br />STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO</p> + </td> + <td> + <p>The authorization data for the SRK of the TPM is not zero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210018<br />STATUS_FVE_TPM_INVALID_PCR</p> + </td> + <td> + <p>The system boot information changed or the TPM locked out access to BitLocker encryption keys until the computer is restarted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210019<br />STATUS_FVE_TPM_NO_VMK</p> + </td> + <td> + <p>The BitLocker encryption key could not be obtained from the TPM.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001A<br />STATUS_FVE_PIN_INVALID</p> + </td> + <td> + <p>The BitLocker encryption key could not be obtained from the TPM and PIN.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001B<br />STATUS_FVE_AUTH_INVALID_APPLICATION</p> + </td> + <td> + <p>A boot application hash does not match the hash computed when BitLocker was turned on.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001C<br />STATUS_FVE_AUTH_INVALID_CONFIG</p> + </td> + <td> + <p>The Boot Configuration Data (BCD) settings are not supported or have changed because BitLocker was enabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001D<br />STATUS_FVE_DEBUGGER_ENABLED</p> + </td> + <td> + <p>Boot debugging is enabled. Run Windows Boot Configuration Data Store Editor (bcdedit.exe) to turn it off.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001E<br />STATUS_FVE_DRY_RUN_FAILED</p> + </td> + <td> + <p>The BitLocker encryption key could not be obtained.</p> + </td> + </tr> + <tr> + <td> + <p>0xC021001F<br />STATUS_FVE_BAD_METADATA_POINTER</p> + </td> + <td> + <p>The metadata disk region pointer is incorrect.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210020<br />STATUS_FVE_OLD_METADATA_COPY</p> + </td> + <td> + <p>The backup copy of the metadata is out of date.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210021<br />STATUS_FVE_REBOOT_REQUIRED</p> + </td> + <td> + <p>No action was taken because a system restart is required.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210022<br />STATUS_FVE_RAW_ACCESS</p> + </td> + <td> + <p>No action was taken because BitLocker Drive Encryption is in RAW access mode.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210023<br />STATUS_FVE_RAW_BLOCKED</p> + </td> + <td> + <p>BitLocker Drive Encryption cannot enter RAW access mode for this volume.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210026<br />STATUS_FVE_NO_FEATURE_LICENSE</p> + </td> + <td> + <p>This feature of BitLocker Drive Encryption is not included with this version of Windows.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210027<br />STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED</p> + </td> + <td> + <p>Group policy does not permit turning off BitLocker Drive Encryption on roaming data volumes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210028<br />STATUS_FVE_CONV_RECOVERY_FAILED</p> + </td> + <td> + <p>Bitlocker Drive Encryption failed to recover from aborted conversion. This could be due to either all conversion logs being corrupted or the media being write-protected.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210029<br />STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG</p> + </td> + <td> + <p>The requested virtualization size is too big.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0210030<br />STATUS_FVE_VOLUME_TOO_SMALL</p> + </td> + <td> + <p>The drive is too small to be protected using BitLocker Drive Encryption.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220001<br />STATUS_FWP_CALLOUT_NOT_FOUND</p> + </td> + <td> + <p>The callout does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220002<br />STATUS_FWP_CONDITION_NOT_FOUND</p> + </td> + <td> + <p>The filter condition does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220003<br />STATUS_FWP_FILTER_NOT_FOUND</p> + </td> + <td> + <p>The filter does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220004<br />STATUS_FWP_LAYER_NOT_FOUND</p> + </td> + <td> + <p>The layer does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220005<br />STATUS_FWP_PROVIDER_NOT_FOUND</p> + </td> + <td> + <p>The provider does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220006<br />STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND</p> + </td> + <td> + <p>The provider context does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220007<br />STATUS_FWP_SUBLAYER_NOT_FOUND</p> + </td> + <td> + <p>The sublayer does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220008<br />STATUS_FWP_NOT_FOUND</p> + </td> + <td> + <p>The object does not exist.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220009<br />STATUS_FWP_ALREADY_EXISTS</p> + </td> + <td> + <p>An object with that GUID or LUID already exists.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000A<br />STATUS_FWP_IN_USE</p> + </td> + <td> + <p>The object is referenced by other objects and cannot be deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000B<br />STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS</p> + </td> + <td> + <p>The call is not allowed from within a dynamic session.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000C<br />STATUS_FWP_WRONG_SESSION</p> + </td> + <td> + <p>The call was made from the wrong session and cannot be completed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000D<br />STATUS_FWP_NO_TXN_IN_PROGRESS</p> + </td> + <td> + <p>The call must be made from within an explicit transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000E<br />STATUS_FWP_TXN_IN_PROGRESS</p> + </td> + <td> + <p>The call is not allowed from within an explicit transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022000F<br />STATUS_FWP_TXN_ABORTED</p> + </td> + <td> + <p>The explicit transaction has been forcibly canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220010<br />STATUS_FWP_SESSION_ABORTED</p> + </td> + <td> + <p>The session has been canceled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220011<br />STATUS_FWP_INCOMPATIBLE_TXN</p> + </td> + <td> + <p>The call is not allowed from within a read-only transaction.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220012<br />STATUS_FWP_TIMEOUT</p> + </td> + <td> + <p>The call timed out while waiting to acquire the transaction lock.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220013<br />STATUS_FWP_NET_EVENTS_DISABLED</p> + </td> + <td> + <p>The collection of network diagnostic events is disabled.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220014<br />STATUS_FWP_INCOMPATIBLE_LAYER</p> + </td> + <td> + <p>The operation is not supported by the specified layer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220015<br />STATUS_FWP_KM_CLIENTS_ONLY</p> + </td> + <td> + <p>The call is allowed for kernel-mode callers only.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220016<br />STATUS_FWP_LIFETIME_MISMATCH</p> + </td> + <td> + <p>The call tried to associate two objects with incompatible lifetimes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220017<br />STATUS_FWP_BUILTIN_OBJECT</p> + </td> + <td> + <p>The object is built-in and cannot be deleted.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220018<br />STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS</p> + </td> + <td> + <p>The maximum number of boot-time filters has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220018<br />STATUS_FWP_TOO_MANY_CALLOUTS</p> + </td> + <td> + <p>The maximum number of callouts has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220019<br />STATUS_FWP_NOTIFICATION_DROPPED</p> + </td> + <td> + <p>A notification could not be delivered because a message queue has reached maximum capacity.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001A<br />STATUS_FWP_TRAFFIC_MISMATCH</p> + </td> + <td> + <p>The traffic parameters do not match those for the security association context.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001B<br />STATUS_FWP_INCOMPATIBLE_SA_STATE</p> + </td> + <td> + <p>The call is not allowed for the current security association state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001C<br />STATUS_FWP_NULL_POINTER</p> + </td> + <td> + <p>A required pointer is null.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001D<br />STATUS_FWP_INVALID_ENUMERATOR</p> + </td> + <td> + <p>An enumerator is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001E<br />STATUS_FWP_INVALID_FLAGS</p> + </td> + <td> + <p>The flags field contains an invalid value.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022001F<br />STATUS_FWP_INVALID_NET_MASK</p> + </td> + <td> + <p>A network mask is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220020<br />STATUS_FWP_INVALID_RANGE</p> + </td> + <td> + <p>An FWP_RANGE is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220021<br />STATUS_FWP_INVALID_INTERVAL</p> + </td> + <td> + <p>The time interval is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220022<br />STATUS_FWP_ZERO_LENGTH_ARRAY</p> + </td> + <td> + <p>An array that must contain at least one element has a zero length.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220023<br />STATUS_FWP_NULL_DISPLAY_NAME</p> + </td> + <td> + <p>The displayData.name field cannot be null.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220024<br />STATUS_FWP_INVALID_ACTION_TYPE</p> + </td> + <td> + <p>The action type is not one of the allowed action types for a filter.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220025<br />STATUS_FWP_INVALID_WEIGHT</p> + </td> + <td> + <p>The filter weight is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220026<br />STATUS_FWP_MATCH_TYPE_MISMATCH</p> + </td> + <td> + <p>A filter condition contains a match type that is not compatible with the operands.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220027<br />STATUS_FWP_TYPE_MISMATCH</p> + </td> + <td> + <p>An FWP_VALUE or FWPM_CONDITION_VALUE is of the wrong type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220028<br />STATUS_FWP_OUT_OF_BOUNDS</p> + </td> + <td> + <p>An integer value is outside the allowed range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220029<br />STATUS_FWP_RESERVED</p> + </td> + <td> + <p>A reserved field is nonzero.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002A<br />STATUS_FWP_DUPLICATE_CONDITION</p> + </td> + <td> + <p>A filter cannot contain multiple conditions operating on a single field.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002B<br />STATUS_FWP_DUPLICATE_KEYMOD</p> + </td> + <td> + <p>A policy cannot contain the same keying module more than once.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002C<br />STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER</p> + </td> + <td> + <p>The action type is not compatible with the layer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002D<br />STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER</p> + </td> + <td> + <p>The action type is not compatible with the sublayer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002E<br />STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER</p> + </td> + <td> + <p>The raw context or the provider context is not compatible with the layer.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022002F<br />STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT</p> + </td> + <td> + <p>The raw context or the provider context is not compatible with the callout.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220030<br />STATUS_FWP_INCOMPATIBLE_AUTH_METHOD</p> + </td> + <td> + <p>The authentication method is not compatible with the policy type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220031<br />STATUS_FWP_INCOMPATIBLE_DH_GROUP</p> + </td> + <td> + <p>The Diffie-Hellman group is not compatible with the policy type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220032<br />STATUS_FWP_EM_NOT_SUPPORTED</p> + </td> + <td> + <p>An IKE policy cannot contain an Extended Mode policy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220033<br />STATUS_FWP_NEVER_MATCH</p> + </td> + <td> + <p>The enumeration template or subscription will never match any objects.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220034<br />STATUS_FWP_PROVIDER_CONTEXT_MISMATCH</p> + </td> + <td> + <p>The provider context is of the wrong type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220035<br />STATUS_FWP_INVALID_PARAMETER</p> + </td> + <td> + <p>The parameter is incorrect.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220036<br />STATUS_FWP_TOO_MANY_SUBLAYERS</p> + </td> + <td> + <p>The maximum number of sublayers has been reached.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220037<br />STATUS_FWP_CALLOUT_NOTIFICATION_FAILED</p> + </td> + <td> + <p>The notification function for a callout returned an error.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220038<br />STATUS_FWP_INCOMPATIBLE_AUTH_CONFIG</p> + </td> + <td> + <p>The IPsec authentication configuration is not compatible with the authentication type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220039<br />STATUS_FWP_INCOMPATIBLE_CIPHER_CONFIG</p> + </td> + <td> + <p>The IPsec cipher configuration is not compatible with the cipher type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC022003C<br />STATUS_FWP_DUPLICATE_AUTH_METHOD</p> + </td> + <td> + <p>A policy cannot contain the same auth method more than once.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220100<br />STATUS_FWP_TCPIP_NOT_READY</p> + </td> + <td> + <p>The TCP/IP stack is not ready.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220101<br />STATUS_FWP_INJECT_HANDLE_CLOSING</p> + </td> + <td> + <p>The injection handle is being closed by another thread.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220102<br />STATUS_FWP_INJECT_HANDLE_STALE</p> + </td> + <td> + <p>The injection handle is stale.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0220103<br />STATUS_FWP_CANNOT_PEND</p> + </td> + <td> + <p>The classify cannot be pended.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230002<br />STATUS_NDIS_CLOSING</p> + </td> + <td> + <p>The binding to the network interface is being closed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230004<br />STATUS_NDIS_BAD_VERSION</p> + </td> + <td> + <p>An invalid version was specified.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230005<br />STATUS_NDIS_BAD_CHARACTERISTICS</p> + </td> + <td> + <p>An invalid characteristics table was used.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230006<br />STATUS_NDIS_ADAPTER_NOT_FOUND</p> + </td> + <td> + <p>Failed to find the network interface or the network interface is not ready.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230007<br />STATUS_NDIS_OPEN_FAILED</p> + </td> + <td> + <p>Failed to open the network interface.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230008<br />STATUS_NDIS_DEVICE_FAILED</p> + </td> + <td> + <p>The network interface has encountered an internal unrecoverable failure.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230009<br />STATUS_NDIS_MULTICAST_FULL</p> + </td> + <td> + <p>The multicast list on the network interface is full.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023000A<br />STATUS_NDIS_MULTICAST_EXISTS</p> + </td> + <td> + <p>An attempt was made to add a duplicate multicast address to the list.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023000B<br />STATUS_NDIS_MULTICAST_NOT_FOUND</p> + </td> + <td> + <p>At attempt was made to remove a multicast address that was never added.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023000C<br />STATUS_NDIS_REQUEST_ABORTED</p> + </td> + <td> + <p>The network interface aborted the request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023000D<br />STATUS_NDIS_RESET_IN_PROGRESS</p> + </td> + <td> + <p>The network interface cannot process the request because it is being reset.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023000F<br />STATUS_NDIS_INVALID_PACKET</p> + </td> + <td> + <p>An attempt was made to send an invalid packet on a network interface.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230010<br />STATUS_NDIS_INVALID_DEVICE_REQUEST</p> + </td> + <td> + <p>The specified request is not a valid operation for the target device.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230011<br />STATUS_NDIS_ADAPTER_NOT_READY</p> + </td> + <td> + <p>The network interface is not ready to complete this operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230014<br />STATUS_NDIS_INVALID_LENGTH</p> + </td> + <td> + <p>The length of the buffer submitted for this operation is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230015<br />STATUS_NDIS_INVALID_DATA</p> + </td> + <td> + <p>The data used for this operation is not valid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230016<br />STATUS_NDIS_BUFFER_TOO_SHORT</p> + </td> + <td> + <p>The length of the submitted buffer for this operation is too small.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230017<br />STATUS_NDIS_INVALID_OID</p> + </td> + <td> + <p>The network interface does not support this object identifier.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230018<br />STATUS_NDIS_ADAPTER_REMOVED</p> + </td> + <td> + <p>The network interface has been removed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230019<br />STATUS_NDIS_UNSUPPORTED_MEDIA</p> + </td> + <td> + <p>The network interface does not support this media type.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001A<br />STATUS_NDIS_GROUP_ADDRESS_IN_USE</p> + </td> + <td> + <p>An attempt was made to remove a token ring group address that is in use by other components.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001B<br />STATUS_NDIS_FILE_NOT_FOUND</p> + </td> + <td> + <p>An attempt was made to map a file that cannot be found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001C<br />STATUS_NDIS_ERROR_READING_FILE</p> + </td> + <td> + <p>An error occurred while NDIS tried to map the file.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001D<br />STATUS_NDIS_ALREADY_MAPPED</p> + </td> + <td> + <p>An attempt was made to map a file that is already mapped.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001E<br />STATUS_NDIS_RESOURCE_CONFLICT</p> + </td> + <td> + <p>An attempt to allocate a hardware resource failed because the resource is used by another component.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023001F<br />STATUS_NDIS_MEDIA_DISCONNECTED</p> + </td> + <td> + <p>The I/O operation failed because the network media is disconnected or the wireless access point is out of range.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0230022<br />STATUS_NDIS_INVALID_ADDRESS</p> + </td> + <td> + <p>The network address used in the request is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002A<br />STATUS_NDIS_PAUSED</p> + </td> + <td> + <p>The offload operation on the network interface has been paused.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002B<br />STATUS_NDIS_INTERFACE_NOT_FOUND</p> + </td> + <td> + <p>The network interface was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002C<br />STATUS_NDIS_UNSUPPORTED_REVISION</p> + </td> + <td> + <p>The revision number specified in the structure is not supported.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002D<br />STATUS_NDIS_INVALID_PORT</p> + </td> + <td> + <p>The specified port does not exist on this network interface.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002E<br />STATUS_NDIS_INVALID_PORT_STATE</p> + </td> + <td> + <p>The current state of the specified port on this network interface does not support the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023002F<br />STATUS_NDIS_LOW_POWER_STATE</p> + </td> + <td> + <p>The miniport adapter is in a lower power state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC02300BB<br />STATUS_NDIS_NOT_SUPPORTED</p> + </td> + <td> + <p>The network interface does not support this request.</p> + </td> + </tr> + <tr> + <td> + <p>0xC023100F<br />STATUS_NDIS_OFFLOAD_POLICY</p> + </td> + <td> + <p>The TCP connection is not offloadable because of a local policy setting.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0231012<br />STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED</p> + </td> + <td> + <p>The TCP connection is not offloadable by the Chimney offload target.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0231013<br />STATUS_NDIS_OFFLOAD_PATH_REJECTED</p> + </td> + <td> + <p>The IP Path object is not in an offloadable state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0232000<br />STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED</p> + </td> + <td> + <p>The wireless LAN interface is in auto-configuration mode and does not support the requested parameter change operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0232001<br />STATUS_NDIS_DOT11_MEDIA_IN_USE</p> + </td> + <td> + <p>The wireless LAN interface is busy and cannot perform the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0232002<br />STATUS_NDIS_DOT11_POWER_STATE_INVALID</p> + </td> + <td> + <p>The wireless LAN interface is power down and does not support the requested operation.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0232003<br />STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL</p> + </td> + <td> + <p>The list of wake on LAN patterns is full.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0232004<br />STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL</p> + </td> + <td> + <p>The list of low power protocol offloads is full.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360001<br />STATUS_IPSEC_BAD_SPI</p> + </td> + <td> + <p>The SPI in the packet does not match a valid IPsec SA.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360002<br />STATUS_IPSEC_SA_LIFETIME_EXPIRED</p> + </td> + <td> + <p>The packet was received on an IPsec SA whose lifetime has expired.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360003<br />STATUS_IPSEC_WRONG_SA</p> + </td> + <td> + <p>The packet was received on an IPsec SA that does not match the packet characteristics.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360004<br />STATUS_IPSEC_REPLAY_CHECK_FAILED</p> + </td> + <td> + <p>The packet sequence number replay check failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360005<br />STATUS_IPSEC_INVALID_PACKET</p> + </td> + <td> + <p>The IPsec header and/or trailer in the packet is invalid.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360006<br />STATUS_IPSEC_INTEGRITY_CHECK_FAILED</p> + </td> + <td> + <p>The IPsec integrity check failed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360007<br />STATUS_IPSEC_CLEAR_TEXT_DROP</p> + </td> + <td> + <p>IPsec dropped a clear text packet.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360008<br />STATUS_IPSEC_AUTH_FIREWALL_DROP</p> + </td> + <td> + <p>IPsec dropped an incoming ESP packet in authenticated firewall mode. This drop is benign.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0360009<br />STATUS_IPSEC_THROTTLE_DROP</p> + </td> + <td> + <p>IPsec dropped a packet due to DOS throttle.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368000<br />STATUS_IPSEC_DOSP_BLOCK</p> + </td> + <td> + <p>IPsec Dos Protection matched an explicit block rule.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368001<br />STATUS_IPSEC_DOSP_RECEIVED_MULTICAST</p> + </td> + <td> + <p>IPsec Dos Protection received an IPsec specific multicast packet which is not allowed.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368002<br />STATUS_IPSEC_DOSP_INVALID_PACKET</p> + </td> + <td> + <p>IPsec Dos Protection received an incorrectly formatted packet.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368003<br />STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED</p> + </td> + <td> + <p>IPsec Dos Protection failed to lookup state.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368004<br />STATUS_IPSEC_DOSP_MAX_ENTRIES</p> + </td> + <td> + <p>IPsec Dos Protection failed to create state because there are already maximum number of entries allowed by policy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368005<br />STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED</p> + </td> + <td> + <p>IPsec Dos Protection received an IPsec negotiation packet for a keying module which is not allowed by policy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC0368006<br />STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES</p> + </td> + <td> + <p>IPsec Dos Protection failed to create per internal IP ratelimit queue because there is already maximum number of queues allowed by policy.</p> + </td> + </tr> + <tr> + <td> + <p>0xC038005B<br />STATUS_VOLMGR_MIRROR_NOT_SUPPORTED</p> + </td> + <td> + <p>The system does not support mirrored volumes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC038005C<br />STATUS_VOLMGR_RAID5_NOT_SUPPORTED</p> + </td> + <td> + <p>The system does not support RAID-5 volumes.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0014<br />STATUS_VIRTDISK_PROVIDER_NOT_FOUND</p> + </td> + <td> + <p>A virtual disk support provider for the specified file was not found.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0015<br />STATUS_VIRTDISK_NOT_VIRTUAL_DISK</p> + </td> + <td> + <p>The specified disk is not a virtual disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0016<br />STATUS_VHD_PARENT_VHD_ACCESS_DENIED</p> + </td> + <td> + <p>The chain of virtual hard disks is inaccessible. The process has not been granted access rights to the parent virtual hard disk for the differencing disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0017<br />STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH</p> + </td> + <td> + <p>The chain of virtual hard disks is corrupted. There is a mismatch in the virtual sizes of the parent virtual hard disk and differencing disk.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0018<br />STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED</p> + </td> + <td> + <p>The chain of virtual hard disks is corrupted. A differencing disk is indicated in its own parent chain.</p> + </td> + </tr> + <tr> + <td> + <p>0xC03A0019<br />STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT</p> + </td> + <td> + <p>The chain of virtual hard disks is inaccessible. There was an error opening a virtual hard disk further up the chain.</p> + </td> + </tr> + </table> + </div> + </div> + <span> </span> + </div> +</div></div> + + + + + + + +<div class="libraryMemberFilter"> + <div class="filterContainer"> + <span>Show:</span> + <label> + <input type="checkbox" class="libraryFilterInherited" checked="checked" value="Inherit" />Inherited + </label> + <label> + <input type="checkbox" class="libraryFilterProtected" checked="checked" value="Protected" />Protected + </label> + </div> +</div> + +<input type="hidden" id="libraryMemberFilterEmptyWarning" value="There are no members available with your current filter settings." /> + + + +</div> + + + </div> + <div class="clear"></div> + + + +<input name="__RequestVerificationToken" type="hidden" value="wGkz0ACBeuAsZdP3iMh04vMoBmlhc2Sv6VqrWB_gjkEMkf3Vqztlinc6uiRNsq1MqCNPOYaEufHnzmmurJqWmbAuSg01" /> +<input id="ratingSubmitUrl" type="hidden" value="https://msdn.microsoft.com/en-us/library/feedback/add/cc704588.aspx" /> +<input id="isTopicRated" type="hidden" value="false" /> + + + + + + + + <link type="text/css" rel="stylesheet" /> + + <div id="ux-footer" class="" style="" dir="ltr"> + + <div id="footerSock" class="librarySock both"> + <div id="footerSockInner"> + <a name="feedback"></a> + +<div class="rating"> + <div id="ratingSection1"> + <div class="title"> + Was this page helpful? + </div> + <div class="description"> + Your feedback about this content is important.<br />Let us know what you think. + </div> + <div class="buttons"> + <button class="button" id="ratingYes">Yes</button> + <button class="button" id="ratingNo">No</button> + </div> + <input id="ratingValue" type="hidden" value="" /> + </div> + <div id="ratingSection2"> + <div class="title"> + Additional feedback? + </div> + <textarea id="ratingText" rows="6" cols="" maxlength="1500"></textarea> + <div class="counter right"> + <span id="feedbackTextCounter">1500</span> characters remaining + </div> + <div class="buttons left"> + <button class="button" id="ratingSubmit">Submit</button> + <button class="button" id="ratingSkipThis">Skip this</button> + </div> + </div> + <div id="ratingSection3"> + <div class="title"> + Thank you! + </div> + <div class="description"> + We appreciate your feedback. + </div> + </div> + + + <div id="contentFeedbackQAContainer" style="display: none;"></div> +</div> + + <div class="userVoice"> + <div class="title"> + Have a suggestion to improve MSDN Library? + </div> + <div class="description"> + Visit our UserVoice Page to submit and vote on ideas! + </div> + <div class="buttons"> + <a class="button" id="userVoiceButton" href="http://feedback.msdn.com/forums/257782-msdn-feature-suggestions/category/83975" target="_blank">Make a suggestion</a> + </div> +</div> + <div class="clear"></div> + </div> + </div> + + <footer class="top"> + <div data-fragmentName="LeftLinks" id="Fragment_LeftLinks" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <div class="linkListTitle">Dev centers</div> + <ul class="links"> + <li> + <a href="https://dev.windows.com" id="LeftLinks_2148_1" class="windowsBlue" xmlns="http://www.w3.org/1999/xhtml">Windows</a> + </li> + <li> + <a href="http://dev.office.com" id="LeftLinks_2148_3" class="office" xmlns="http://www.w3.org/1999/xhtml">Office</a> + </li> + <li> + <a href="https://msdn.microsoft.com/vstudio" id="LeftLinks_2148_4" class="visualStudio" xmlns="http://www.w3.org/1999/xhtml">Visual Studio</a> + </li> + <li> + <a href="http://developer.nokia.com/" title="Nokia" id="LeftLinks_2148_15" class="nokia" xmlns="http://www.w3.org/1999/xhtml">Nokia</a> + </li> + <li> + <a href="http://azure.microsoft.com/en-us/documentation/" target="_blank" id="LeftLinks_2148_12" xmlns="http://www.w3.org/1999/xhtml">Microsoft Azure</a> + </li> + <li> + <a href="https://msdn.microsoft.com/aa937802" id="LeftLinks_2148_5" xmlns="http://www.w3.org/1999/xhtml">More...</a> + </li> + </ul> + </div> +</div> + <div id="rightLinks"> + <div data-fragmentName="CenterLinks1" id="Fragment_CenterLinks1" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <div class="linkListTitle">Learning resources</div> + <ul class="links"> + <li> + <a href="http://www.microsoftvirtualacademy.com/" id="CenterLinks1_2151_4" xmlns="http://www.w3.org/1999/xhtml">Microsoft Virtual Academy</a> + </li> + <li> + <a href="http://channel9.msdn.com/" id="CenterLinks1_2151_5" xmlns="http://www.w3.org/1999/xhtml">Channel 9</a> + </li> + <li> + <a href="http://www.interoperabilitybridges.com/" id="CenterLinks1_2151_6" xmlns="http://www.w3.org/1999/xhtml">Interoperability Bridges</a> + </li> + <li> + <a href="https://msdn.microsoft.com/magazine/" id="CenterLinks1_2151_7" xmlns="http://www.w3.org/1999/xhtml">MSDN Magazine</a> + </li> + </ul> + </div> +</div> + <div data-fragmentName="CenterLinks2" id="Fragment_CenterLinks2" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <div class="linkListTitle">Community</div> + <ul class="links"> + <li> + <a href="https://social.msdn.microsoft.com/forums/en-us/home" id="CenterLinks2_2151_8" xmlns="http://www.w3.org/1999/xhtml">Forums</a> + </li> + <li> + <a href="http://blogs.msdn.com/b/developer-tools/" id="CenterLinks2_2151_9" xmlns="http://www.w3.org/1999/xhtml">Blogs</a> + </li> + <li> + <a href="http://www.codeplex.com" id="CenterLinks2_2151_10" xmlns="http://www.w3.org/1999/xhtml">Codeplex</a> + </li> + </ul> + </div> +</div> + <div data-fragmentName="CenterLinks3" id="Fragment_CenterLinks3" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <div class="linkListTitle">Support</div> + <ul class="links"> + <li> + <a href="https://msdn.microsoft.com/hh361695" id="CenterLinks3_2151_11" xmlns="http://www.w3.org/1999/xhtml">Self support</a> + </li> + </ul> + </div> +</div> + <div data-fragmentName="CenterLinks4" id="Fragment_CenterLinks4" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <div class="linkListTitle">Programs</div> + <ul class="links"> + <li> + <a href="https://www.microsoft.com/bizspark/" id="CenterLinks4_2151_13" xmlns="http://www.w3.org/1999/xhtml">BizSpark (for startups)</a> + </li> + <li> + <a href="https://www.dreamspark.com/" id="CenterLinks4_2151_14" xmlns="http://www.w3.org/1999/xhtml">DreamSpark</a> + </li> + <li> + <a href="http://www.imaginecup.com" id="CenterLinks4_2151_17" xmlns="http://www.w3.org/1999/xhtml">Imagine Cup</a> + </li> + </ul> + </div> +</div> + </div> + </footer> + + <footer class="bottom"> + <span class="localeContainer"> + + <form class="selectLocale" id="selectLocaleForm" action="https://msdn.microsoft.com/en-us/selectlocale-dmc"> + <input type="hidden" name="fromPage" value="https%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fcc704588.aspx" /> + <a href="#" onclick="$('#selectLocaleForm').submit();return false;" title="Change your language">United States (English)</a> + </form> + + + </span> + + <div data-fragmentName="BottomLinks" id="Fragment_BottomLinks" xmlns="http://www.w3.org/1999/xhtml"> + + <div class="linkList"> + <ul class="links horizontal"> + <li> + <a href="https://msdn.microsoft.com/newsletter.aspx" id="BottomLinks_2148_7" xmlns="http://www.w3.org/1999/xhtml">Newsletter</a> + </li> + <li> + <a href="https://msdn.microsoft.com/dn529288" id="BottomLinks_2148_8" xmlns="http://www.w3.org/1999/xhtml">Privacy & cookies</a> + </li> + <li> + <a href="https://msdn.microsoft.com/cc300389" id="BottomLinks_2148_9" xmlns="http://www.w3.org/1999/xhtml">Terms of use</a> + </li> + <li> + <a href="https://www.microsoft.com/en-us/legal/intellectualproperty/Trademarks/EN-US.aspx" id="BottomLinks_2148_10" xmlns="http://www.w3.org/1999/xhtml">Trademarks</a> + </li> + </ul> + </div> +</div> + <span class="logoLegal"> + <span class="logo"></span> + <span class="copyright">© 2015 Microsoft</span> + </span> + </footer> + </div> + + + + <div class="footerPrintView"> + <div class="footerCopyrightPrintView">© 2015 Microsoft</div> + </div> + + + + + + <input id="tocPaddingPerLevel" type="hidden" value="17" /> + + + + <input id="MtpsDevice" type="hidden" value="Robot" /> + + +<![CDATA[ Third party scripts and code linked to or referenced from this website are licensed to you by the parties that own such code, not by Microsoft. See ASP.NET Ajax CDN Terms of Use – http://www.asp.net/ajaxlibrary/CDN.ashx. ]]> + + + + + + + + + + + + +<noscript><div><img alt="DCSIMG" id="Img1" width="1" height="1" src="https://m.webtrends.com/dcsmgru7m99k7mqmgrhudo0k8_8c6m/njs.gif?dcsuri=/nojavascript&WT.js=No" /></div></noscript> + + + + + + + + + +<noscript> + <a href="http://www.omniture.com" title="Web Analytics"> + <img src="//msstonojsmsdn.112.2o7.net/b/ss/msstonojsmsdn/1/H.20.2--NS/0" height="1" width="1" border="0" alt="" /> + </a> +</noscript> + + + + + +<div id="globalRequestVerification"> + <input name="__RequestVerificationToken" type="hidden" value="nyJz1znhZGUF0XsIYht__FJ2k5KGP3POkpBgNnjn6QU7q-li0D7cf7QZIttQ_V0CaWLpPYXbX2IvB6szPDIUyGqkvVY1" /> +</div> + + + </div> + + + + + + <script type="text/javascript" class="mtps-injected"> +/*<![CDATA[*/ +(function(window,document){"use strict";function preload(scripts){for(var result=[],script,e,i=0;i<scripts.length;i++)script=scripts[i],script.hasOwnProperty("url")&&(e=document.createElement("script"),e.src=script.url,script.throwaway=e),result.push(script);return result}function inject(scripts,index){var script,elem;if(index>=scripts.length){delete mtps.injectScripts;return}script=scripts[index];elem=document.createElement("script");elem.className="mtps-injected";elem.async=!1;var isLoaded=!1,timeoutId=0,injectNextFnName="",injectNext=elem.onerror=function(){isLoaded||(isLoaded=!0,inject(scripts,index+1),window.clearTimeout(timeoutId),elem.onload=elem.onerror=elem.onreadystatechange=null,injectNextFnName&&delete mtps[injectNextFnName],elem.removeEventListener&&elem.removeEventListener("load",injectNext,!1))};elem.addEventListener?elem.addEventListener("load",injectNext,!1):elem.readyState==="uninitialized"?elem.onreadystatechange=function(){(this.readyState==="loaded"||this.readyState==="complete")&&injectNext()}:elem.onload=injectNext;script.hasOwnProperty("url")?(timeoutId=window.setTimeout(injectNext,12e4),elem.src=script.url):(injectNextFnName="_injectNextScript_"+index,mtps[injectNextFnName]=injectNext,timeoutId=window.setTimeout(injectNext,2e3),elem.text="try {\n"+script.txt+"\n} finally { MTPS."+injectNextFnName+" && MTPS."+injectNextFnName+"(); }");parent.appendChild(elem)}var mtps=window.MTPS||(window.MTPS={}),parent=document.getElementsByTagName("head")[0];mtps.injectScripts=function(scripts){inject(preload(scripts),0)}})(window,document); +MTPS.injectScripts([ + { txt: "/**/\r\n(window.MTPS || (window.MTPS = {})).cdnDomains || (window.MTPS.cdnDomains = { \r\n\t\"image\": \"https://i-msdn.sec.s-msft.com\", \r\n\t\"js\": \"https://i2-msdn.sec.s-msft.com\", \r\n\t\"css\": \"https://i-msdn.sec.s-msft.com\", \r\n\t\"xap\": \"https://i-vso.sec.s-msft.com\"\r\n});\r\n/**/" }, + { url: "https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js" }, + { txt: "//\n var literalNormalizedUrl = \u0027/en-us/library/cc704588(l=en-us,v=prot.20).aspx\u0027;\n var wt_nvr_ru = \u0027WT_NVR_RU\u0027;\n var wt_fpcdom = \u0027.microsoft.com\u0027;\n var wt_domlist = \u0027msdn.microsoft.com\u0027;\n var wt_pathlist = \u0027\u0027;\n var wt_paramlist = \u0027DCSext.mtps_devcenter\u0027;\n var wt_siteid = \u0027MSDN\u0027;\n var gDomain = \u0027m.webtrends.com\u0027;\n var gDcsId = \u0027dcsmgru7m99k7mqmgrhudo0k8_8c6m\u0027;\n var gFpc = \u0027WT_FPC\u0027;\n\n\n\n if (document.cookie.indexOf(gFpc + \"=\") == -1) {\n var wtidJs = document.createElement(\"script\");\n wtidJs.src = \"//\" + gDomain + \"/\" + gDcsId + \"/wtid.js\";\n document.getElementsByTagName(\"head\")[0].appendChild(wtidJs);\n }\n\n\n\n var detectedLocale = \u0027en-us\u0027;\n var wtsp = \u0027msdnlib_doj\u0027;\n var gTrackEvents = \u00270\u0027;\n/**/" }, + { txt: "/**/\n var omni_guid = \"297dc630-8066-40e0-ab61-b4ff48aa007c\";\n/**/" }, + { txt: "//\n\n window.appInsightsId = \u002760854590-027a-4ae4-98be-2741a40f355f\u0027;\n //" }, + { url: "https://i2-msdn.sec.s-msft.com/Combined.js?resources=0:Utilities,1:Layout,2:Header,1:Rating,2:Footer,0:Topic,3:webtrendsscript,4:omni_rsid_MSDN,5:WEDCS,0:AppInsightsPerf,6:Toc,1:SearchBox;/Areas/Epx/Content/Scripts:0,/Areas/Epx/Themes/Base/Content:1,/Areas/Centers/Themes/StandardDevCenter/Content:2,/Areas/Global/Content/Webtrends/resources:3,/Areas/Global/Content/Omniture/resources/MSDN:4,/Areas/Library/Themes/Base/Content:5,/Areas/Library/Content:6\u0026amp;hashKey=FB961264348D584F46A0D35B285D2793\u0026amp;v=B824EC950EFE6A8B72B4760A16A865F4" }, + { url: "https://i1.services.social.microsoft.com/search/Widgets/SearchBox.jss?boxid=HeaderSearchTextBox\u0026btnid=HeaderSearchButton\u0026brand=Msdn\u0026loc=en-us\u0026focusOnInit=false\u0026emptyWatermark=true\u0026searchButtonTooltip=Search MSDN" }, + { url: "https://i2-msdn.sec.s-msft.com/Combined.js?resources=0:PrintExportButton,1:NavigationResize,1:LibraryMemberFilter,2:Toc_Fixed,2:CodeSnippet,2:TopicNotInScope,2:CollapsibleArea,2:VersionSelector,2:SurveyBroker;/Areas/Library/Themes/Base/Content:0,/Areas/Library/Content:1,/Areas/Epx/Content/Scripts:2\u0026amp;hashKey=3248804C2DE1E642F8B20C4F83DBEA3B\u0026amp;v=B824EC950EFE6A8B72B4760A16A865F4" }, + { txt: "$(document).ready(function() {\n try {\n var token = $(\"#globalRequestVerification input[name=\u0027__RequestVerificationToken\u0027]\").clone();\n $(\"#siteFeedbackForm\").append(token);\n } catch(err) {\n \n }\n });" } +]); + +/*]]>*/ +</script></body> +</html>
\ No newline at end of file diff --git a/indra/copy_win_scripts/CMakeLists.txt b/indra/copy_win_scripts/CMakeLists.txt index 93a8c1d6d2..93a8c1d6d2 100755..100644 --- a/indra/copy_win_scripts/CMakeLists.txt +++ b/indra/copy_win_scripts/CMakeLists.txt diff --git a/indra/doxygen/CMakeLists.txt b/indra/doxygen/CMakeLists.txt new file mode 100644 index 0000000000..84188bd32f --- /dev/null +++ b/indra/doxygen/CMakeLists.txt @@ -0,0 +1,28 @@ +# -*- cmake -*- + +# cmake_minimum_required should appear before any +# other commands to guarantee full compatibility +# with the version specified +## prior to 2.8, the add_custom_target commands used in setting the version did not work correctly +cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR) + +set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING + "The root project/makefile/solution name. Defaults to SecondLife.") +project(${ROOT_PROJECT_NAME}) + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +include(Variables) + +# add a target to generate API documentation with Doxygen +find_package(Doxygen) +if(DOXYGEN_FOUND) + GET_FILENAME_COMPONENT(DOXYGEN_TOP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. PATH) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.. + COMMENT "Generating API documentation with Doxygen" VERBATIM + ) +endif(DOXYGEN_FOUND) + diff --git a/indra/doxygen/Doxyfile.in b/indra/doxygen/Doxyfile.in new file mode 100644 index 0000000000..6881595c2e --- /dev/null +++ b/indra/doxygen/Doxyfile.in @@ -0,0 +1,1557 @@ +# Doxyfile 1.6.3 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "@VIEWER_CHANNEL@" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @VIEWER_SHORT_VERSION@.@VIEWER_VERSION_REVISION@ + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@ + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = @DOXYGEN_TOP_SRC_DIR@ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = YES + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 2 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = NO + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command <command> <input-file>, where <command> is the value of +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = @CMAKE_CURRENT_BINARY_DIR@/doxygen_warnings.log + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../../indra +## TODO We would like to also have the includes from @CMAKE_CURRENT_BINARY_DIR@/packages/include +## but at present that is too expensive. Ideally, we will modify each package build to do +## generation of doxygen docs, and install them in a modular way that we can connect. See TAGS + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = */test/* */tests/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../../doc + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = LL + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +## TODO? +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = com.lindenlab.SecondLifeViewer + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = com.lindenlab.SecondLifeViewer + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = com.lindenlab.SecondLifeViewer + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +## TODO - ideally, all packages imported by autoubuild would come with doxygen documentation + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +#PERL_PATH = @PERL@ + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 100 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 3 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/indra/edit-me-to-trigger-new-build.txt b/indra/edit-me-to-trigger-new-build.txt index 6f2087d580..6f2087d580 100755..100644 --- a/indra/edit-me-to-trigger-new-build.txt +++ b/indra/edit-me-to-trigger-new-build.txt diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt index ced2b3dbcf..ced2b3dbcf 100755..100644 --- a/indra/integration_tests/CMakeLists.txt +++ b/indra/integration_tests/CMakeLists.txt diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt index 8a83ac498f..8a83ac498f 100755..100644 --- a/indra/integration_tests/llimage_libtest/CMakeLists.txt +++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt diff --git a/indra/integration_tests/llimage_libtest/filters/autocontrast.xml b/indra/integration_tests/llimage_libtest/filters/autocontrast.xml index ec3d7561bd..ec3d7561bd 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/autocontrast.xml +++ b/indra/integration_tests/llimage_libtest/filters/autocontrast.xml diff --git a/indra/integration_tests/llimage_libtest/filters/badtrip.xml b/indra/integration_tests/llimage_libtest/filters/badtrip.xml index 14ee0baff3..14ee0baff3 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/badtrip.xml +++ b/indra/integration_tests/llimage_libtest/filters/badtrip.xml diff --git a/indra/integration_tests/llimage_libtest/filters/brighten.xml b/indra/integration_tests/llimage_libtest/filters/brighten.xml index 9b4232229f..9b4232229f 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/brighten.xml +++ b/indra/integration_tests/llimage_libtest/filters/brighten.xml diff --git a/indra/integration_tests/llimage_libtest/filters/darken.xml b/indra/integration_tests/llimage_libtest/filters/darken.xml index 5cec3589b6..5cec3589b6 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/darken.xml +++ b/indra/integration_tests/llimage_libtest/filters/darken.xml diff --git a/indra/integration_tests/llimage_libtest/filters/lightleak.xml b/indra/integration_tests/llimage_libtest/filters/lightleak.xml index 6fe496506e..6fe496506e 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/lightleak.xml +++ b/indra/integration_tests/llimage_libtest/filters/lightleak.xml diff --git a/indra/integration_tests/llimage_libtest/filters/linearize.xml b/indra/integration_tests/llimage_libtest/filters/linearize.xml index 23d0290e07..23d0290e07 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/linearize.xml +++ b/indra/integration_tests/llimage_libtest/filters/linearize.xml diff --git a/indra/integration_tests/llimage_libtest/filters/miniature.xml b/indra/integration_tests/llimage_libtest/filters/miniature.xml index 9aa8a87c6f..9aa8a87c6f 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/miniature.xml +++ b/indra/integration_tests/llimage_libtest/filters/miniature.xml diff --git a/indra/integration_tests/llimage_libtest/filters/newsscreen.xml b/indra/integration_tests/llimage_libtest/filters/newsscreen.xml index 50ed27c6db..50ed27c6db 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/newsscreen.xml +++ b/indra/integration_tests/llimage_libtest/filters/newsscreen.xml diff --git a/indra/integration_tests/llimage_libtest/filters/pixelate.xml b/indra/integration_tests/llimage_libtest/filters/pixelate.xml index f643419aa0..f643419aa0 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/pixelate.xml +++ b/indra/integration_tests/llimage_libtest/filters/pixelate.xml diff --git a/indra/integration_tests/llimage_libtest/filters/posterize.xml b/indra/integration_tests/llimage_libtest/filters/posterize.xml index 4d03df3c66..4d03df3c66 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/posterize.xml +++ b/indra/integration_tests/llimage_libtest/filters/posterize.xml diff --git a/indra/integration_tests/llimage_libtest/filters/thematrix.xml b/indra/integration_tests/llimage_libtest/filters/thematrix.xml index af9a5eced8..af9a5eced8 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/thematrix.xml +++ b/indra/integration_tests/llimage_libtest/filters/thematrix.xml diff --git a/indra/integration_tests/llimage_libtest/filters/toycamera.xml b/indra/integration_tests/llimage_libtest/filters/toycamera.xml index 4e76f6b2fb..4e76f6b2fb 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/toycamera.xml +++ b/indra/integration_tests/llimage_libtest/filters/toycamera.xml diff --git a/indra/integration_tests/llimage_libtest/filters/video.xml b/indra/integration_tests/llimage_libtest/filters/video.xml index fe17f3950a..fe17f3950a 100755..100644 --- a/indra/integration_tests/llimage_libtest/filters/video.xml +++ b/indra/integration_tests/llimage_libtest/filters/video.xml diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp index 3d27b4a5b5..3d27b4a5b5 100755..100644 --- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp +++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.h b/indra/integration_tests/llimage_libtest/llimage_libtest.h index 63f3d46b50..63f3d46b50 100755..100644 --- a/indra/integration_tests/llimage_libtest/llimage_libtest.h +++ b/indra/integration_tests/llimage_libtest/llimage_libtest.h diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt index 34e34c7e47..34e34c7e47 100755..100644 --- a/indra/integration_tests/llui_libtest/CMakeLists.txt +++ b/indra/integration_tests/llui_libtest/CMakeLists.txt diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp index a0418f09d5..a0418f09d5 100755..100644 --- a/indra/integration_tests/llui_libtest/llui_libtest.cpp +++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp diff --git a/indra/integration_tests/llui_libtest/llui_libtest.h b/indra/integration_tests/llui_libtest/llui_libtest.h index d365ebb5e0..d365ebb5e0 100755..100644 --- a/indra/integration_tests/llui_libtest/llui_libtest.h +++ b/indra/integration_tests/llui_libtest/llui_libtest.h diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp index cbf6021119..cbf6021119 100755..100644 --- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp +++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.h b/indra/integration_tests/llui_libtest/llwidgetreg.h index 30b915eee2..30b915eee2 100755..100644 --- a/indra/integration_tests/llui_libtest/llwidgetreg.h +++ b/indra/integration_tests/llui_libtest/llwidgetreg.h diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 1d85aa2978..62bd09471a 100755 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -512,11 +512,7 @@ class LLManifest(object): # ensure that destination path exists self.cmakedirs(os.path.dirname(dst)) self.created_paths.append(dst) - if not os.path.isdir(src): - self.ccopy(src,dst) - else: - # src is a dir - self.ccopytree(src,dst) + self.ccopymumble(src, dst) else: print "Doesn't exist:", src @@ -595,28 +591,38 @@ class LLManifest(object): else: os.remove(path) - def ccopy(self, src, dst): - """ Copy a single file or symlink. Uses filecmp to skip copying for existing files.""" + def ccopymumble(self, src, dst): + """Copy a single symlink, file or directory.""" if os.path.islink(src): linkto = os.readlink(src) - if os.path.islink(dst) or os.path.exists(dst): + if os.path.islink(dst) or os.path.isfile(dst): os.remove(dst) # because symlinking over an existing link fails + elif os.path.isdir(dst): + shutil.rmtree(dst) os.symlink(linkto, dst) + elif os.path.isdir(src): + self.ccopytree(src, dst) else: - # Don't recopy file if it's up-to-date. - # If we seem to be not not overwriting files that have been - # updated, set the last arg to False, but it will take longer. - if os.path.exists(dst) and filecmp.cmp(src, dst, True): - return - # only copy if it's not excluded - if self.includes(src, dst): - try: - os.unlink(dst) - except OSError, err: - if err.errno != errno.ENOENT: - raise - - shutil.copy2(src, dst) + self.ccopyfile(src, dst) + # XXX What about devices, sockets etc.? + # YYY would we put such things into a viewer package?! + + def ccopyfile(self, src, dst): + """ Copy a single file. Uses filecmp to skip copying for existing files.""" + # Don't recopy file if it's up-to-date. + # If we seem to be not not overwriting files that have been + # updated, set the last arg to False, but it will take longer. + if os.path.exists(dst) and filecmp.cmp(src, dst, True): + return + # only copy if it's not excluded + if self.includes(src, dst): + try: + os.unlink(dst) + except OSError, err: + if err.errno != errno.ENOENT: + raise + + shutil.copy2(src, dst) def ccopytree(self, src, dst): """Direct copy of shutil.copytree with the additional @@ -632,11 +638,7 @@ class LLManifest(object): srcname = os.path.join(src, name) dstname = os.path.join(dst, name) try: - if os.path.isdir(srcname): - self.ccopytree(srcname, dstname) - else: - self.ccopy(srcname, dstname) - # XXX What about devices, sockets etc.? + self.ccopymumble(srcname, dstname) except (IOError, os.error), why: errors.append((srcname, dstname, why)) if errors: diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt index c0fc1b2be0..c0fc1b2be0 100755..100644 --- a/indra/linux_crash_logger/CMakeLists.txt +++ b/indra/linux_crash_logger/CMakeLists.txt diff --git a/indra/linux_crash_logger/linux_crash_logger.cpp b/indra/linux_crash_logger/linux_crash_logger.cpp index 36f62451d7..36f62451d7 100755..100644 --- a/indra/linux_crash_logger/linux_crash_logger.cpp +++ b/indra/linux_crash_logger/linux_crash_logger.cpp diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp index e2d2e7ff26..e2d2e7ff26 100755..100644 --- a/indra/linux_crash_logger/llcrashloggerlinux.cpp +++ b/indra/linux_crash_logger/llcrashloggerlinux.cpp diff --git a/indra/linux_crash_logger/llcrashloggerlinux.h b/indra/linux_crash_logger/llcrashloggerlinux.h index dae6c46651..dae6c46651 100755..100644 --- a/indra/linux_crash_logger/llcrashloggerlinux.h +++ b/indra/linux_crash_logger/llcrashloggerlinux.h diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index d1eb389013..d1eb389013 100755..100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index a0ef49b7cb..a0ef49b7cb 100755..100644 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp index e630c1118b..e630c1118b 100755..100644 --- a/indra/llappearance/lldriverparam.cpp +++ b/indra/llappearance/lldriverparam.cpp diff --git a/indra/llappearance/lldriverparam.h b/indra/llappearance/lldriverparam.h index f71c930e5e..f71c930e5e 100755..100644 --- a/indra/llappearance/lldriverparam.h +++ b/indra/llappearance/lldriverparam.h diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp index 3df2254b14..3df2254b14 100755..100644 --- a/indra/llappearance/lltexglobalcolor.cpp +++ b/indra/llappearance/lltexglobalcolor.cpp diff --git a/indra/llappearance/lltexglobalcolor.h b/indra/llappearance/lltexglobalcolor.h index 3b426053de..3b426053de 100755..100644 --- a/indra/llappearance/lltexglobalcolor.h +++ b/indra/llappearance/lltexglobalcolor.h diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index ff682d6906..ff682d6906 100755..100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp diff --git a/indra/llappearance/lltexlayerparams.h b/indra/llappearance/lltexlayerparams.h index 0cb2dedbff..0cb2dedbff 100755..100644 --- a/indra/llappearance/lltexlayerparams.h +++ b/indra/llappearance/lltexlayerparams.h diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index 5ca9f55ac8..5ca9f55ac8 100755..100644 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h index 875c2932f1..875c2932f1 100755..100644 --- a/indra/llappearance/llwearable.h +++ b/indra/llappearance/llwearable.h diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index 5dfb201fc4..2bf3b9085b 100755..100644 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -92,7 +92,7 @@ void LLWearableData::setWearable(const LLWearableType::EType type, U32 index, LL } } -U32 LLWearableData::pushWearable(const LLWearableType::EType type, +void LLWearableData::pushWearable(const LLWearableType::EType type, LLWearable *wearable, bool trigger_updated /* = true */) { @@ -100,9 +100,8 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type, { // no null wearables please! LL_WARNS() << "Null wearable sent for type " << type << LL_ENDL; - return MAX_CLOTHING_PER_TYPE; } - if (type < LLWearableType::WT_COUNT || mWearableDatas[type].size() < MAX_CLOTHING_PER_TYPE) + if (canAddWearable(type)) { mWearableDatas[type].push_back(wearable); if (trigger_updated) @@ -110,9 +109,7 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type, const BOOL removed = FALSE; wearableUpdated(wearable, removed); } - return mWearableDatas[type].size()-1; } - return MAX_CLOTHING_PER_TYPE; } // virtual @@ -125,7 +122,7 @@ void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed) } } -void LLWearableData::popWearable(LLWearable *wearable) +void LLWearableData::eraseWearable(LLWearable *wearable) { if (wearable == NULL) { @@ -133,16 +130,16 @@ void LLWearableData::popWearable(LLWearable *wearable) return; } - U32 index = getWearableIndex(wearable); const LLWearableType::EType type = wearable->getType(); - if (index < MAX_CLOTHING_PER_TYPE && index < getWearableCount(type)) + U32 index; + if (getWearableIndex(wearable,index)) { - popWearable(type, index); + eraseWearable(type, index); } } -void LLWearableData::popWearable(const LLWearableType::EType type, U32 index) +void LLWearableData::eraseWearable(const LLWearableType::EType type, U32 index) { LLWearable *wearable = getWearable(type, index); if (wearable) @@ -204,11 +201,11 @@ void LLWearableData::pullCrossWearableValues(const LLWearableType::EType type) } -U32 LLWearableData::getWearableIndex(const LLWearable *wearable) const +BOOL LLWearableData::getWearableIndex(const LLWearable *wearable, U32& index_found) const { if (wearable == NULL) { - return MAX_CLOTHING_PER_TYPE; + return FALSE; } const LLWearableType::EType type = wearable->getType(); @@ -216,18 +213,50 @@ U32 LLWearableData::getWearableIndex(const LLWearable *wearable) const if (wearable_iter == mWearableDatas.end()) { LL_WARNS() << "tried to get wearable index with an invalid type!" << LL_ENDL; - return MAX_CLOTHING_PER_TYPE; + return FALSE; } const wearableentry_vec_t& wearable_vec = wearable_iter->second; for(U32 index = 0; index < wearable_vec.size(); index++) { if (wearable_vec[index] == wearable) { - return index; + index_found = index; + return TRUE; } } - return MAX_CLOTHING_PER_TYPE; + return FALSE; +} + +U32 LLWearableData::getClothingLayerCount() const +{ + U32 count = 0; + for (S32 i = 0; i < LLWearableType::WT_COUNT; i++) + { + LLWearableType::EType type = (LLWearableType::EType)i; + if (LLWearableType::getAssetType(type)==LLAssetType::AT_CLOTHING) + { + count += getWearableCount(type); + } + } + return count; +} + +BOOL LLWearableData::canAddWearable(const LLWearableType::EType type) const +{ + LLAssetType::EType a_type = LLWearableType::getAssetType(type); + if (a_type==LLAssetType::AT_CLOTHING) + { + return (getClothingLayerCount() < MAX_CLOTHING_LAYERS); + } + else if (a_type==LLAssetType::AT_BODYPART) + { + return (getWearableCount(type) < 1); + } + else + { + return FALSE; + } } BOOL LLWearableData::isOnTop(LLWearable* wearable) const diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h index 03bd179f25..a0c446ea9e 100644 --- a/indra/llappearance/llwearabledata.h +++ b/indra/llappearance/llwearabledata.h @@ -60,11 +60,13 @@ public: const LLWearable* getBottomWearable(const LLWearableType::EType type) const; U32 getWearableCount(const LLWearableType::EType type) const; U32 getWearableCount(const U32 tex_index) const; - U32 getWearableIndex(const LLWearable *wearable) const; + BOOL getWearableIndex(const LLWearable *wearable, U32& index) const; + U32 getClothingLayerCount() const; + BOOL canAddWearable(const LLWearableType::EType type) const; BOOL isOnTop(LLWearable* wearable) const; - - static const U32 MAX_CLOTHING_PER_TYPE = 5; + + static const U32 MAX_CLOTHING_LAYERS = 60; //-------------------------------------------------------------------- // Setters @@ -72,11 +74,11 @@ public: protected: // Low-level data structure setter - public access is via setWearableItem, etc. void setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable); - U32 pushWearable(const LLWearableType::EType type, LLWearable *wearable, + void pushWearable(const LLWearableType::EType type, LLWearable *wearable, bool trigger_updated = true); virtual void wearableUpdated(LLWearable *wearable, BOOL removed); - void popWearable(LLWearable *wearable); - void popWearable(const LLWearableType::EType type, U32 index); + void eraseWearable(LLWearable *wearable); + void eraseWearable(const LLWearableType::EType type, U32 index); void clearWearableType(const LLWearableType::EType type); bool swapWearables(const LLWearableType::EType type, U32 index_a, U32 index_b); diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp index 618e2a1941..87109a5906 100644 --- a/indra/llappearance/llwearabletype.cpp +++ b/indra/llappearance/llwearabletype.cpp @@ -27,6 +27,7 @@ #include "linden_common.h" #include "llwearabletype.h" #include "llinventorytype.h" +#include "llinventorydefines.h" static LLTranslationBridge* sTrans = NULL; @@ -160,7 +161,7 @@ BOOL LLWearableType::getDisableCameraSwitch(LLWearableType::EType type) return entry->mDisableCameraSwitch; } -// static +// static BOOL LLWearableType::getAllowMultiwear(LLWearableType::EType type) { const LLWearableDictionary *dict = LLWearableDictionary::getInstance(); @@ -169,3 +170,9 @@ BOOL LLWearableType::getAllowMultiwear(LLWearableType::EType type) return entry->mAllowMultiwear; } +// static +LLWearableType::EType LLWearableType::inventoryFlagsToWearableType(U32 flags) +{ + return (LLWearableType::EType)(flags & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK); +} + diff --git a/indra/llappearance/llwearabletype.h b/indra/llappearance/llwearabletype.h index 7c9594644d..519d5b92a2 100644 --- a/indra/llappearance/llwearabletype.h +++ b/indra/llappearance/llwearabletype.h @@ -80,6 +80,7 @@ public: static LLInventoryType::EIconName getIconName(EType type); static BOOL getDisableCameraSwitch(EType type); static BOOL getAllowMultiwear(EType type); + static EType inventoryFlagsToWearableType(U32 flags); protected: LLWearableType() {} diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt index e943dd5d5c..e943dd5d5c 100755..100644 --- a/indra/llaudio/CMakeLists.txt +++ b/indra/llaudio/CMakeLists.txt diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index 77e57b14f5..77e57b14f5 100755..100644 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp diff --git a/indra/llaudio/llaudiodecodemgr.h b/indra/llaudio/llaudiodecodemgr.h index 8228e20e8c..8228e20e8c 100755..100644 --- a/indra/llaudio/llaudiodecodemgr.h +++ b/indra/llaudio/llaudiodecodemgr.h diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index f49028aad5..f49028aad5 100755..100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index f1e1b4e308..f1e1b4e308 100755..100644 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index e6ac586618..e6ac586618 100755..100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h index 6639d9dfe6..6639d9dfe6 100755..100644 --- a/indra/llaudio/llaudioengine_openal.h +++ b/indra/llaudio/llaudioengine_openal.h diff --git a/indra/llaudio/lllistener.cpp b/indra/llaudio/lllistener.cpp index df2366c8c2..df2366c8c2 100755..100644 --- a/indra/llaudio/lllistener.cpp +++ b/indra/llaudio/lllistener.cpp diff --git a/indra/llaudio/lllistener.h b/indra/llaudio/lllistener.h index 41836bf039..41836bf039 100755..100644 --- a/indra/llaudio/lllistener.h +++ b/indra/llaudio/lllistener.h diff --git a/indra/llaudio/lllistener_ds3d.h b/indra/llaudio/lllistener_ds3d.h index 9150ccd5b9..9150ccd5b9 100755..100644 --- a/indra/llaudio/lllistener_ds3d.h +++ b/indra/llaudio/lllistener_ds3d.h diff --git a/indra/llaudio/lllistener_openal.cpp b/indra/llaudio/lllistener_openal.cpp index 9dd4c86854..9dd4c86854 100755..100644 --- a/indra/llaudio/lllistener_openal.cpp +++ b/indra/llaudio/lllistener_openal.cpp diff --git a/indra/llaudio/lllistener_openal.h b/indra/llaudio/lllistener_openal.h index cb163b11a5..cb163b11a5 100755..100644 --- a/indra/llaudio/lllistener_openal.h +++ b/indra/llaudio/lllistener_openal.h diff --git a/indra/llaudio/llstreamingaudio.h b/indra/llaudio/llstreamingaudio.h index 93479f9d59..93479f9d59 100755..100644 --- a/indra/llaudio/llstreamingaudio.h +++ b/indra/llaudio/llstreamingaudio.h diff --git a/indra/llaudio/llvorbisencode.cpp b/indra/llaudio/llvorbisencode.cpp index 2e1ed9b505..2e1ed9b505 100755..100644 --- a/indra/llaudio/llvorbisencode.cpp +++ b/indra/llaudio/llvorbisencode.cpp diff --git a/indra/llaudio/llvorbisencode.h b/indra/llaudio/llvorbisencode.h index 6b22a2cb59..6b22a2cb59 100755..100644 --- a/indra/llaudio/llvorbisencode.h +++ b/indra/llaudio/llvorbisencode.h diff --git a/indra/llaudio/llwindgen.h b/indra/llaudio/llwindgen.h index ec58f76f5f..ec58f76f5f 100755..100644 --- a/indra/llaudio/llwindgen.h +++ b/indra/llaudio/llwindgen.h diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt index 2573417b26..2573417b26 100755..100644 --- a/indra/llcharacter/CMakeLists.txt +++ b/indra/llcharacter/CMakeLists.txt diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp index c16cae1bbc..c16cae1bbc 100755..100644 --- a/indra/llcharacter/llanimationstates.cpp +++ b/indra/llcharacter/llanimationstates.cpp diff --git a/indra/llcharacter/llanimationstates.h b/indra/llcharacter/llanimationstates.h index 79cbcabdc1..79cbcabdc1 100755..100644 --- a/indra/llcharacter/llanimationstates.h +++ b/indra/llcharacter/llanimationstates.h diff --git a/indra/llcharacter/llbvhconsts.h b/indra/llcharacter/llbvhconsts.h index b06c279b8f..b06c279b8f 100755..100644 --- a/indra/llcharacter/llbvhconsts.h +++ b/indra/llcharacter/llbvhconsts.h diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp index 0d558aeaa2..0d558aeaa2 100755..100644 --- a/indra/llcharacter/llbvhloader.cpp +++ b/indra/llcharacter/llbvhloader.cpp diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h index f816b76277..f816b76277 100755..100644 --- a/indra/llcharacter/llbvhloader.h +++ b/indra/llcharacter/llbvhloader.h diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 4df975ecc5..4df975ecc5 100755..100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 1a3e307663..1a3e307663 100755..100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp index f4a37a139a..f4a37a139a 100755..100644 --- a/indra/llcharacter/lleditingmotion.cpp +++ b/indra/llcharacter/lleditingmotion.cpp diff --git a/indra/llcharacter/lleditingmotion.h b/indra/llcharacter/lleditingmotion.h index 7b1c8bb059..7b1c8bb059 100755..100644 --- a/indra/llcharacter/lleditingmotion.h +++ b/indra/llcharacter/lleditingmotion.h diff --git a/indra/llcharacter/llgesture.cpp b/indra/llcharacter/llgesture.cpp index 1549c41e62..1549c41e62 100755..100644 --- a/indra/llcharacter/llgesture.cpp +++ b/indra/llcharacter/llgesture.cpp diff --git a/indra/llcharacter/llgesture.h b/indra/llcharacter/llgesture.h index cfb489f727..cfb489f727 100755..100644 --- a/indra/llcharacter/llgesture.h +++ b/indra/llcharacter/llgesture.h diff --git a/indra/llcharacter/llhandmotion.cpp b/indra/llcharacter/llhandmotion.cpp index b3bf5a9a91..b3bf5a9a91 100755..100644 --- a/indra/llcharacter/llhandmotion.cpp +++ b/indra/llcharacter/llhandmotion.cpp diff --git a/indra/llcharacter/llhandmotion.h b/indra/llcharacter/llhandmotion.h index 08de7056c8..08de7056c8 100755..100644 --- a/indra/llcharacter/llhandmotion.h +++ b/indra/llcharacter/llhandmotion.h diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp index 812c4201af..812c4201af 100755..100644 --- a/indra/llcharacter/llheadrotmotion.cpp +++ b/indra/llcharacter/llheadrotmotion.cpp diff --git a/indra/llcharacter/llheadrotmotion.h b/indra/llcharacter/llheadrotmotion.h index 569dbef2dd..569dbef2dd 100755..100644 --- a/indra/llcharacter/llheadrotmotion.h +++ b/indra/llcharacter/llheadrotmotion.h diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp index 8fa08a2a6c..8fa08a2a6c 100755..100644 --- a/indra/llcharacter/lljoint.cpp +++ b/indra/llcharacter/lljoint.cpp diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h index 2abe1d6db1..2abe1d6db1 100755..100644 --- a/indra/llcharacter/lljoint.h +++ b/indra/llcharacter/lljoint.h diff --git a/indra/llcharacter/lljointsolverrp3.cpp b/indra/llcharacter/lljointsolverrp3.cpp index 69a7e3dc6e..69a7e3dc6e 100755..100644 --- a/indra/llcharacter/lljointsolverrp3.cpp +++ b/indra/llcharacter/lljointsolverrp3.cpp diff --git a/indra/llcharacter/lljointsolverrp3.h b/indra/llcharacter/lljointsolverrp3.h index 88b5d08710..88b5d08710 100755..100644 --- a/indra/llcharacter/lljointsolverrp3.h +++ b/indra/llcharacter/lljointsolverrp3.h diff --git a/indra/llcharacter/lljointstate.h b/indra/llcharacter/lljointstate.h index 1ccc6b5093..1ccc6b5093 100755..100644 --- a/indra/llcharacter/lljointstate.h +++ b/indra/llcharacter/lljointstate.h diff --git a/indra/llcharacter/llkeyframefallmotion.cpp b/indra/llcharacter/llkeyframefallmotion.cpp index 60ab2e9929..60ab2e9929 100755..100644 --- a/indra/llcharacter/llkeyframefallmotion.cpp +++ b/indra/llcharacter/llkeyframefallmotion.cpp diff --git a/indra/llcharacter/llkeyframefallmotion.h b/indra/llcharacter/llkeyframefallmotion.h index 7f0a2fdda2..7f0a2fdda2 100755..100644 --- a/indra/llcharacter/llkeyframefallmotion.h +++ b/indra/llcharacter/llkeyframefallmotion.h diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index cd201a65b4..cd201a65b4 100755..100644 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp diff --git a/indra/llcharacter/llkeyframemotion.h b/indra/llcharacter/llkeyframemotion.h index b1422b2b90..b1422b2b90 100755..100644 --- a/indra/llcharacter/llkeyframemotion.h +++ b/indra/llcharacter/llkeyframemotion.h diff --git a/indra/llcharacter/llkeyframemotionparam.cpp b/indra/llcharacter/llkeyframemotionparam.cpp index 6ed18bc445..6ed18bc445 100755..100644 --- a/indra/llcharacter/llkeyframemotionparam.cpp +++ b/indra/llcharacter/llkeyframemotionparam.cpp diff --git a/indra/llcharacter/llkeyframemotionparam.h b/indra/llcharacter/llkeyframemotionparam.h index 0fac3724d1..0fac3724d1 100755..100644 --- a/indra/llcharacter/llkeyframemotionparam.h +++ b/indra/llcharacter/llkeyframemotionparam.h diff --git a/indra/llcharacter/llkeyframestandmotion.cpp b/indra/llcharacter/llkeyframestandmotion.cpp index fdeddf55e1..fdeddf55e1 100755..100644 --- a/indra/llcharacter/llkeyframestandmotion.cpp +++ b/indra/llcharacter/llkeyframestandmotion.cpp diff --git a/indra/llcharacter/llkeyframestandmotion.h b/indra/llcharacter/llkeyframestandmotion.h index c2634ecd6d..c2634ecd6d 100755..100644 --- a/indra/llcharacter/llkeyframestandmotion.h +++ b/indra/llcharacter/llkeyframestandmotion.h diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp index f180702385..f180702385 100755..100644 --- a/indra/llcharacter/llkeyframewalkmotion.cpp +++ b/indra/llcharacter/llkeyframewalkmotion.cpp diff --git a/indra/llcharacter/llkeyframewalkmotion.h b/indra/llcharacter/llkeyframewalkmotion.h index 0e8d21b765..0e8d21b765 100755..100644 --- a/indra/llcharacter/llkeyframewalkmotion.h +++ b/indra/llcharacter/llkeyframewalkmotion.h diff --git a/indra/llcharacter/llmotion.cpp b/indra/llcharacter/llmotion.cpp index 4803f855de..4803f855de 100755..100644 --- a/indra/llcharacter/llmotion.cpp +++ b/indra/llcharacter/llmotion.cpp diff --git a/indra/llcharacter/llmotion.h b/indra/llcharacter/llmotion.h index 5e37f094b8..5e37f094b8 100755..100644 --- a/indra/llcharacter/llmotion.h +++ b/indra/llcharacter/llmotion.h diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index e02b139608..e02b139608 100755..100644 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index 2bd5271c4f..2bd5271c4f 100755..100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp index 2045739c7f..2045739c7f 100755..100644 --- a/indra/llcharacter/llmultigesture.cpp +++ b/indra/llcharacter/llmultigesture.cpp diff --git a/indra/llcharacter/llmultigesture.h b/indra/llcharacter/llmultigesture.h index 92820159d4..92820159d4 100755..100644 --- a/indra/llcharacter/llmultigesture.h +++ b/indra/llcharacter/llmultigesture.h diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp index b1a7ebb159..b1a7ebb159 100755..100644 --- a/indra/llcharacter/llpose.cpp +++ b/indra/llcharacter/llpose.cpp diff --git a/indra/llcharacter/llpose.h b/indra/llcharacter/llpose.h index c004a0f3b7..c004a0f3b7 100755..100644 --- a/indra/llcharacter/llpose.h +++ b/indra/llcharacter/llpose.h diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp index b917db3117..b917db3117 100755..100644 --- a/indra/llcharacter/llstatemachine.cpp +++ b/indra/llcharacter/llstatemachine.cpp diff --git a/indra/llcharacter/llstatemachine.h b/indra/llcharacter/llstatemachine.h index a2f7e59bd2..a2f7e59bd2 100755..100644 --- a/indra/llcharacter/llstatemachine.h +++ b/indra/llcharacter/llstatemachine.h diff --git a/indra/llcharacter/lltargetingmotion.cpp b/indra/llcharacter/lltargetingmotion.cpp index 69681e4197..69681e4197 100755..100644 --- a/indra/llcharacter/lltargetingmotion.cpp +++ b/indra/llcharacter/lltargetingmotion.cpp diff --git a/indra/llcharacter/lltargetingmotion.h b/indra/llcharacter/lltargetingmotion.h index 0971417e1e..0971417e1e 100755..100644 --- a/indra/llcharacter/lltargetingmotion.h +++ b/indra/llcharacter/lltargetingmotion.h diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 2235496ac5..2235496ac5 100755..100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index c6b97d7e8b..c6b97d7e8b 100755..100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h diff --git a/indra/llcharacter/tests/lljoint_test.cpp b/indra/llcharacter/tests/lljoint_test.cpp index da151808f2..da151808f2 100755..100644 --- a/indra/llcharacter/tests/lljoint_test.cpp +++ b/indra/llcharacter/tests/lljoint_test.cpp diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 1459b9ada2..5863310162 100755..100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -37,6 +37,7 @@ set(llcommon_SOURCE_FILES llbase32.cpp llbase64.cpp llbitpack.cpp + llcallbacklist.cpp llcommon.cpp llcommonutils.cpp llcoros.cpp @@ -129,6 +130,7 @@ set(llcommon_HEADER_FILES llbase64.h llbitpack.h llboost.h + llcallbacklist.h llcommon.h llcommonutils.h llcoros.h diff --git a/indra/llcommon/ctype_workaround.h b/indra/llcommon/ctype_workaround.h index 552be9fb90..552be9fb90 100755..100644 --- a/indra/llcommon/ctype_workaround.h +++ b/indra/llcommon/ctype_workaround.h diff --git a/indra/llcommon/fix_macros.h b/indra/llcommon/fix_macros.h index ef959decff..ef959decff 100755..100644 --- a/indra/llcommon/fix_macros.h +++ b/indra/llcommon/fix_macros.h diff --git a/indra/llcommon/indra_constants.cpp b/indra/llcommon/indra_constants.cpp index f3989ee1d0..f3989ee1d0 100755..100644 --- a/indra/llcommon/indra_constants.cpp +++ b/indra/llcommon/indra_constants.cpp diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 02f063f5e8..02f063f5e8 100755..100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h diff --git a/indra/llcommon/is_approx_equal_fraction.h b/indra/llcommon/is_approx_equal_fraction.h index 4a9b2e2725..4a9b2e2725 100755..100644 --- a/indra/llcommon/is_approx_equal_fraction.h +++ b/indra/llcommon/is_approx_equal_fraction.h diff --git a/indra/llcommon/linden_common.h b/indra/llcommon/linden_common.h index 5cfcdab41c..5cfcdab41c 100755..100644 --- a/indra/llcommon/linden_common.h +++ b/indra/llcommon/linden_common.h diff --git a/indra/llcommon/llallocator.cpp b/indra/llcommon/llallocator.cpp index 34fc28d8cc..34fc28d8cc 100755..100644 --- a/indra/llcommon/llallocator.cpp +++ b/indra/llcommon/llallocator.cpp diff --git a/indra/llcommon/llallocator.h b/indra/llcommon/llallocator.h index d26ad73c5b..d26ad73c5b 100755..100644 --- a/indra/llcommon/llallocator.h +++ b/indra/llcommon/llallocator.h diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp index b2eafde1aa..b2eafde1aa 100755..100644 --- a/indra/llcommon/llallocator_heap_profile.cpp +++ b/indra/llcommon/llallocator_heap_profile.cpp diff --git a/indra/llcommon/llallocator_heap_profile.h b/indra/llcommon/llallocator_heap_profile.h index 69300b829b..69300b829b 100755..100644 --- a/indra/llcommon/llallocator_heap_profile.h +++ b/indra/llcommon/llallocator_heap_profile.h diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index 5a40845e7d..5a40845e7d 100755..100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index d9933b3d36..d9933b3d36 100755..100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index a548c96002..a548c96002 100755..100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index b1b0fc4718..b1b0fc4718 100755..100644 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp index 5ae2df3994..5ae2df3994 100755..100644 --- a/indra/llcommon/llassettype.cpp +++ b/indra/llcommon/llassettype.cpp diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h index 5a95a58d93..3a4b5dad18 100755..100644 --- a/indra/llcommon/llassettype.h +++ b/indra/llcommon/llassettype.h @@ -107,6 +107,9 @@ public: AT_LINK_FOLDER = 25, // Inventory folder link + AT_MARKETPLACE_FOLDER = 26, + // Marketplace folder. Same as an AT_CATEGORY but different display methods. + AT_WIDGET = 40, // UI Widget: this is *not* an inventory asset type, only a viewer side asset (e.g. button, other ui items...) diff --git a/indra/llcommon/llbase32.cpp b/indra/llcommon/llbase32.cpp index 349567c90b..349567c90b 100755..100644 --- a/indra/llcommon/llbase32.cpp +++ b/indra/llcommon/llbase32.cpp diff --git a/indra/llcommon/llbase32.h b/indra/llcommon/llbase32.h index eeb96d789d..eeb96d789d 100755..100644 --- a/indra/llcommon/llbase32.h +++ b/indra/llcommon/llbase32.h diff --git a/indra/llcommon/llbase64.cpp b/indra/llcommon/llbase64.cpp index 4e82cf7f20..4e82cf7f20 100755..100644 --- a/indra/llcommon/llbase64.cpp +++ b/indra/llcommon/llbase64.cpp diff --git a/indra/llcommon/llbase64.h b/indra/llcommon/llbase64.h index 16d2c217d0..16d2c217d0 100755..100644 --- a/indra/llcommon/llbase64.h +++ b/indra/llcommon/llbase64.h diff --git a/indra/llcommon/llbitpack.cpp b/indra/llcommon/llbitpack.cpp index 622a099945..622a099945 100755..100644 --- a/indra/llcommon/llbitpack.cpp +++ b/indra/llcommon/llbitpack.cpp diff --git a/indra/llcommon/llbitpack.h b/indra/llcommon/llbitpack.h index f99a354cd4..f99a354cd4 100755..100644 --- a/indra/llcommon/llbitpack.h +++ b/indra/llcommon/llbitpack.h diff --git a/indra/llcommon/llboost.h b/indra/llcommon/llboost.h index 57d958a51a..57d958a51a 100755..100644 --- a/indra/llcommon/llboost.h +++ b/indra/llcommon/llboost.h diff --git a/indra/llcommon/llcallbacklist.cpp b/indra/llcommon/llcallbacklist.cpp new file mode 100644 index 0000000000..541ff75ee4 --- /dev/null +++ b/indra/llcommon/llcallbacklist.cpp @@ -0,0 +1,230 @@ +/** + * @file llcallbacklist.cpp + * @brief A simple list of callback functions to call. + * + * $LicenseInfo:firstyear=2001&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 "llcallbacklist.h" +#include "lleventtimer.h" +#include "llerrorlegacy.h" + +// Globals +// +LLCallbackList gIdleCallbacks; + +// +// Member functions +// + +LLCallbackList::LLCallbackList() +{ + // nothing +} + +LLCallbackList::~LLCallbackList() +{ +} + + +void LLCallbackList::addFunction( callback_t func, void *data) +{ + if (!func) + { + return; + } + + // only add one callback per func/data pair + // + if (containsFunction(func)) + { + return; + } + + callback_pair_t t(func, data); + mCallbackList.push_back(t); +} + +bool LLCallbackList::containsFunction( callback_t func, void *data) +{ + callback_pair_t t(func, data); + callback_list_t::iterator iter = find(func,data); + if (iter != mCallbackList.end()) + { + return TRUE; + } + else + { + return FALSE; + } +} + + +bool LLCallbackList::deleteFunction( callback_t func, void *data) +{ + callback_list_t::iterator iter = find(func,data); + if (iter != mCallbackList.end()) + { + mCallbackList.erase(iter); + return TRUE; + } + else + { + return FALSE; + } +} + +inline +LLCallbackList::callback_list_t::iterator +LLCallbackList::find(callback_t func, void *data) +{ + callback_pair_t t(func, data); + return std::find(mCallbackList.begin(), mCallbackList.end(), t); +} + +void LLCallbackList::deleteAllFunctions() +{ + mCallbackList.clear(); +} + + +void LLCallbackList::callFunctions() +{ + for (callback_list_t::iterator iter = mCallbackList.begin(); iter != mCallbackList.end(); ) + { + callback_list_t::iterator curiter = iter++; + curiter->first(curiter->second); + } +} + +// Shim class to allow arbitrary boost::bind +// expressions to be run as one-time idle callbacks. +class OnIdleCallbackOneTime +{ +public: + OnIdleCallbackOneTime(nullary_func_t callable): + mCallable(callable) + { + } + static void onIdle(void *data) + { + gIdleCallbacks.deleteFunction(onIdle, data); + OnIdleCallbackOneTime* self = reinterpret_cast<OnIdleCallbackOneTime*>(data); + self->call(); + delete self; + } + void call() + { + mCallable(); + } +private: + nullary_func_t mCallable; +}; + +void doOnIdleOneTime(nullary_func_t callable) +{ + OnIdleCallbackOneTime* cb_functor = new OnIdleCallbackOneTime(callable); + gIdleCallbacks.addFunction(&OnIdleCallbackOneTime::onIdle,cb_functor); +} + +// Shim class to allow generic boost functions to be run as +// recurring idle callbacks. Callable should return true when done, +// false to continue getting called. +class OnIdleCallbackRepeating +{ +public: + OnIdleCallbackRepeating(bool_func_t callable): + mCallable(callable) + { + } + // Will keep getting called until the callable returns true. + static void onIdle(void *data) + { + OnIdleCallbackRepeating* self = reinterpret_cast<OnIdleCallbackRepeating*>(data); + bool done = self->call(); + if (done) + { + gIdleCallbacks.deleteFunction(onIdle, data); + delete self; + } + } + bool call() + { + return mCallable(); + } +private: + bool_func_t mCallable; +}; + +void doOnIdleRepeating(bool_func_t callable) +{ + OnIdleCallbackRepeating* cb_functor = new OnIdleCallbackRepeating(callable); + gIdleCallbacks.addFunction(&OnIdleCallbackRepeating::onIdle,cb_functor); +} + +class NullaryFuncEventTimer: public LLEventTimer +{ +public: + NullaryFuncEventTimer(nullary_func_t callable, F32 seconds): + LLEventTimer(seconds), + mCallable(callable) + { + } + +private: + BOOL tick() + { + mCallable(); + return TRUE; + } + + nullary_func_t mCallable; +}; + +// Call a given callable once after specified interval. +void doAfterInterval(nullary_func_t callable, F32 seconds) +{ + new NullaryFuncEventTimer(callable, seconds); +} + +class BoolFuncEventTimer: public LLEventTimer +{ +public: + BoolFuncEventTimer(bool_func_t callable, F32 seconds): + LLEventTimer(seconds), + mCallable(callable) + { + } +private: + BOOL tick() + { + return mCallable(); + } + + bool_func_t mCallable; +}; + +// Call a given callable every specified number of seconds, until it returns true. +void doPeriodically(bool_func_t callable, F32 seconds) +{ + new BoolFuncEventTimer(callable, seconds); +} diff --git a/indra/newview/llcallbacklist.h b/indra/llcommon/llcallbacklist.h index 0516c9cdb4..89716cd74c 100755..100644 --- a/indra/newview/llcallbacklist.h +++ b/indra/llcommon/llcallbacklist.h @@ -28,27 +28,34 @@ #define LL_LLCALLBACKLIST_H #include "llstl.h" +#include <boost/function.hpp> +#include <list> class LLCallbackList { public: typedef void (*callback_t)(void*); + + typedef std::pair< callback_t,void* > callback_pair_t; + // NOTE: It is confirmed that we DEPEND on the order provided by using a list :( + // + typedef std::list< callback_pair_t > callback_list_t; LLCallbackList(); ~LLCallbackList(); - void addFunction( callback_t func, void *data = NULL ); // register a callback, which will be called as func(data) - BOOL containsFunction( callback_t func, void *data = NULL ); // true if list already contains the function/data pair - BOOL deleteFunction( callback_t func, void *data = NULL ); // removes the first instance of this function/data pair from the list, false if not found - void callFunctions(); // calls all functions + void addFunction( callback_t func, void *data = NULL ); // register a callback, which will be called as func(data) + bool containsFunction( callback_t func, void *data = NULL ); // true if list already contains the function/data pair + bool deleteFunction( callback_t func, void *data = NULL ); // removes the first instance of this function/data pair from the list, false if not found + void callFunctions(); // calls all functions void deleteAllFunctions(); static void test(); protected: - // Use a list so that the callbacks are ordered in case that matters - typedef std::pair<callback_t,void*> callback_pair_t; - typedef std::list<callback_pair_t > callback_list_t; + + inline callback_list_t::iterator find(callback_t func, void *data); + callback_list_t mCallbackList; }; diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp index 19642b0982..19642b0982 100755..100644 --- a/indra/llcommon/llcommon.cpp +++ b/indra/llcommon/llcommon.cpp diff --git a/indra/llcommon/llcommon.h b/indra/llcommon/llcommon.h index ca9cad5d05..ca9cad5d05 100755..100644 --- a/indra/llcommon/llcommon.h +++ b/indra/llcommon/llcommon.h diff --git a/indra/llcommon/llcommonutils.cpp b/indra/llcommon/llcommonutils.cpp index d82554c202..d82554c202 100755..100644 --- a/indra/llcommon/llcommonutils.cpp +++ b/indra/llcommon/llcommonutils.cpp diff --git a/indra/llcommon/llcommonutils.h b/indra/llcommon/llcommonutils.h index 20ada27830..20ada27830 100755..100644 --- a/indra/llcommon/llcommonutils.h +++ b/indra/llcommon/llcommonutils.h diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index baaddcaed1..baaddcaed1 100755..100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h index 01ee11da1a..01ee11da1a 100755..100644 --- a/indra/llcommon/llcoros.h +++ b/indra/llcommon/llcoros.h diff --git a/indra/llcommon/llcrc.cpp b/indra/llcommon/llcrc.cpp index 626bb1e564..626bb1e564 100755..100644 --- a/indra/llcommon/llcrc.cpp +++ b/indra/llcommon/llcrc.cpp diff --git a/indra/llcommon/llcrc.h b/indra/llcommon/llcrc.h index 3f41b28ffa..3f41b28ffa 100755..100644 --- a/indra/llcommon/llcrc.h +++ b/indra/llcommon/llcrc.h diff --git a/indra/llcommon/llcriticaldamp.cpp b/indra/llcommon/llcriticaldamp.cpp index 54be855f67..54be855f67 100755..100644 --- a/indra/llcommon/llcriticaldamp.cpp +++ b/indra/llcommon/llcriticaldamp.cpp diff --git a/indra/llcommon/llcriticaldamp.h b/indra/llcommon/llcriticaldamp.h index 1fb6a1af29..1fb6a1af29 100755..100644 --- a/indra/llcommon/llcriticaldamp.h +++ b/indra/llcommon/llcriticaldamp.h diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index 7a2a0869f4..7a2a0869f4 100755..100644 --- a/indra/llcommon/lldate.cpp +++ b/indra/llcommon/lldate.cpp diff --git a/indra/llcommon/lldate.h b/indra/llcommon/lldate.h index be2cd2d051..be2cd2d051 100755..100644 --- a/indra/llcommon/lldate.h +++ b/indra/llcommon/lldate.h diff --git a/indra/llcommon/lldefs.h b/indra/llcommon/lldefs.h index 5a4b8325f4..5a4b8325f4 100755..100644 --- a/indra/llcommon/lldefs.h +++ b/indra/llcommon/lldefs.h diff --git a/indra/llcommon/lldependencies.cpp b/indra/llcommon/lldependencies.cpp index 0e72c175cb..0e72c175cb 100755..100644 --- a/indra/llcommon/lldependencies.cpp +++ b/indra/llcommon/lldependencies.cpp diff --git a/indra/llcommon/lldependencies.h b/indra/llcommon/lldependencies.h index e0294e271b..e0294e271b 100755..100644 --- a/indra/llcommon/lldependencies.h +++ b/indra/llcommon/lldependencies.h diff --git a/indra/llcommon/lldepthstack.h b/indra/llcommon/lldepthstack.h index b65840d342..b65840d342 100755..100644 --- a/indra/llcommon/lldepthstack.h +++ b/indra/llcommon/lldepthstack.h diff --git a/indra/llcommon/lldictionary.cpp b/indra/llcommon/lldictionary.cpp index e16c35ed6a..e16c35ed6a 100755..100644 --- a/indra/llcommon/lldictionary.cpp +++ b/indra/llcommon/lldictionary.cpp diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 5800ec5e5d..5800ec5e5d 100755..100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h diff --git a/indra/llcommon/lldoubledispatch.h b/indra/llcommon/lldoubledispatch.h index 8ed295b6f1..8ed295b6f1 100755..100644 --- a/indra/llcommon/lldoubledispatch.h +++ b/indra/llcommon/lldoubledispatch.h diff --git a/indra/llcommon/llendianswizzle.h b/indra/llcommon/llendianswizzle.h index 4c08074a9c..4c08074a9c 100755..100644 --- a/indra/llcommon/llendianswizzle.h +++ b/indra/llcommon/llendianswizzle.h diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 2100989316..5ed348e13c 100755..100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -119,6 +119,7 @@ namespace { LL_INFOS() << "Error setting log file to " << filename << LL_ENDL; } mWantsTime = true; + mWantsTags = true; } ~RecordToFile() @@ -558,7 +559,7 @@ namespace LLError mFunctionString += std::string(mFunction) + ":"; for (size_t i = 0; i < mTagCount; i++) { - mTagString += std::string("#") + mTags[i] + ((i == mTagCount - 1) ? "" : " "); + mTagString += std::string("#") + mTags[i] + ((i == mTagCount - 1) ? "" : ","); } } @@ -931,14 +932,19 @@ namespace } if (show_level && r->wantsLevel()) - { - message_stream << site.mLevelString << " "; - } + { + message_stream << site.mLevelString; + } if (show_tags && r->wantsTags()) { - message_stream << site.mTagString << " "; + message_stream << site.mTagString; } + if ((show_level && r->wantsLevel())|| + (show_tags && r->wantsTags())) + { + message_stream << " "; + } if (show_function && r->wantsFunctionName()) { diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 63040e1772..63040e1772 100755..100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h diff --git a/indra/llcommon/llerrorcontrol.h b/indra/llcommon/llerrorcontrol.h index 56ac52e5de..56ac52e5de 100755..100644 --- a/indra/llcommon/llerrorcontrol.h +++ b/indra/llcommon/llerrorcontrol.h diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h index 31dd207008..31dd207008 100755..100644 --- a/indra/llcommon/llerrorlegacy.h +++ b/indra/llcommon/llerrorlegacy.h diff --git a/indra/llcommon/llerrorthread.cpp b/indra/llcommon/llerrorthread.cpp index f6bc68b5c1..f6bc68b5c1 100755..100644 --- a/indra/llcommon/llerrorthread.cpp +++ b/indra/llcommon/llerrorthread.cpp diff --git a/indra/llcommon/llerrorthread.h b/indra/llcommon/llerrorthread.h index 474cef3a50..474cef3a50 100755..100644 --- a/indra/llcommon/llerrorthread.h +++ b/indra/llcommon/llerrorthread.h diff --git a/indra/llcommon/llevent.cpp b/indra/llcommon/llevent.cpp index 633df01588..633df01588 100755..100644 --- a/indra/llcommon/llevent.cpp +++ b/indra/llcommon/llevent.cpp diff --git a/indra/llcommon/llevent.h b/indra/llcommon/llevent.h index 28ce7de102..28ce7de102 100755..100644 --- a/indra/llcommon/llevent.h +++ b/indra/llcommon/llevent.h diff --git a/indra/llcommon/lleventapi.cpp b/indra/llcommon/lleventapi.cpp index ff5459c1eb..ff5459c1eb 100755..100644 --- a/indra/llcommon/lleventapi.cpp +++ b/indra/llcommon/lleventapi.cpp diff --git a/indra/llcommon/lleventapi.h b/indra/llcommon/lleventapi.h index 5991fe8fd5..5991fe8fd5 100755..100644 --- a/indra/llcommon/lleventapi.h +++ b/indra/llcommon/lleventapi.h diff --git a/indra/llcommon/lleventcoro.cpp b/indra/llcommon/lleventcoro.cpp index 81cc33fbba..81cc33fbba 100755..100644 --- a/indra/llcommon/lleventcoro.cpp +++ b/indra/llcommon/lleventcoro.cpp diff --git a/indra/llcommon/lleventcoro.h b/indra/llcommon/lleventcoro.h index abbeeaa373..abbeeaa373 100755..100644 --- a/indra/llcommon/lleventcoro.h +++ b/indra/llcommon/lleventcoro.h diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp index 5b6d4efbe9..5b6d4efbe9 100755..100644 --- a/indra/llcommon/lleventdispatcher.cpp +++ b/indra/llcommon/lleventdispatcher.cpp diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h index 7acc61de4e..7acc61de4e 100755..100644 --- a/indra/llcommon/lleventdispatcher.h +++ b/indra/llcommon/lleventdispatcher.h diff --git a/indra/llcommon/lleventemitter.h b/indra/llcommon/lleventemitter.h index cd82fc56f9..cd82fc56f9 100755..100644 --- a/indra/llcommon/lleventemitter.h +++ b/indra/llcommon/lleventemitter.h diff --git a/indra/llcommon/lleventfilter.cpp b/indra/llcommon/lleventfilter.cpp index d36a107254..d36a107254 100755..100644 --- a/indra/llcommon/lleventfilter.cpp +++ b/indra/llcommon/lleventfilter.cpp diff --git a/indra/llcommon/lleventfilter.h b/indra/llcommon/lleventfilter.h index e822a664f5..e822a664f5 100755..100644 --- a/indra/llcommon/lleventfilter.h +++ b/indra/llcommon/lleventfilter.h diff --git a/indra/llcommon/llevents.cpp b/indra/llcommon/llevents.cpp index 1c928b3db8..1c928b3db8 100755..100644 --- a/indra/llcommon/llevents.cpp +++ b/indra/llcommon/llevents.cpp diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h index 0cbd1da32d..0cbd1da32d 100755..100644 --- a/indra/llcommon/llevents.h +++ b/indra/llcommon/llevents.h diff --git a/indra/llcommon/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp index 0d96e03da4..0d96e03da4 100755..100644 --- a/indra/llcommon/lleventtimer.cpp +++ b/indra/llcommon/lleventtimer.cpp diff --git a/indra/llcommon/lleventtimer.h b/indra/llcommon/lleventtimer.h index dc918121e1..dc918121e1 100755..100644 --- a/indra/llcommon/lleventtimer.h +++ b/indra/llcommon/lleventtimer.h diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp index 3d28cd15b0..3d28cd15b0 100755..100644 --- a/indra/llcommon/llfasttimer.cpp +++ b/indra/llcommon/llfasttimer.cpp diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 2370253078..2370253078 100755..100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp index 295c97eac8..873a7bce25 100755..100644 --- a/indra/llcommon/llfile.cpp +++ b/indra/llcommon/llfile.cpp @@ -421,551 +421,42 @@ LLFILE * LLFile::_Fiopen(const std::string& filename, #endif /* LL_WINDOWS */ -/************** llstdio file buffer ********************************/ - - -#if !LL_WINDOWS -llstdio_filebuf::int_type llstdio_filebuf::overflow(llstdio_filebuf::int_type __c) -{ - int_type __ret = traits_type::eof(); - const bool __testeof = traits_type::eq_int_type(__c, __ret); - const bool __testout = _M_mode & ios_base::out; - if (__testout && !_M_reading) - { - if (this->pbase() < this->pptr()) - { - // If appropriate, append the overflow char. - if (!__testeof) - { - *this->pptr() = traits_type::to_char_type(__c); - this->pbump(1); - } - - // Convert pending sequence to external representation, - // and output. - if (_convert_to_external(this->pbase(), - this->pptr() - this->pbase())) - { - _M_set_buffer(0); - __ret = traits_type::not_eof(__c); - } - } - else if (_M_buf_size > 1) - { - // Overflow in 'uncommitted' mode: set _M_writing, set - // the buffer to the initial 'write' mode, and put __c - // into the buffer. - _M_set_buffer(0); - _M_writing = true; - if (!__testeof) - { - *this->pptr() = traits_type::to_char_type(__c); - this->pbump(1); - } - __ret = traits_type::not_eof(__c); - } - else - { - // Unbuffered. - char_type __conv = traits_type::to_char_type(__c); - if (__testeof || _convert_to_external(&__conv, 1)) - { - _M_writing = true; - __ret = traits_type::not_eof(__c); - } - } - } - return __ret; -} - -bool llstdio_filebuf::_convert_to_external(char_type* __ibuf, - std::streamsize __ilen) -{ - // Sizes of external and pending output. - streamsize __elen; - streamsize __plen; - if (__check_facet(_M_codecvt).always_noconv()) - { - //__elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen); - __elen = fwrite(reinterpret_cast<void*>(__ibuf), 1, - __ilen, _M_file.file()); - __plen = __ilen; - } - else - { - // Worst-case number of external bytes needed. - // XXX Not done encoding() == -1. - streamsize __blen = __ilen * _M_codecvt->max_length(); - char* __buf = static_cast<char*>(__builtin_alloca(__blen)); - - char* __bend; - const char_type* __iend; - codecvt_base::result __r; - __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, - __iend, __buf, __buf + __blen, __bend); - - if (__r == codecvt_base::ok || __r == codecvt_base::partial) - __blen = __bend - __buf; - else if (__r == codecvt_base::noconv) - { - // Same as the always_noconv case above. - __buf = reinterpret_cast<char*>(__ibuf); - __blen = __ilen; - } - else - __throw_ios_failure(__N("llstdio_filebuf::_convert_to_external " - "conversion error")); - - //__elen = _M_file.xsputn(__buf, __blen); - __elen = fwrite(__buf, 1, __blen, _M_file.file()); - __plen = __blen; - - // Try once more for partial conversions. - if (__r == codecvt_base::partial && __elen == __plen) - { - const char_type* __iresume = __iend; - streamsize __rlen = this->pptr() - __iend; - __r = _M_codecvt->out(_M_state_cur, __iresume, - __iresume + __rlen, __iend, __buf, - __buf + __blen, __bend); - if (__r != codecvt_base::error) - { - __rlen = __bend - __buf; - //__elen = _M_file.xsputn(__buf, __rlen); - __elen = fwrite(__buf, 1, __rlen, _M_file.file()); - __plen = __rlen; - } - else - { - __throw_ios_failure(__N("llstdio_filebuf::_convert_to_external " - "conversion error")); - } - } - } - return __elen == __plen; -} - -llstdio_filebuf::int_type llstdio_filebuf::underflow() -{ - int_type __ret = traits_type::eof(); - const bool __testin = _M_mode & ios_base::in; - if (__testin) - { - if (_M_writing) - { - if (overflow() == traits_type::eof()) - return __ret; - //_M_set_buffer(-1); - //_M_writing = false; - } - // Check for pback madness, and if so switch back to the - // normal buffers and jet outta here before expensive - // fileops happen... - _M_destroy_pback(); - - if (this->gptr() < this->egptr()) - return traits_type::to_int_type(*this->gptr()); - - // Get and convert input sequence. - const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; - - // Will be set to true if ::fread() returns 0 indicating EOF. - bool __got_eof = false; - // Number of internal characters produced. - streamsize __ilen = 0; - codecvt_base::result __r = codecvt_base::ok; - if (__check_facet(_M_codecvt).always_noconv()) - { - //__ilen = _M_file.xsgetn(reinterpret_cast<char*>(this->eback()), - // __buflen); - __ilen = fread(reinterpret_cast<void*>(this->eback()), 1, - __buflen, _M_file.file()); - if (__ilen == 0) - __got_eof = true; - } - else - { - // Worst-case number of external bytes. - // XXX Not done encoding() == -1. - const int __enc = _M_codecvt->encoding(); - streamsize __blen; // Minimum buffer size. - streamsize __rlen; // Number of chars to read. - if (__enc > 0) - __blen = __rlen = __buflen * __enc; - else - { - __blen = __buflen + _M_codecvt->max_length() - 1; - __rlen = __buflen; - } - const streamsize __remainder = _M_ext_end - _M_ext_next; - __rlen = __rlen > __remainder ? __rlen - __remainder : 0; - - // An imbue in 'read' mode implies first converting the external - // chars already present. - if (_M_reading && this->egptr() == this->eback() && __remainder) - __rlen = 0; - - // Allocate buffer if necessary and move unconverted - // bytes to front. - if (_M_ext_buf_size < __blen) - { - char* __buf = new char[__blen]; - if (__remainder) - __builtin_memcpy(__buf, _M_ext_next, __remainder); - - delete [] _M_ext_buf; - _M_ext_buf = __buf; - _M_ext_buf_size = __blen; - } - else if (__remainder) - __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); - - _M_ext_next = _M_ext_buf; - _M_ext_end = _M_ext_buf + __remainder; - _M_state_last = _M_state_cur; - - do - { - if (__rlen > 0) - { - // Sanity check! - // This may fail if the return value of - // codecvt::max_length() is bogus. - if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) - { - __throw_ios_failure(__N("llstdio_filebuf::underflow " - "codecvt::max_length() " - "is not valid")); - } - //streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); - streamsize __elen = fread(_M_ext_end, 1, - __rlen, _M_file.file()); - if (__elen == 0) - __got_eof = true; - else if (__elen == -1) - break; - //_M_ext_end += __elen; - } - - char_type* __iend = this->eback(); - if (_M_ext_next < _M_ext_end) - { - __r = _M_codecvt->in(_M_state_cur, _M_ext_next, - _M_ext_end, _M_ext_next, - this->eback(), - this->eback() + __buflen, __iend); - } - if (__r == codecvt_base::noconv) - { - size_t __avail = _M_ext_end - _M_ext_buf; - __ilen = std::min(__avail, __buflen); - traits_type::copy(this->eback(), - reinterpret_cast<char_type*> - (_M_ext_buf), __ilen); - _M_ext_next = _M_ext_buf + __ilen; - } - else - __ilen = __iend - this->eback(); - - // _M_codecvt->in may return error while __ilen > 0: this is - // ok, and actually occurs in case of mixed encodings (e.g., - // XML files). - if (__r == codecvt_base::error) - break; - - __rlen = 1; - } while (__ilen == 0 && !__got_eof); - } - - if (__ilen > 0) - { - _M_set_buffer(__ilen); - _M_reading = true; - __ret = traits_type::to_int_type(*this->gptr()); - } - else if (__got_eof) - { - // If the actual end of file is reached, set 'uncommitted' - // mode, thus allowing an immediate write without an - // intervening seek. - _M_set_buffer(-1); - _M_reading = false; - // However, reaching it while looping on partial means that - // the file has got an incomplete character. - if (__r == codecvt_base::partial) - __throw_ios_failure(__N("llstdio_filebuf::underflow " - "incomplete character in file")); - } - else if (__r == codecvt_base::error) - __throw_ios_failure(__N("llstdio_filebuf::underflow " - "invalid byte sequence in file")); - else - __throw_ios_failure(__N("llstdio_filebuf::underflow " - "error reading the file")); - } - return __ret; -} - -std::streamsize llstdio_filebuf::xsgetn(char_type* __s, std::streamsize __n) -{ - // Clear out pback buffer before going on to the real deal... - streamsize __ret = 0; - if (_M_pback_init) - { - if (__n > 0 && this->gptr() == this->eback()) - { - *__s++ = *this->gptr(); - this->gbump(1); - __ret = 1; - --__n; - } - _M_destroy_pback(); - } - - // Optimization in the always_noconv() case, to be generalized in the - // future: when __n > __buflen we read directly instead of using the - // buffer repeatedly. - const bool __testin = _M_mode & ios_base::in; - const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; - - if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() - && __testin && !_M_writing) - { - // First, copy the chars already present in the buffer. - const streamsize __avail = this->egptr() - this->gptr(); - if (__avail != 0) - { - if (__avail == 1) - *__s = *this->gptr(); - else - traits_type::copy(__s, this->gptr(), __avail); - __s += __avail; - this->gbump(__avail); - __ret += __avail; - __n -= __avail; - } - - // Need to loop in case of short reads (relatively common - // with pipes). - streamsize __len; - for (;;) - { - //__len = _M_file.xsgetn(reinterpret_cast<char*>(__s), __n); - __len = fread(reinterpret_cast<void*>(__s), 1, - __n, _M_file.file()); - if (__len == -1) - __throw_ios_failure(__N("llstdio_filebuf::xsgetn " - "error reading the file")); - if (__len == 0) - break; - - __n -= __len; - __ret += __len; - if (__n == 0) - break; - - __s += __len; - } - - if (__n == 0) - { - _M_set_buffer(0); - _M_reading = true; - } - else if (__len == 0) - { - // If end of file is reached, set 'uncommitted' - // mode, thus allowing an immediate write without - // an intervening seek. - _M_set_buffer(-1); - _M_reading = false; - } - } - else - __ret += __streambuf_type::xsgetn(__s, __n); - - return __ret; -} - -std::streamsize llstdio_filebuf::xsputn(const char_type* __s, std::streamsize __n) -{ - // Optimization in the always_noconv() case, to be generalized in the - // future: when __n is sufficiently large we write directly instead of - // using the buffer. - streamsize __ret = 0; - const bool __testout = _M_mode & ios_base::out; - if (__check_facet(_M_codecvt).always_noconv() - && __testout && !_M_reading) - { - // Measurement would reveal the best choice. - const streamsize __chunk = 1ul << 10; - streamsize __bufavail = this->epptr() - this->pptr(); - - // Don't mistake 'uncommitted' mode buffered with unbuffered. - if (!_M_writing && _M_buf_size > 1) - __bufavail = _M_buf_size - 1; - - const streamsize __limit = std::min(__chunk, __bufavail); - if (__n >= __limit) - { - const streamsize __buffill = this->pptr() - this->pbase(); - const char* __buf = reinterpret_cast<const char*>(this->pbase()); - //__ret = _M_file.xsputn_2(__buf, __buffill, - // reinterpret_cast<const char*>(__s), __n); - if (__buffill) - { - __ret = fwrite(__buf, 1, __buffill, _M_file.file()); - } - if (__ret == __buffill) - { - __ret += fwrite(reinterpret_cast<const char*>(__s), 1, - __n, _M_file.file()); - } - if (__ret == __buffill + __n) - { - _M_set_buffer(0); - _M_writing = true; - } - if (__ret > __buffill) - __ret -= __buffill; - else - __ret = 0; - } - else - __ret = __streambuf_type::xsputn(__s, __n); - } - else - __ret = __streambuf_type::xsputn(__s, __n); - return __ret; -} - -int llstdio_filebuf::sync() -{ - return (_M_file.sync() == 0 ? 0 : -1); -} -#endif #if LL_WINDOWS /************** input file stream ********************************/ -llifstream::llifstream() : - _M_filebuf(), - std::istream(&_M_filebuf) -{ -} +llifstream::llifstream() {} // explicit -llifstream::llifstream(const std::string& _Filename, - ios_base::openmode _Mode) : - _M_filebuf(), - std::istream(&_M_filebuf) +llifstream::llifstream(const std::string& _Filename, ios_base::openmode _Mode): + std::ifstream(utf8str_to_utf16str( _Filename ).c_str(), + _Mode | ios_base::in) { - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0) - { - _Myios::setstate(ios_base::failbit); - } } -// explicit -llifstream::llifstream(const char* _Filename, - ios_base::openmode _Mode) : - _M_filebuf(), - std::istream(&_M_filebuf) +void llifstream::open(const std::string& _Filename, ios_base::openmode _Mode) { - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0) - { - _Myios::setstate(ios_base::failbit); - } -} - -bool llifstream::is_open() const -{ // test if C stream has been opened - return _M_filebuf.is_open(); -} - -void llifstream::open(const char* _Filename, ios_base::openmode _Mode) -{ // open a C stream with specified mode - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::in) == 0) - { - _Myios::setstate(ios_base::failbit); - } - else - { - _Myios::clear(); - } -} - -void llifstream::close() -{ // close the C stream - if (_M_filebuf.close() == 0) - { - _Myios::setstate(ios_base::failbit); - } + std::ifstream::open(utf8str_to_utf16str(_Filename).c_str(), + _Mode | ios_base::in); } /************** output file stream ********************************/ -llofstream::llofstream() : - _M_filebuf(), - std::ostream(&_M_filebuf) -{ -} +llofstream::llofstream() {} // explicit -llofstream::llofstream(const std::string& _Filename, - ios_base::openmode _Mode) : - _M_filebuf(), - std::ostream(&_M_filebuf) +llofstream::llofstream(const std::string& _Filename, ios_base::openmode _Mode): + std::ofstream(utf8str_to_utf16str( _Filename ).c_str(), + _Mode | ios_base::out) { - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) - { - _Myios::setstate(ios_base::failbit); - } } -// explicit -llofstream::llofstream(const char* _Filename, - ios_base::openmode _Mode) : - _M_filebuf(), - std::ostream(&_M_filebuf) +void llofstream::open(const std::string& _Filename, ios_base::openmode _Mode) { - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) - { - _Myios::setstate(ios_base::failbit); - } -} - -bool llofstream::is_open() const -{ // test if C stream has been opened - return _M_filebuf.is_open(); -} - -void llofstream::open(const char* _Filename, ios_base::openmode _Mode) -{ // open a C stream with specified mode - llutf16string wideName = utf8str_to_utf16str( _Filename ); - if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0) - { - _Myios::setstate(ios_base::failbit); - } - else - { - _Myios::clear(); - } -} - -void llofstream::close() -{ // close the C stream - if (_M_filebuf.close() == 0) - { - _Myios::setstate(ios_base::failbit); - } + std::ofstream::open(utf8str_to_utf16str( _Filename ).c_str(), + _Mode | ios_base::out); } /************** helper functions ********************************/ diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index 347c9867aa..3e25228aeb 100755..100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -45,7 +45,6 @@ typedef FILE LLFILE; typedef struct _stat llstat; #else typedef struct stat llstat; -#include <ext/stdio_filebuf.h> #include <bits/postypes.h> #endif @@ -86,123 +85,16 @@ public: static const char * tmpdir(); }; -/** - * @brief Provides a layer of compatibility for C/POSIX. - * - * This is taken from both the GNU __gnu_cxx::stdio_filebuf extension and - * VC's basic_filebuf implementation. - * This file buffer provides extensions for working with standard C FILE*'s - * and POSIX file descriptors for platforms that support this. -*/ -namespace -{ -#if LL_WINDOWS -typedef std::filebuf _Myfb; -#else -typedef __gnu_cxx::stdio_filebuf< char > _Myfb; -typedef std::__c_file _Filet; -#endif /* LL_WINDOWS */ -} - -class LL_COMMON_API llstdio_filebuf : public _Myfb -{ -public: - /** - * deferred initialization / destruction - */ - llstdio_filebuf() : _Myfb() {} - virtual ~llstdio_filebuf() {} - - /** - * @param f An open @c FILE*. - * @param mode Same meaning as in a standard filebuf. - * @param size Optimal or preferred size of internal buffer, in chars. - * Defaults to system's @c BUFSIZ. - * - * This constructor associates a file stream buffer with an open - * C @c FILE*. The @c FILE* will not be automatically closed when the - * stdio_filebuf is closed/destroyed. - */ - llstdio_filebuf(_Filet* __f, std::ios_base::openmode __mode, - //size_t __size = static_cast<size_t>(BUFSIZ)) : - size_t __size = static_cast<size_t>(1)) : -#if LL_WINDOWS - _Myfb(__f) {} -#else - _Myfb(__f, __mode, __size) {} -#endif - - /** - * @brief Opens an external file. - * @param s The name of the file. - * @param mode The open mode flags. - * @return @c this on success, NULL on failure - * - * If a file is already open, this function immediately fails. - * Otherwise it tries to open the file named @a s using the flags - * given in @a mode. - */ - //llstdio_filebuf* open(const char *_Filename, - // std::ios_base::openmode _Mode); - - /** - * @param fd An open file descriptor. - * @param mode Same meaning as in a standard filebuf. - * @param size Optimal or preferred size of internal buffer, in chars. - * - * This constructor associates a file stream buffer with an open - * POSIX file descriptor. The file descriptor will be automatically - * closed when the stdio_filebuf is closed/destroyed. - */ -#if !LL_WINDOWS - llstdio_filebuf(int __fd, std::ios_base::openmode __mode, - //size_t __size = static_cast<size_t>(BUFSIZ)) : - size_t __size = static_cast<size_t>(1)) : - _Myfb(__fd, __mode, __size) {} -#endif - -// *TODO: Seek the underlying c stream for better cross-platform compatibility? -#if !LL_WINDOWS -protected: - /** underflow() and uflow() functions are called to get the next - * character from the real input source when the buffer is empty. - * Buffered input uses underflow() - */ - /*virtual*/ int_type underflow(); - - /* Convert internal byte sequence to external, char-based - * sequence via codecvt. - */ - bool _convert_to_external(char_type*, std::streamsize); - - /** The overflow() function is called to transfer characters to the - * real output destination when the buffer is full. A call to - * overflow(c) outputs the contents of the buffer plus the - * character c. - * Consume some sequence of the characters in the pending sequence. - */ - /*virtual*/ int_type overflow(int_type __c = traits_type::eof()); - - /** sync() flushes the underlying @c FILE* stream. - */ - /*virtual*/ int sync(); - - std::streamsize xsgetn(char_type*, std::streamsize); - std::streamsize xsputn(const char_type*, std::streamsize); -#endif -}; - #if LL_WINDOWS /** * @brief Controlling input for files. * * This class supports reading from named files, using the inherited - * functions from std::basic_istream. To control the associated - * sequence, an instance of std::basic_filebuf (or a platform-specific derivative) - * which allows construction using a pre-exisintg file stream buffer. - * We refer to this std::basic_filebuf (or derivative) as @c sb. + * functions from std::ifstream. The only added value is that our constructor + * Does The Right Thing when passed a non-ASCII pathname. Sadly, that isn't + * true of Microsoft's std::ifstream. */ -class LL_COMMON_API llifstream : public std::istream +class LL_COMMON_API llifstream : public std::ifstream { // input stream associated with a C stream public: @@ -225,32 +117,6 @@ class LL_COMMON_API llifstream : public std::istream */ explicit llifstream(const std::string& _Filename, ios_base::openmode _Mode = ios_base::in); - explicit llifstream(const char* _Filename, - ios_base::openmode _Mode = ios_base::in); - - /** - * @brief The destructor does nothing. - * - * The file is closed by the filebuf object, not the formatting - * stream. - */ - virtual ~llifstream() {} - - // Members: - /** - * @brief Accessing the underlying buffer. - * @return The current basic_filebuf buffer. - * - * This hides both signatures of std::basic_ios::rdbuf(). - */ - llstdio_filebuf* rdbuf() const - { return const_cast<llstdio_filebuf*>(&_M_filebuf); } - - /** - * @brief Wrapper to test for an open file. - * @return @c rdbuf()->is_open() - */ - bool is_open() const; /** * @brief Opens an external file. @@ -261,34 +127,19 @@ class LL_COMMON_API llifstream : public std::istream * fails, @c failbit is set in the stream's error state. */ void open(const std::string& _Filename, - ios_base::openmode _Mode = ios_base::in) - { open(_Filename.c_str(), _Mode); } - void open(const char* _Filename, ios_base::openmode _Mode = ios_base::in); - - /** - * @brief Close the file. - * - * Calls @c llstdio_filebuf::close(). If that function - * fails, @c failbit is set in the stream's error state. - */ - void close(); - - private: - llstdio_filebuf _M_filebuf; }; /** * @brief Controlling output for files. * - * This class supports writing to named files, using the inherited - * functions from std::basic_ostream. To control the associated - * sequence, an instance of std::basic_filebuf (or a platform-specific derivative) - * which allows construction using a pre-exisintg file stream buffer. - * We refer to this std::basic_filebuf (or derivative) as @c sb. + * This class supports writing to named files, using the inherited functions + * from std::ofstream. The only added value is that our constructor Does The + * Right Thing when passed a non-ASCII pathname. Sadly, that isn't true of + * Microsoft's std::ofstream. */ -class LL_COMMON_API llofstream : public std::ostream +class LL_COMMON_API llofstream : public std::ofstream { public: // Constructors: @@ -306,62 +157,20 @@ class LL_COMMON_API llofstream : public std::ostream * @param Filename String specifying the filename. * @param Mode Open file in specified mode (see std::ios_base). * - * @c ios_base::out|ios_base::trunc is automatically included in - * @a mode. + * @c ios_base::out is automatically included in @a mode. */ explicit llofstream(const std::string& _Filename, ios_base::openmode _Mode = ios_base::out|ios_base::trunc); - explicit llofstream(const char* _Filename, - ios_base::openmode _Mode = ios_base::out|ios_base::trunc); - - /** - * @brief The destructor does nothing. - * - * The file is closed by the filebuf object, not the formatting - * stream. - */ - virtual ~llofstream() {} - - // Members: - /** - * @brief Accessing the underlying buffer. - * @return The current basic_filebuf buffer. - * - * This hides both signatures of std::basic_ios::rdbuf(). - */ - llstdio_filebuf* rdbuf() const - { return const_cast<llstdio_filebuf*>(&_M_filebuf); } - - /** - * @brief Wrapper to test for an open file. - * @return @c rdbuf()->is_open() - */ - bool is_open() const; /** * @brief Opens an external file. * @param Filename The name of the file. * @param Node The open mode flags. * - * Calls @c llstdio_filebuf::open(s,mode|out). If that function - * fails, @c failbit is set in the stream's error state. + * @c ios_base::out is automatically included in @a mode. */ void open(const std::string& _Filename, - ios_base::openmode _Mode = ios_base::out|ios_base::trunc) - { open(_Filename.c_str(), _Mode); } - void open(const char* _Filename, ios_base::openmode _Mode = ios_base::out|ios_base::trunc); - - /** - * @brief Close the file. - * - * Calls @c llstdio_filebuf::close(). If that function - * fails, @c failbit is set in the stream's error state. - */ - void close(); - - private: - llstdio_filebuf _M_filebuf; }; diff --git a/indra/llcommon/llfindlocale.cpp b/indra/llcommon/llfindlocale.cpp index f019bd0c64..f019bd0c64 100755..100644 --- a/indra/llcommon/llfindlocale.cpp +++ b/indra/llcommon/llfindlocale.cpp diff --git a/indra/llcommon/llfindlocale.h b/indra/llcommon/llfindlocale.h index 6770db5774..6770db5774 100755..100644 --- a/indra/llcommon/llfindlocale.h +++ b/indra/llcommon/llfindlocale.h diff --git a/indra/llcommon/llfixedbuffer.cpp b/indra/llcommon/llfixedbuffer.cpp index d394f179fb..d394f179fb 100755..100644 --- a/indra/llcommon/llfixedbuffer.cpp +++ b/indra/llcommon/llfixedbuffer.cpp diff --git a/indra/llcommon/llfixedbuffer.h b/indra/llcommon/llfixedbuffer.h index 554cf48a4c..554cf48a4c 100755..100644 --- a/indra/llcommon/llfixedbuffer.h +++ b/indra/llcommon/llfixedbuffer.h diff --git a/indra/llcommon/llformat.cpp b/indra/llcommon/llformat.cpp index 3b2b3038ea..3b2b3038ea 100755..100644 --- a/indra/llcommon/llformat.cpp +++ b/indra/llcommon/llformat.cpp diff --git a/indra/llcommon/llformat.h b/indra/llcommon/llformat.h index fb8e7cd045..fb8e7cd045 100755..100644 --- a/indra/llcommon/llformat.h +++ b/indra/llcommon/llformat.h diff --git a/indra/llcommon/llframetimer.cpp b/indra/llcommon/llframetimer.cpp index 1e9920746b..1e9920746b 100755..100644 --- a/indra/llcommon/llframetimer.cpp +++ b/indra/llcommon/llframetimer.cpp diff --git a/indra/llcommon/llframetimer.h b/indra/llcommon/llframetimer.h index 81bd5da8a3..81bd5da8a3 100755..100644 --- a/indra/llcommon/llframetimer.h +++ b/indra/llcommon/llframetimer.h diff --git a/indra/llcommon/llhandle.h b/indra/llcommon/llhandle.h index 401e4d759a..401e4d759a 100755..100644 --- a/indra/llcommon/llhandle.h +++ b/indra/llcommon/llhandle.h diff --git a/indra/llcommon/llhash.h b/indra/llcommon/llhash.h index 4b58e81565..4b58e81565 100755..100644 --- a/indra/llcommon/llhash.h +++ b/indra/llcommon/llhash.h diff --git a/indra/llcommon/llheartbeat.cpp b/indra/llcommon/llheartbeat.cpp index 19b7452748..19b7452748 100755..100644 --- a/indra/llcommon/llheartbeat.cpp +++ b/indra/llcommon/llheartbeat.cpp diff --git a/indra/llcommon/llheartbeat.h b/indra/llcommon/llheartbeat.h index 4a75fcc103..4a75fcc103 100755..100644 --- a/indra/llcommon/llheartbeat.h +++ b/indra/llcommon/llheartbeat.h diff --git a/indra/llcommon/llindexedvector.h b/indra/llcommon/llindexedvector.h index 68c3821802..68c3821802 100755..100644 --- a/indra/llcommon/llindexedvector.h +++ b/indra/llcommon/llindexedvector.h diff --git a/indra/llcommon/llinitparam.cpp b/indra/llcommon/llinitparam.cpp index aa2f4eb289..aa2f4eb289 100755..100644 --- a/indra/llcommon/llinitparam.cpp +++ b/indra/llcommon/llinitparam.cpp diff --git a/indra/llcommon/llinitparam.h b/indra/llcommon/llinitparam.h index c65b05f610..c65b05f610 100755..100644 --- a/indra/llcommon/llinitparam.h +++ b/indra/llcommon/llinitparam.h diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp index 11fc53f8c8..11fc53f8c8 100755..100644 --- a/indra/llcommon/llinstancetracker.cpp +++ b/indra/llcommon/llinstancetracker.cpp diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h index 9783644e66..9783644e66 100755..100644 --- a/indra/llcommon/llinstancetracker.h +++ b/indra/llcommon/llinstancetracker.h diff --git a/indra/llcommon/llkeythrottle.h b/indra/llcommon/llkeythrottle.h index 1f576cc19e..1f576cc19e 100755..100644 --- a/indra/llcommon/llkeythrottle.h +++ b/indra/llcommon/llkeythrottle.h diff --git a/indra/llcommon/llkeyusetracker.h b/indra/llcommon/llkeyusetracker.h index 1fb222dd40..1fb222dd40 100755..100644 --- a/indra/llcommon/llkeyusetracker.h +++ b/indra/llcommon/llkeyusetracker.h diff --git a/indra/llcommon/llleap.cpp b/indra/llcommon/llleap.cpp index 84d2a12f65..84d2a12f65 100755..100644 --- a/indra/llcommon/llleap.cpp +++ b/indra/llcommon/llleap.cpp diff --git a/indra/llcommon/llleap.h b/indra/llcommon/llleap.h index e33f25e530..e33f25e530 100755..100644 --- a/indra/llcommon/llleap.h +++ b/indra/llcommon/llleap.h diff --git a/indra/llcommon/llleaplistener.cpp b/indra/llcommon/llleaplistener.cpp index fa5730f112..fa5730f112 100755..100644 --- a/indra/llcommon/llleaplistener.cpp +++ b/indra/llcommon/llleaplistener.cpp diff --git a/indra/llcommon/llleaplistener.h b/indra/llcommon/llleaplistener.h index 2193d81b9e..2193d81b9e 100755..100644 --- a/indra/llcommon/llleaplistener.h +++ b/indra/llcommon/llleaplistener.h diff --git a/indra/llcommon/lllistenerwrapper.h b/indra/llcommon/lllistenerwrapper.h index 09d074abca..09d074abca 100755..100644 --- a/indra/llcommon/lllistenerwrapper.h +++ b/indra/llcommon/lllistenerwrapper.h diff --git a/indra/llcommon/llliveappconfig.cpp b/indra/llcommon/llliveappconfig.cpp index a9b1cdf4f6..a9b1cdf4f6 100755..100644 --- a/indra/llcommon/llliveappconfig.cpp +++ b/indra/llcommon/llliveappconfig.cpp diff --git a/indra/llcommon/llliveappconfig.h b/indra/llcommon/llliveappconfig.h index 4fd7c26a07..4fd7c26a07 100755..100644 --- a/indra/llcommon/llliveappconfig.h +++ b/indra/llcommon/llliveappconfig.h diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp index ea485c2d86..ea485c2d86 100755..100644 --- a/indra/llcommon/lllivefile.cpp +++ b/indra/llcommon/lllivefile.cpp diff --git a/indra/llcommon/lllivefile.h b/indra/llcommon/lllivefile.h index 320aa4bc3e..320aa4bc3e 100755..100644 --- a/indra/llcommon/lllivefile.h +++ b/indra/llcommon/lllivefile.h diff --git a/indra/llcommon/llmd5.cpp b/indra/llcommon/llmd5.cpp index f942a976b7..f942a976b7 100755..100644 --- a/indra/llcommon/llmd5.cpp +++ b/indra/llcommon/llmd5.cpp diff --git a/indra/llcommon/llmd5.h b/indra/llcommon/llmd5.h index 1526e6ac3c..1526e6ac3c 100755..100644 --- a/indra/llcommon/llmd5.h +++ b/indra/llcommon/llmd5.h diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index ae11988df8..3a8eabac09 100755..100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -2176,8 +2176,7 @@ void* ll_aligned_malloc_fallback( size_t size, int align ) SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); - unsigned int for_alloc = sysinfo.dwPageSize; - while(for_alloc < size) for_alloc += sysinfo.dwPageSize; + unsigned int for_alloc = (size/sysinfo.dwPageSize + !!(size%sysinfo.dwPageSize)) * sysinfo.dwPageSize; void *p = VirtualAlloc(NULL, for_alloc+sysinfo.dwPageSize, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE); if(NULL == p) { diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index c4c9cc0566..0fb257aab1 100755..100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -28,6 +28,7 @@ #include "linden_common.h" #include "llunits.h" +#include "stdtypes.h" #if !LL_WINDOWS #include <stdint.h> #endif @@ -59,7 +60,7 @@ class LLMutex ; LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment); #ifdef SHOW_ASSERT -#define ll_assert_aligned(ptr,alignment) ll_assert_aligned_func(reinterpret_cast<uintptr_t>(ptr),((U32)alignment)) +#define ll_assert_aligned(ptr,alignment) ll_assert_aligned_func(uintptr_t(ptr),((U32)alignment)) #else #define ll_assert_aligned(ptr,alignment) #endif @@ -69,13 +70,13 @@ LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment); template <typename T> T* LL_NEXT_ALIGNED_ADDRESS(T* address) { return reinterpret_cast<T*>( - (reinterpret_cast<uintptr_t>(address) + 0xF) & ~0xF); + (uintptr_t(address) + 0xF) & ~0xF); } template <typename T> T* LL_NEXT_ALIGNED_ADDRESS_64(T* address) { return reinterpret_cast<T*>( - (reinterpret_cast<uintptr_t>(address) + 0x3F) & ~0x3F); + (uintptr_t(address) + 0x3F) & ~0x3F); } #if LL_LINUX || LL_DARWIN @@ -97,7 +98,7 @@ template <typename T> T* LL_NEXT_ALIGNED_ADDRESS_64(T* address) //------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------ // for enable buffer overrun detection predefine LL_DEBUG_BUFFER_OVERRUN in current library - // change preprocessro code to: #if 1 && defined(LL_WINDOWS) + // change preprocessor code to: #if 1 && defined(LL_WINDOWS) #if 0 && defined(LL_WINDOWS) void* ll_aligned_malloc_fallback( size_t size, int align ); diff --git a/indra/llcommon/llmemorystream.cpp b/indra/llcommon/llmemorystream.cpp index 707ac8fd0f..707ac8fd0f 100755..100644 --- a/indra/llcommon/llmemorystream.cpp +++ b/indra/llcommon/llmemorystream.cpp diff --git a/indra/llcommon/llmemorystream.h b/indra/llcommon/llmemorystream.h index e28f012192..e28f012192 100755..100644 --- a/indra/llcommon/llmemorystream.h +++ b/indra/llcommon/llmemorystream.h diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp index 1fc821d9a9..1fc821d9a9 100755..100644 --- a/indra/llcommon/llmetricperformancetester.cpp +++ b/indra/llcommon/llmetricperformancetester.cpp diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h index 1a18cdf36f..1a18cdf36f 100755..100644 --- a/indra/llcommon/llmetricperformancetester.h +++ b/indra/llcommon/llmetricperformancetester.h diff --git a/indra/llcommon/llmetrics.cpp b/indra/llcommon/llmetrics.cpp index d40afe5160..d40afe5160 100755..100644 --- a/indra/llcommon/llmetrics.cpp +++ b/indra/llcommon/llmetrics.cpp diff --git a/indra/llcommon/llmetrics.h b/indra/llcommon/llmetrics.h index 85a6986049..85a6986049 100755..100644 --- a/indra/llcommon/llmetrics.h +++ b/indra/llcommon/llmetrics.h diff --git a/indra/llcommon/llmortician.cpp b/indra/llcommon/llmortician.cpp index 287f096eae..287f096eae 100755..100644 --- a/indra/llcommon/llmortician.cpp +++ b/indra/llcommon/llmortician.cpp diff --git a/indra/llcommon/llmortician.h b/indra/llcommon/llmortician.h index 9517e2db5e..9517e2db5e 100755..100644 --- a/indra/llcommon/llmortician.h +++ b/indra/llcommon/llmortician.h diff --git a/indra/llcommon/llmutex.h b/indra/llcommon/llmutex.h index 3659a319a2..ea535cee86 100644 --- a/indra/llcommon/llmutex.h +++ b/indra/llcommon/llmutex.h @@ -33,6 +33,10 @@ #define MUTEX_DEBUG (LL_DEBUG || LL_RELEASE_WITH_DEBUG_INFO) +#if MUTEX_DEBUG +#include <map> +#endif + struct apr_thread_mutex_t; struct apr_pool_t; struct apr_thread_cond_t; diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h index 9a6453ea48..9a6453ea48 100755..100644 --- a/indra/llcommon/llpointer.h +++ b/indra/llcommon/llpointer.h diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 2c4bcc91f6..2c4bcc91f6 100755..100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h diff --git a/indra/llcommon/llpriqueuemap.h b/indra/llcommon/llpriqueuemap.h index d8d3edd48a..d8d3edd48a 100755..100644 --- a/indra/llcommon/llpriqueuemap.h +++ b/indra/llcommon/llpriqueuemap.h diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp index 715df36f39..e0aa30cc1a 100755..100644 --- a/indra/llcommon/llprocess.cpp +++ b/indra/llcommon/llprocess.cpp @@ -738,8 +738,11 @@ LLProcess::LLProcess(const LLSDOrParams& params): { mPipes.replace(i, new ReadPipeImpl(desc, pipe, FILESLOT(i))); } - LL_DEBUGS("LLProcess") << "Instantiating " << typeid(mPipes[i]).name() - << "('" << desc << "')" << LL_ENDL; + // Removed temporaily for Xcode 7 build tests: error was: + // "error: expression with side effects will be evaluated despite + // being used as an operand to 'typeid' [-Werror,-Wpotentially-evaluated-expression]"" + //LL_DEBUGS("LLProcess") << "Instantiating " << typeid(mPipes[i]).name() + // << "('" << desc << "')" << LL_ENDL; } } diff --git a/indra/llcommon/llprocess.h b/indra/llcommon/llprocess.h index 43ccadc412..43ccadc412 100755..100644 --- a/indra/llcommon/llprocess.h +++ b/indra/llcommon/llprocess.h diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index e3e1d0c391..e3e1d0c391 100755..100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp diff --git a/indra/llcommon/llprocessor.h b/indra/llcommon/llprocessor.h index 90e5bc59ee..90e5bc59ee 100755..100644 --- a/indra/llcommon/llprocessor.h +++ b/indra/llcommon/llprocessor.h diff --git a/indra/llcommon/llptrto.cpp b/indra/llcommon/llptrto.cpp index b270291bd6..b270291bd6 100755..100644 --- a/indra/llcommon/llptrto.cpp +++ b/indra/llcommon/llptrto.cpp diff --git a/indra/llcommon/llptrto.h b/indra/llcommon/llptrto.h index 4082e30de6..4082e30de6 100755..100644 --- a/indra/llcommon/llptrto.h +++ b/indra/llcommon/llptrto.h diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp index 8cef4293cd..8cef4293cd 100755..100644 --- a/indra/llcommon/llqueuedthread.cpp +++ b/indra/llcommon/llqueuedthread.cpp diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h index d3704b0fe2..d3704b0fe2 100755..100644 --- a/indra/llcommon/llqueuedthread.h +++ b/indra/llcommon/llqueuedthread.h diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp index cb28a8f5c3..cb28a8f5c3 100755..100644 --- a/indra/llcommon/llrand.cpp +++ b/indra/llcommon/llrand.cpp diff --git a/indra/llcommon/llrand.h b/indra/llcommon/llrand.h index ad317d5bf7..ad317d5bf7 100755..100644 --- a/indra/llcommon/llrand.h +++ b/indra/llcommon/llrand.h diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp index a638df2c7c..a638df2c7c 100755..100644 --- a/indra/llcommon/llrefcount.cpp +++ b/indra/llcommon/llrefcount.cpp diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 3836a9b5fb..3836a9b5fb 100755..100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h diff --git a/indra/llcommon/llregistry.h b/indra/llcommon/llregistry.h index 29950c108d..29950c108d 100755..100644 --- a/indra/llcommon/llregistry.h +++ b/indra/llcommon/llregistry.h diff --git a/indra/llcommon/llrun.cpp b/indra/llcommon/llrun.cpp index f5d3f302fa..f5d3f302fa 100755..100644 --- a/indra/llcommon/llrun.cpp +++ b/indra/llcommon/llrun.cpp diff --git a/indra/llcommon/llrun.h b/indra/llcommon/llrun.h index a117405366..a117405366 100755..100644 --- a/indra/llcommon/llrun.h +++ b/indra/llcommon/llrun.h diff --git a/indra/llcommon/llsafehandle.h b/indra/llcommon/llsafehandle.h index 4226bf04f0..4226bf04f0 100755..100644 --- a/indra/llcommon/llsafehandle.h +++ b/indra/llcommon/llsafehandle.h diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp index 57aa7d9c07..57aa7d9c07 100755..100644 --- a/indra/llcommon/llsd.cpp +++ b/indra/llcommon/llsd.cpp diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h index 7b9b1285f5..7b9b1285f5 100755..100644 --- a/indra/llcommon/llsd.h +++ b/indra/llcommon/llsd.h diff --git a/indra/llcommon/llsdparam.cpp b/indra/llcommon/llsdparam.cpp index 2e7b46f885..2e7b46f885 100755..100644 --- a/indra/llcommon/llsdparam.cpp +++ b/indra/llcommon/llsdparam.cpp diff --git a/indra/llcommon/llsdparam.h b/indra/llcommon/llsdparam.h index 09f1bdf1e3..09f1bdf1e3 100755..100644 --- a/indra/llcommon/llsdparam.h +++ b/indra/llcommon/llsdparam.h diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index d49ff0feb5..d49ff0feb5 100755..100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index 23a0c8cfb1..23a0c8cfb1 100755..100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 8d72a1c329..8d72a1c329 100755..100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp diff --git a/indra/llcommon/llsdserialize_xml.h b/indra/llcommon/llsdserialize_xml.h index dcc5f3d3c7..dcc5f3d3c7 100755..100644 --- a/indra/llcommon/llsdserialize_xml.h +++ b/indra/llcommon/llsdserialize_xml.h diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp index 6ad4a97149..6ad4a97149 100755..100644 --- a/indra/llcommon/llsdutil.cpp +++ b/indra/llcommon/llsdutil.cpp diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h index 99cb79aa54..99cb79aa54 100755..100644 --- a/indra/llcommon/llsdutil.h +++ b/indra/llcommon/llsdutil.h diff --git a/indra/llcommon/llsimplehash.h b/indra/llcommon/llsimplehash.h index 727b4568d8..727b4568d8 100755..100644 --- a/indra/llcommon/llsimplehash.h +++ b/indra/llcommon/llsimplehash.h diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp index 9b49e52377..9b49e52377 100755..100644 --- a/indra/llcommon/llsingleton.cpp +++ b/indra/llcommon/llsingleton.cpp diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h index 6e6291a165..6e6291a165 100755..100644 --- a/indra/llcommon/llsingleton.h +++ b/indra/llcommon/llsingleton.h diff --git a/indra/llcommon/llsmoothstep.h b/indra/llcommon/llsmoothstep.h index 1f97a3ec89..1f97a3ec89 100755..100644 --- a/indra/llcommon/llsmoothstep.h +++ b/indra/llcommon/llsmoothstep.h diff --git a/indra/llcommon/llstacktrace.cpp b/indra/llcommon/llstacktrace.cpp index bbf0e1e141..bbf0e1e141 100755..100644 --- a/indra/llcommon/llstacktrace.cpp +++ b/indra/llcommon/llstacktrace.cpp diff --git a/indra/llcommon/llstacktrace.h b/indra/llcommon/llstacktrace.h index 335765386a..335765386a 100755..100644 --- a/indra/llcommon/llstacktrace.h +++ b/indra/llcommon/llstacktrace.h diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h index 02f10fa2ba..0435cb8a08 100755..100644 --- a/indra/llcommon/llstl.h +++ b/indra/llcommon/llstl.h @@ -27,6 +27,7 @@ #ifndef LL_LLSTL_H #define LL_LLSTL_H +#include "stdtypes.h" #include <functional> #include <algorithm> #include <map> @@ -272,6 +273,7 @@ inline T get_if_there(const std::map<K,T>& inmap, const K& key, T default_value) } }; +// Useful for replacing the removeObj() functionality of LLDynamicArray // Example: // for (std::vector<T>::iterator iter = mList.begin(); iter != mList.end(); ) // { @@ -530,7 +532,7 @@ bool before(const std::type_info* lhs, const std::type_info* rhs) return strcmp(lhs->name(), rhs->name()) < 0; #else // not Linux, or gcc 4.4+ // Just use before(), as we normally would - return lhs->before(*rhs); + return lhs->before(*rhs) ? true : false; #endif } diff --git a/indra/llcommon/llstreamqueue.cpp b/indra/llcommon/llstreamqueue.cpp index 1116a2b6a2..1116a2b6a2 100755..100644 --- a/indra/llcommon/llstreamqueue.cpp +++ b/indra/llcommon/llstreamqueue.cpp diff --git a/indra/llcommon/llstreamqueue.h b/indra/llcommon/llstreamqueue.h index 0726bad175..0726bad175 100755..100644 --- a/indra/llcommon/llstreamqueue.h +++ b/indra/llcommon/llstreamqueue.h diff --git a/indra/llcommon/llstreamtools.cpp b/indra/llcommon/llstreamtools.cpp index d7a6f47932..d7a6f47932 100755..100644 --- a/indra/llcommon/llstreamtools.cpp +++ b/indra/llcommon/llstreamtools.cpp diff --git a/indra/llcommon/llstreamtools.h b/indra/llcommon/llstreamtools.h index 1b04bf91d7..1b04bf91d7 100755..100644 --- a/indra/llcommon/llstreamtools.h +++ b/indra/llcommon/llstreamtools.h diff --git a/indra/llcommon/llstrider.h b/indra/llcommon/llstrider.h index ed9284d2c5..ed9284d2c5 100755..100644 --- a/indra/llcommon/llstrider.h +++ b/indra/llcommon/llstrider.h diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index f3b8999883..f3b8999883 100755..100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 0177f48bf5..0177f48bf5 100755..100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h diff --git a/indra/llcommon/llstringtable.cpp b/indra/llcommon/llstringtable.cpp index f288999964..f288999964 100755..100644 --- a/indra/llcommon/llstringtable.cpp +++ b/indra/llcommon/llstringtable.cpp diff --git a/indra/llcommon/llstringtable.h b/indra/llcommon/llstringtable.h index ff09e71677..ff09e71677 100755..100644 --- a/indra/llcommon/llstringtable.h +++ b/indra/llcommon/llstringtable.h diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 1a66612e87..1a66612e87 100755..100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h index 962367f69f..962367f69f 100755..100644 --- a/indra/llcommon/llsys.h +++ b/indra/llcommon/llsys.h diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index c3f235c6ee..c3f235c6ee 100755..100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index 6f9ec10fd3..6f9ec10fd3 100755..100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h diff --git a/indra/llcommon/llthreadsafequeue.cpp b/indra/llcommon/llthreadsafequeue.cpp index 185f0d63fb..185f0d63fb 100755..100644 --- a/indra/llcommon/llthreadsafequeue.cpp +++ b/indra/llcommon/llthreadsafequeue.cpp diff --git a/indra/llcommon/llthreadsafequeue.h b/indra/llcommon/llthreadsafequeue.h index 58cac38769..58cac38769 100755..100644 --- a/indra/llcommon/llthreadsafequeue.h +++ b/indra/llcommon/llthreadsafequeue.h diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp index 76e892212a..76e892212a 100755..100644 --- a/indra/llcommon/lltimer.cpp +++ b/indra/llcommon/lltimer.cpp diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h index ec70213447..ec70213447 100755..100644 --- a/indra/llcommon/lltimer.h +++ b/indra/llcommon/lltimer.h diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index ba861ae70b..ba861ae70b 100755..100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index 9f12d49244..9f12d49244 100755..100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h index c82a666e48..c82a666e48 100755..100644 --- a/indra/llcommon/lluri.h +++ b/indra/llcommon/lluri.h diff --git a/indra/llcommon/lluriparser.cpp b/indra/llcommon/lluriparser.cpp index d98bc297e5..82d0dc8b4b 100644 --- a/indra/llcommon/lluriparser.cpp +++ b/indra/llcommon/lluriparser.cpp @@ -238,12 +238,12 @@ void LLUriParser::glueSecond(std::string& uri) const { uri += '?'; uri += mQuery; + } - if (mFragment.size()) - { - uri += '#'; - uri += mFragment; - } + if (mFragment.size()) + { + uri += '#'; + uri += mFragment; } } diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp index e3671047b4..e3671047b4 100755..100644 --- a/indra/llcommon/lluuid.cpp +++ b/indra/llcommon/lluuid.cpp diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h index dd8660a3c8..dd8660a3c8 100755..100644 --- a/indra/llcommon/lluuid.h +++ b/indra/llcommon/lluuid.h diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp index 4c197dc1d6..4c197dc1d6 100755..100644 --- a/indra/llcommon/llworkerthread.cpp +++ b/indra/llcommon/llworkerthread.cpp diff --git a/indra/llcommon/llworkerthread.h b/indra/llcommon/llworkerthread.h index 09776816a8..09776816a8 100755..100644 --- a/indra/llcommon/llworkerthread.h +++ b/indra/llcommon/llworkerthread.h diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h index bf3f3f9ee8..bf3f3f9ee8 100755..100644 --- a/indra/llcommon/stdtypes.h +++ b/indra/llcommon/stdtypes.h diff --git a/indra/llcommon/stringize.h b/indra/llcommon/stringize.h index a5a90d7297..a5a90d7297 100755..100644 --- a/indra/llcommon/stringize.h +++ b/indra/llcommon/stringize.h diff --git a/indra/llcommon/tests/StringVec.h b/indra/llcommon/tests/StringVec.h index a380b00a05..a380b00a05 100755..100644 --- a/indra/llcommon/tests/StringVec.h +++ b/indra/llcommon/tests/StringVec.h diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp index 9bfd567068..9bfd567068 100755..100644 --- a/indra/llcommon/tests/bitpack_test.cpp +++ b/indra/llcommon/tests/bitpack_test.cpp diff --git a/indra/llcommon/tests/commonmisc_test.cpp b/indra/llcommon/tests/commonmisc_test.cpp index 4b3e07fa75..4b3e07fa75 100755..100644 --- a/indra/llcommon/tests/commonmisc_test.cpp +++ b/indra/llcommon/tests/commonmisc_test.cpp diff --git a/indra/llcommon/tests/listener.h b/indra/llcommon/tests/listener.h index 9c5c18a150..9c5c18a150 100755..100644 --- a/indra/llcommon/tests/listener.h +++ b/indra/llcommon/tests/listener.h diff --git a/indra/llcommon/tests/llallocator_heap_profile_test.cpp b/indra/llcommon/tests/llallocator_heap_profile_test.cpp index 44a9705803..44a9705803 100755..100644 --- a/indra/llcommon/tests/llallocator_heap_profile_test.cpp +++ b/indra/llcommon/tests/llallocator_heap_profile_test.cpp diff --git a/indra/llcommon/tests/llallocator_test.cpp b/indra/llcommon/tests/llallocator_test.cpp index 4e62eaee67..4e62eaee67 100755..100644 --- a/indra/llcommon/tests/llallocator_test.cpp +++ b/indra/llcommon/tests/llallocator_test.cpp diff --git a/indra/llcommon/tests/llbase64_test.cpp b/indra/llcommon/tests/llbase64_test.cpp index d0394150fa..d0394150fa 100755..100644 --- a/indra/llcommon/tests/llbase64_test.cpp +++ b/indra/llcommon/tests/llbase64_test.cpp diff --git a/indra/llcommon/tests/lldate_test.cpp b/indra/llcommon/tests/lldate_test.cpp index 7c95ccb91f..7c95ccb91f 100755..100644 --- a/indra/llcommon/tests/lldate_test.cpp +++ b/indra/llcommon/tests/lldate_test.cpp diff --git a/indra/llcommon/tests/lldependencies_test.cpp b/indra/llcommon/tests/lldependencies_test.cpp index b5e189a465..b5e189a465 100755..100644 --- a/indra/llcommon/tests/lldependencies_test.cpp +++ b/indra/llcommon/tests/lldependencies_test.cpp diff --git a/indra/llcommon/tests/llerror_test.cpp b/indra/llcommon/tests/llerror_test.cpp index f51279e817..f51279e817 100755..100644 --- a/indra/llcommon/tests/llerror_test.cpp +++ b/indra/llcommon/tests/llerror_test.cpp diff --git a/indra/llcommon/tests/lleventcoro_test.cpp b/indra/llcommon/tests/lleventcoro_test.cpp index 2096807e53..2096807e53 100755..100644 --- a/indra/llcommon/tests/lleventcoro_test.cpp +++ b/indra/llcommon/tests/lleventcoro_test.cpp diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp index 5a4df81bf1..5a4df81bf1 100755..100644 --- a/indra/llcommon/tests/lleventdispatcher_test.cpp +++ b/indra/llcommon/tests/lleventdispatcher_test.cpp diff --git a/indra/llcommon/tests/lleventfilter_test.cpp b/indra/llcommon/tests/lleventfilter_test.cpp index 2cdfb52f2f..2cdfb52f2f 100755..100644 --- a/indra/llcommon/tests/lleventfilter_test.cpp +++ b/indra/llcommon/tests/lleventfilter_test.cpp diff --git a/indra/llcommon/tests/llframetimer_test.cpp b/indra/llcommon/tests/llframetimer_test.cpp index be372bb855..be372bb855 100755..100644 --- a/indra/llcommon/tests/llframetimer_test.cpp +++ b/indra/llcommon/tests/llframetimer_test.cpp diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp index c7d4b8a06b..c7d4b8a06b 100755..100644 --- a/indra/llcommon/tests/llinstancetracker_test.cpp +++ b/indra/llcommon/tests/llinstancetracker_test.cpp diff --git a/indra/llcommon/tests/lllazy_test.cpp b/indra/llcommon/tests/lllazy_test.cpp index 32a717f4fc..32a717f4fc 100755..100644 --- a/indra/llcommon/tests/lllazy_test.cpp +++ b/indra/llcommon/tests/lllazy_test.cpp diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 2d88e2c676..2d88e2c676 100755..100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp diff --git a/indra/llcommon/tests/llmemtype_test.cpp b/indra/llcommon/tests/llmemtype_test.cpp index 1f050d6dc7..1f050d6dc7 100755..100644 --- a/indra/llcommon/tests/llmemtype_test.cpp +++ b/indra/llcommon/tests/llmemtype_test.cpp diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 5ba343b183..5ba343b183 100755..100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp diff --git a/indra/llcommon/tests/llprocessor_test.cpp b/indra/llcommon/tests/llprocessor_test.cpp index 884e1b5e5b..884e1b5e5b 100755..100644 --- a/indra/llcommon/tests/llprocessor_test.cpp +++ b/indra/llcommon/tests/llprocessor_test.cpp diff --git a/indra/llcommon/tests/llrand_test.cpp b/indra/llcommon/tests/llrand_test.cpp index 383e6f9e0a..383e6f9e0a 100755..100644 --- a/indra/llcommon/tests/llrand_test.cpp +++ b/indra/llcommon/tests/llrand_test.cpp diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 6fbb9abfc0..6fbb9abfc0 100755..100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp diff --git a/indra/llcommon/tests/llsingleton_test.cpp b/indra/llcommon/tests/llsingleton_test.cpp index 385289aefe..385289aefe 100755..100644 --- a/indra/llcommon/tests/llsingleton_test.cpp +++ b/indra/llcommon/tests/llsingleton_test.cpp diff --git a/indra/llcommon/tests/llstreamqueue_test.cpp b/indra/llcommon/tests/llstreamqueue_test.cpp index 050ad5c5bf..050ad5c5bf 100755..100644 --- a/indra/llcommon/tests/llstreamqueue_test.cpp +++ b/indra/llcommon/tests/llstreamqueue_test.cpp diff --git a/indra/llcommon/tests/llstring_test.cpp b/indra/llcommon/tests/llstring_test.cpp index a7aa347222..a7aa347222 100755..100644 --- a/indra/llcommon/tests/llstring_test.cpp +++ b/indra/llcommon/tests/llstring_test.cpp diff --git a/indra/llcommon/tests/lltreeiterators_test.cpp b/indra/llcommon/tests/lltreeiterators_test.cpp index 1d619867d4..1d619867d4 100755..100644 --- a/indra/llcommon/tests/lltreeiterators_test.cpp +++ b/indra/llcommon/tests/lltreeiterators_test.cpp diff --git a/indra/llcommon/tests/lluri_test.cpp b/indra/llcommon/tests/lluri_test.cpp index 4c64f15ca7..4c64f15ca7 100755..100644 --- a/indra/llcommon/tests/lluri_test.cpp +++ b/indra/llcommon/tests/lluri_test.cpp diff --git a/indra/llcommon/tests/stringize_test.cpp b/indra/llcommon/tests/stringize_test.cpp index 2a4ed44a67..2a4ed44a67 100755..100644 --- a/indra/llcommon/tests/stringize_test.cpp +++ b/indra/llcommon/tests/stringize_test.cpp diff --git a/indra/llcommon/tests/wrapllerrs.h b/indra/llcommon/tests/wrapllerrs.h index 785197ba11..785197ba11 100755..100644 --- a/indra/llcommon/tests/wrapllerrs.h +++ b/indra/llcommon/tests/wrapllerrs.h diff --git a/indra/llcommon/timer.h b/indra/llcommon/timer.h index 82d19c2d32..82d19c2d32 100755..100644 --- a/indra/llcommon/timer.h +++ b/indra/llcommon/timer.h diff --git a/indra/llcommon/timing.cpp b/indra/llcommon/timing.cpp index c2dc695ef3..c2dc695ef3 100755..100644 --- a/indra/llcommon/timing.cpp +++ b/indra/llcommon/timing.cpp diff --git a/indra/llcommon/u64.cpp b/indra/llcommon/u64.cpp index 02c2c15d26..02c2c15d26 100755..100644 --- a/indra/llcommon/u64.cpp +++ b/indra/llcommon/u64.cpp diff --git a/indra/llcommon/u64.h b/indra/llcommon/u64.h index 75c8a59136..75c8a59136 100755..100644 --- a/indra/llcommon/u64.h +++ b/indra/llcommon/u64.h diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt index a0b1ea13b1..9631e960c5 100755..100644 --- a/indra/llcorehttp/CMakeLists.txt +++ b/indra/llcorehttp/CMakeLists.txt @@ -134,9 +134,13 @@ if (LL_TESTS) ${BOOST_THREAD_LIBRARY} ) + # If http_proxy is in the current environment (e.g. to fetch s3-proxy + # autobuild packages), suppress it for this integration test: it screws up + # the tests. LL_ADD_INTEGRATION_TEST(llcorehttp "${llcorehttp_TEST_SOURCE_FILES}" "${test_libs}" + "-Dhttp_proxy" ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py" ) diff --git a/indra/llcorehttp/_httpinternal.h b/indra/llcorehttp/_httpinternal.h index a2a60ca056..a2a60ca056 100755..100644 --- a/indra/llcorehttp/_httpinternal.h +++ b/indra/llcorehttp/_httpinternal.h diff --git a/indra/llcorehttp/_httplibcurl.cpp b/indra/llcorehttp/_httplibcurl.cpp index 81b44ab90b..81b44ab90b 100755..100644 --- a/indra/llcorehttp/_httplibcurl.cpp +++ b/indra/llcorehttp/_httplibcurl.cpp diff --git a/indra/llcorehttp/_httplibcurl.h b/indra/llcorehttp/_httplibcurl.h index ffc24c63a8..ffc24c63a8 100755..100644 --- a/indra/llcorehttp/_httplibcurl.h +++ b/indra/llcorehttp/_httplibcurl.h diff --git a/indra/llcorehttp/_httpopcancel.cpp b/indra/llcorehttp/_httpopcancel.cpp index c1912eb3db..c1912eb3db 100755..100644 --- a/indra/llcorehttp/_httpopcancel.cpp +++ b/indra/llcorehttp/_httpopcancel.cpp diff --git a/indra/llcorehttp/_httpopcancel.h b/indra/llcorehttp/_httpopcancel.h index 336dfdc573..336dfdc573 100755..100644 --- a/indra/llcorehttp/_httpopcancel.h +++ b/indra/llcorehttp/_httpopcancel.h diff --git a/indra/llcorehttp/_httpoperation.cpp b/indra/llcorehttp/_httpoperation.cpp index fefe561f80..fefe561f80 100755..100644 --- a/indra/llcorehttp/_httpoperation.cpp +++ b/indra/llcorehttp/_httpoperation.cpp diff --git a/indra/llcorehttp/_httpoperation.h b/indra/llcorehttp/_httpoperation.h index 937a61187d..937a61187d 100755..100644 --- a/indra/llcorehttp/_httpoperation.h +++ b/indra/llcorehttp/_httpoperation.h diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index b9632a7921..b9632a7921 100755..100644 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h index 2f628b5aba..2f628b5aba 100755..100644 --- a/indra/llcorehttp/_httpoprequest.h +++ b/indra/llcorehttp/_httpoprequest.h diff --git a/indra/llcorehttp/_httpopsetget.cpp b/indra/llcorehttp/_httpopsetget.cpp index a5363f9170..a5363f9170 100755..100644 --- a/indra/llcorehttp/_httpopsetget.cpp +++ b/indra/llcorehttp/_httpopsetget.cpp diff --git a/indra/llcorehttp/_httpopsetget.h b/indra/llcorehttp/_httpopsetget.h index a1e76dd429..a1e76dd429 100755..100644 --- a/indra/llcorehttp/_httpopsetget.h +++ b/indra/llcorehttp/_httpopsetget.h diff --git a/indra/llcorehttp/_httpopsetpriority.cpp b/indra/llcorehttp/_httpopsetpriority.cpp index d48c7a0b7d..d48c7a0b7d 100755..100644 --- a/indra/llcorehttp/_httpopsetpriority.cpp +++ b/indra/llcorehttp/_httpopsetpriority.cpp diff --git a/indra/llcorehttp/_httpopsetpriority.h b/indra/llcorehttp/_httpopsetpriority.h index 31706b737c..31706b737c 100755..100644 --- a/indra/llcorehttp/_httpopsetpriority.h +++ b/indra/llcorehttp/_httpopsetpriority.h diff --git a/indra/llcorehttp/_httppolicy.cpp b/indra/llcorehttp/_httppolicy.cpp index e5d6321401..e5d6321401 100755..100644 --- a/indra/llcorehttp/_httppolicy.cpp +++ b/indra/llcorehttp/_httppolicy.cpp diff --git a/indra/llcorehttp/_httppolicy.h b/indra/llcorehttp/_httppolicy.h index 11cd89bbd1..11cd89bbd1 100755..100644 --- a/indra/llcorehttp/_httppolicy.h +++ b/indra/llcorehttp/_httppolicy.h diff --git a/indra/llcorehttp/_httppolicyclass.cpp b/indra/llcorehttp/_httppolicyclass.cpp index 2c0f650155..2c0f650155 100755..100644 --- a/indra/llcorehttp/_httppolicyclass.cpp +++ b/indra/llcorehttp/_httppolicyclass.cpp diff --git a/indra/llcorehttp/_httppolicyclass.h b/indra/llcorehttp/_httppolicyclass.h index 38f1194ded..38f1194ded 100755..100644 --- a/indra/llcorehttp/_httppolicyclass.h +++ b/indra/llcorehttp/_httppolicyclass.h diff --git a/indra/llcorehttp/_httppolicyglobal.cpp b/indra/llcorehttp/_httppolicyglobal.cpp index 1dc95f3dce..1dc95f3dce 100755..100644 --- a/indra/llcorehttp/_httppolicyglobal.cpp +++ b/indra/llcorehttp/_httppolicyglobal.cpp diff --git a/indra/llcorehttp/_httppolicyglobal.h b/indra/llcorehttp/_httppolicyglobal.h index 67c4ba9481..67c4ba9481 100755..100644 --- a/indra/llcorehttp/_httppolicyglobal.h +++ b/indra/llcorehttp/_httppolicyglobal.h diff --git a/indra/llcorehttp/_httpreadyqueue.h b/indra/llcorehttp/_httpreadyqueue.h index 5f19a9c5f9..5f19a9c5f9 100755..100644 --- a/indra/llcorehttp/_httpreadyqueue.h +++ b/indra/llcorehttp/_httpreadyqueue.h diff --git a/indra/llcorehttp/_httpreplyqueue.cpp b/indra/llcorehttp/_httpreplyqueue.cpp index 558b7bdee9..558b7bdee9 100755..100644 --- a/indra/llcorehttp/_httpreplyqueue.cpp +++ b/indra/llcorehttp/_httpreplyqueue.cpp diff --git a/indra/llcorehttp/_httpreplyqueue.h b/indra/llcorehttp/_httpreplyqueue.h index 4220a09a3b..4220a09a3b 100755..100644 --- a/indra/llcorehttp/_httpreplyqueue.h +++ b/indra/llcorehttp/_httpreplyqueue.h diff --git a/indra/llcorehttp/_httprequestqueue.cpp b/indra/llcorehttp/_httprequestqueue.cpp index c16966d078..c16966d078 100755..100644 --- a/indra/llcorehttp/_httprequestqueue.cpp +++ b/indra/llcorehttp/_httprequestqueue.cpp diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h index c9c52b7233..c9c52b7233 100755..100644 --- a/indra/llcorehttp/_httprequestqueue.h +++ b/indra/llcorehttp/_httprequestqueue.h diff --git a/indra/llcorehttp/_httpretryqueue.h b/indra/llcorehttp/_httpretryqueue.h index 745adec09d..745adec09d 100755..100644 --- a/indra/llcorehttp/_httpretryqueue.h +++ b/indra/llcorehttp/_httpretryqueue.h diff --git a/indra/llcorehttp/_httpservice.cpp b/indra/llcorehttp/_httpservice.cpp index c673e1be1d..c673e1be1d 100755..100644 --- a/indra/llcorehttp/_httpservice.cpp +++ b/indra/llcorehttp/_httpservice.cpp diff --git a/indra/llcorehttp/_httpservice.h b/indra/llcorehttp/_httpservice.h index cf23f3ab61..cf23f3ab61 100755..100644 --- a/indra/llcorehttp/_httpservice.h +++ b/indra/llcorehttp/_httpservice.h diff --git a/indra/llcorehttp/_mutex.h b/indra/llcorehttp/_mutex.h index 4be4d016d4..4be4d016d4 100755..100644 --- a/indra/llcorehttp/_mutex.h +++ b/indra/llcorehttp/_mutex.h diff --git a/indra/llcorehttp/_refcounted.cpp b/indra/llcorehttp/_refcounted.cpp index e7d0b72741..e7d0b72741 100755..100644 --- a/indra/llcorehttp/_refcounted.cpp +++ b/indra/llcorehttp/_refcounted.cpp diff --git a/indra/llcorehttp/_refcounted.h b/indra/llcorehttp/_refcounted.h index 402e725152..402e725152 100755..100644 --- a/indra/llcorehttp/_refcounted.h +++ b/indra/llcorehttp/_refcounted.h diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h index e058d660e5..e058d660e5 100755..100644 --- a/indra/llcorehttp/_thread.h +++ b/indra/llcorehttp/_thread.h diff --git a/indra/llcorehttp/bufferarray.cpp b/indra/llcorehttp/bufferarray.cpp index 8eaaeed710..8eaaeed710 100755..100644 --- a/indra/llcorehttp/bufferarray.cpp +++ b/indra/llcorehttp/bufferarray.cpp diff --git a/indra/llcorehttp/bufferarray.h b/indra/llcorehttp/bufferarray.h index 1094a435b4..1094a435b4 100755..100644 --- a/indra/llcorehttp/bufferarray.h +++ b/indra/llcorehttp/bufferarray.h diff --git a/indra/llcorehttp/bufferstream.cpp b/indra/llcorehttp/bufferstream.cpp index 678bf5ea9f..678bf5ea9f 100755..100644 --- a/indra/llcorehttp/bufferstream.cpp +++ b/indra/llcorehttp/bufferstream.cpp diff --git a/indra/llcorehttp/bufferstream.h b/indra/llcorehttp/bufferstream.h index 9327a798aa..9327a798aa 100755..100644 --- a/indra/llcorehttp/bufferstream.h +++ b/indra/llcorehttp/bufferstream.h diff --git a/indra/llcorehttp/examples/http_texture_load.cpp b/indra/llcorehttp/examples/http_texture_load.cpp index 9d9631b980..9d9631b980 100755..100644 --- a/indra/llcorehttp/examples/http_texture_load.cpp +++ b/indra/llcorehttp/examples/http_texture_load.cpp diff --git a/indra/llcorehttp/httpcommon.cpp b/indra/llcorehttp/httpcommon.cpp index 7907e958a4..7907e958a4 100755..100644 --- a/indra/llcorehttp/httpcommon.cpp +++ b/indra/llcorehttp/httpcommon.cpp diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h index 9601f94125..9601f94125 100755..100644 --- a/indra/llcorehttp/httpcommon.h +++ b/indra/llcorehttp/httpcommon.h diff --git a/indra/llcorehttp/httphandler.h b/indra/llcorehttp/httphandler.h index 9171e4e7b9..9171e4e7b9 100755..100644 --- a/indra/llcorehttp/httphandler.h +++ b/indra/llcorehttp/httphandler.h diff --git a/indra/llcorehttp/httpheaders.cpp b/indra/llcorehttp/httpheaders.cpp index 23ebea361c..23ebea361c 100755..100644 --- a/indra/llcorehttp/httpheaders.cpp +++ b/indra/llcorehttp/httpheaders.cpp diff --git a/indra/llcorehttp/httpheaders.h b/indra/llcorehttp/httpheaders.h index f70cd898f3..f70cd898f3 100755..100644 --- a/indra/llcorehttp/httpheaders.h +++ b/indra/llcorehttp/httpheaders.h diff --git a/indra/llcorehttp/httpoptions.cpp b/indra/llcorehttp/httpoptions.cpp index 5bf1ecb4a5..5bf1ecb4a5 100755..100644 --- a/indra/llcorehttp/httpoptions.cpp +++ b/indra/llcorehttp/httpoptions.cpp diff --git a/indra/llcorehttp/httpoptions.h b/indra/llcorehttp/httpoptions.h index 4ab5ff18c4..4ab5ff18c4 100755..100644 --- a/indra/llcorehttp/httpoptions.h +++ b/indra/llcorehttp/httpoptions.h diff --git a/indra/llcorehttp/httprequest.cpp b/indra/llcorehttp/httprequest.cpp index 7b1888e3eb..7b1888e3eb 100755..100644 --- a/indra/llcorehttp/httprequest.cpp +++ b/indra/llcorehttp/httprequest.cpp diff --git a/indra/llcorehttp/httprequest.h b/indra/llcorehttp/httprequest.h index 7f23723b0b..7f23723b0b 100755..100644 --- a/indra/llcorehttp/httprequest.h +++ b/indra/llcorehttp/httprequest.h diff --git a/indra/llcorehttp/httpresponse.cpp b/indra/llcorehttp/httpresponse.cpp index c974395b0a..c974395b0a 100755..100644 --- a/indra/llcorehttp/httpresponse.cpp +++ b/indra/llcorehttp/httpresponse.cpp diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h index aee64e2878..aee64e2878 100755..100644 --- a/indra/llcorehttp/httpresponse.h +++ b/indra/llcorehttp/httpresponse.h diff --git a/indra/llcorehttp/tests/llcorehttp_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp index e863ddd13f..e863ddd13f 100755..100644 --- a/indra/llcorehttp/tests/llcorehttp_test.cpp +++ b/indra/llcorehttp/tests/llcorehttp_test.cpp diff --git a/indra/llcorehttp/tests/llcorehttp_test.h b/indra/llcorehttp/tests/llcorehttp_test.h index a9567435ce..a9567435ce 100755..100644 --- a/indra/llcorehttp/tests/llcorehttp_test.h +++ b/indra/llcorehttp/tests/llcorehttp_test.h diff --git a/indra/llcorehttp/tests/test_allocator.cpp b/indra/llcorehttp/tests/test_allocator.cpp index ea12dc58eb..ea12dc58eb 100755..100644 --- a/indra/llcorehttp/tests/test_allocator.cpp +++ b/indra/llcorehttp/tests/test_allocator.cpp diff --git a/indra/llcorehttp/tests/test_allocator.h b/indra/llcorehttp/tests/test_allocator.h index 3572bbc5c5..3572bbc5c5 100755..100644 --- a/indra/llcorehttp/tests/test_allocator.h +++ b/indra/llcorehttp/tests/test_allocator.h diff --git a/indra/llcorehttp/tests/test_bufferarray.hpp b/indra/llcorehttp/tests/test_bufferarray.hpp index 8a2a64d970..8a2a64d970 100755..100644 --- a/indra/llcorehttp/tests/test_bufferarray.hpp +++ b/indra/llcorehttp/tests/test_bufferarray.hpp diff --git a/indra/llcorehttp/tests/test_bufferstream.hpp b/indra/llcorehttp/tests/test_bufferstream.hpp index 831c901b9d..831c901b9d 100755..100644 --- a/indra/llcorehttp/tests/test_bufferstream.hpp +++ b/indra/llcorehttp/tests/test_bufferstream.hpp diff --git a/indra/llcorehttp/tests/test_httpheaders.hpp b/indra/llcorehttp/tests/test_httpheaders.hpp index 668c36dc66..668c36dc66 100755..100644 --- a/indra/llcorehttp/tests/test_httpheaders.hpp +++ b/indra/llcorehttp/tests/test_httpheaders.hpp diff --git a/indra/llcorehttp/tests/test_httpoperation.hpp b/indra/llcorehttp/tests/test_httpoperation.hpp index 17b1a96878..17b1a96878 100755..100644 --- a/indra/llcorehttp/tests/test_httpoperation.hpp +++ b/indra/llcorehttp/tests/test_httpoperation.hpp diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp index 43f7e36da5..43f7e36da5 100755..100644 --- a/indra/llcorehttp/tests/test_httprequest.hpp +++ b/indra/llcorehttp/tests/test_httprequest.hpp diff --git a/indra/llcorehttp/tests/test_httprequestqueue.hpp b/indra/llcorehttp/tests/test_httprequestqueue.hpp index 1de2d8f9ab..1de2d8f9ab 100755..100644 --- a/indra/llcorehttp/tests/test_httprequestqueue.hpp +++ b/indra/llcorehttp/tests/test_httprequestqueue.hpp diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp index 0b379836c9..0b379836c9 100755..100644 --- a/indra/llcorehttp/tests/test_httpstatus.hpp +++ b/indra/llcorehttp/tests/test_httpstatus.hpp diff --git a/indra/llcorehttp/tests/test_refcounted.hpp b/indra/llcorehttp/tests/test_refcounted.hpp index cb4b50287a..cb4b50287a 100755..100644 --- a/indra/llcorehttp/tests/test_refcounted.hpp +++ b/indra/llcorehttp/tests/test_refcounted.hpp diff --git a/indra/llcrashlogger/CMakeLists.txt b/indra/llcrashlogger/CMakeLists.txt index ba4e34d92b..ba4e34d92b 100755..100644 --- a/indra/llcrashlogger/CMakeLists.txt +++ b/indra/llcrashlogger/CMakeLists.txt diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 7a97c16ea7..7a97c16ea7 100755..100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h index a06bf1d6ac..a06bf1d6ac 100755..100644 --- a/indra/llcrashlogger/llcrashlogger.h +++ b/indra/llcrashlogger/llcrashlogger.h diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt index 293ada7548..293ada7548 100755..100644 --- a/indra/llimage/CMakeLists.txt +++ b/indra/llimage/CMakeLists.txt diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 16df27bb8e..08462c7834 100755..100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -40,6 +40,545 @@ #include "llimagedxt.h" #include "llmemory.h" +#include <boost/preprocessor.hpp> + +//.................................................................................. +//.................................................................................. +// Helper macrose's for generate cycle unwrap templates +//.................................................................................. +#define _UNROL_GEN_TPL_arg_0(arg) +#define _UNROL_GEN_TPL_arg_1(arg) arg + +#define _UNROL_GEN_TPL_comma_0 +#define _UNROL_GEN_TPL_comma_1 BOOST_PP_COMMA() +//.................................................................................. +#define _UNROL_GEN_TPL_ARGS_macro(z,n,seq) \ + BOOST_PP_CAT(_UNROL_GEN_TPL_arg_, BOOST_PP_MOD(n, 2))(BOOST_PP_SEQ_ELEM(n, seq)) BOOST_PP_CAT(_UNROL_GEN_TPL_comma_, BOOST_PP_AND(BOOST_PP_MOD(n, 2), BOOST_PP_NOT_EQUAL(BOOST_PP_INC(n), BOOST_PP_SEQ_SIZE(seq)))) + +#define _UNROL_GEN_TPL_ARGS(seq) \ + BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(seq), _UNROL_GEN_TPL_ARGS_macro, seq) +//.................................................................................. + +#define _UNROL_GEN_TPL_TYPE_ARGS_macro(z,n,seq) \ + BOOST_PP_SEQ_ELEM(n, seq) BOOST_PP_CAT(_UNROL_GEN_TPL_comma_, BOOST_PP_AND(BOOST_PP_MOD(n, 2), BOOST_PP_NOT_EQUAL(BOOST_PP_INC(n), BOOST_PP_SEQ_SIZE(seq)))) + +#define _UNROL_GEN_TPL_TYPE_ARGS(seq) \ + BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(seq), _UNROL_GEN_TPL_TYPE_ARGS_macro, seq) +//.................................................................................. +#define _UNROLL_GEN_TPL_foreach_ee(z, n, seq) \ + executor<n>(_UNROL_GEN_TPL_ARGS(seq)); + +#define _UNROLL_GEN_TPL(name, args_seq, operation, spec) \ + template<> struct name<spec> { \ + private: \ + template<S32 _idx> inline void executor(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { \ + BOOST_PP_SEQ_ENUM(operation) ; \ + } \ + public: \ + inline void operator()(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { \ + BOOST_PP_REPEAT(spec, _UNROLL_GEN_TPL_foreach_ee, args_seq) \ + } \ +}; +//.................................................................................. +#define _UNROLL_GEN_TPL_foreach_seq_macro(r, data, elem) \ + _UNROLL_GEN_TPL(BOOST_PP_SEQ_ELEM(0, data), BOOST_PP_SEQ_ELEM(1, data), BOOST_PP_SEQ_ELEM(2, data), elem) + +#define UNROLL_GEN_TPL(name, args_seq, operation, spec_seq) \ + /*general specialization - should not be implemented!*/ \ + template<U8> struct name { inline void operator()(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { /*static_assert(!"Should not be instantiated.");*/ } }; \ + BOOST_PP_SEQ_FOR_EACH(_UNROLL_GEN_TPL_foreach_seq_macro, (name)(args_seq)(operation), spec_seq) +//.................................................................................. +//.................................................................................. + + +//.................................................................................. +// Generated unrolling loop templates with specializations +//.................................................................................. +//example: for(c = 0; c < ch; ++c) comp[c] = cx[0] = 0; +UNROLL_GEN_TPL(uroll_zeroze_cx_comp, (S32 *)(cx)(S32 *)(comp), (cx[_idx] = comp[_idx] = 0), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] >>= 4; +UNROLL_GEN_TPL(uroll_comp_rshftasgn_constval, (S32 *)(comp)(const S32)(cval), (comp[_idx] >>= cval), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = (cx[c] >> 5) * yap; +UNROLL_GEN_TPL(uroll_comp_asgn_cx_rshft_cval_all_mul_val, (S32 *)(comp)(S32 *)(cx)(const S32)(cval)(S32)(val), (comp[_idx] = (cx[_idx] >> cval) * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * Cy; +UNROLL_GEN_TPL(uroll_comp_plusasgn_cx_rshft_cval_all_mul_val, (S32 *)(comp)(S32 *)(cx)(const S32)(cval)(S32)(val), (comp[_idx] += (cx[_idx] >> cval) * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] += pix[c] * info.xapoints[x]; +UNROLL_GEN_TPL(uroll_inp_plusasgn_pix_mul_val, (S32 *)(comp)(const U8 *)(pix)(S32)(val), (comp[_idx] += pix[_idx] * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) cx[c] = pix[c] * info.xapoints[x]; +UNROLL_GEN_TPL(uroll_inp_asgn_pix_mul_val, (S32 *)(comp)(const U8 *)(pix)(S32)(val), (comp[_idx] = pix[_idx] * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = ((cx[c] * info.yapoints[y]) + (comp[c] * (256 - info.yapoints[y]))) >> 16; +UNROLL_GEN_TPL(uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r, (S32 *)(comp)(S32 *)(cx)(S32)(apoint), (comp[_idx] = ((cx[_idx] * apoint) + (comp[_idx] * (256 - apoint))) >> 16), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = (comp[c] + pix[c] * info.yapoints[y]) >> 8; +UNROLL_GEN_TPL(uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r, (S32 *)(comp)(const U8 *)(pix)(S32)(apoint), (comp[_idx] = (comp[_idx] + pix[_idx] * apoint) >> 8), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = ((comp[c]*(256 - info.xapoints[x])) + ((cx[c] * info.xapoints[x]))) >> 12; +UNROLL_GEN_TPL(uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r, (S32 *)(comp)(S32)(apoint)(S32 *)(cx), (comp[_idx] = ((comp[_idx] * (256-apoint)) + (cx[_idx] * apoint)) >> 12), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = comp[c]&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_comp_and_ff, (U8 *&)(dptr)(S32 *)(comp), (*dptr++ = comp[_idx]&0xff), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = (sptr[info.xpoints[x]*ch + c])&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff, (U8 *&)(dptr)(const U8 *)(sptr)(S32)(apoint), (*dptr++ = sptr[apoint + _idx]&0xff), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff, (U8 *&)(dptr)(S32 *)(comp)(const S32)(cval), (*dptr++ = (comp[_idx]>>cval)&0xff), (1)(3)(4)); +//.................................................................................. + + +template<U8 ch> +struct scale_info +{ +public: + std::vector<S32> xpoints; + std::vector<const U8*> ystrides; + std::vector<S32> xapoints, yapoints; + S32 xup_yup; + +public: + //unrolling loop types declaration + typedef uroll_zeroze_cx_comp<ch> uroll_zeroze_cx_comp_t; + typedef uroll_comp_rshftasgn_constval<ch> uroll_comp_rshftasgn_constval_t; + typedef uroll_comp_asgn_cx_rshft_cval_all_mul_val<ch> uroll_comp_asgn_cx_rshft_cval_all_mul_val_t; + typedef uroll_comp_plusasgn_cx_rshft_cval_all_mul_val<ch> uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t; + typedef uroll_inp_plusasgn_pix_mul_val<ch> uroll_inp_plusasgn_pix_mul_val_t; + typedef uroll_inp_asgn_pix_mul_val<ch> uroll_inp_asgn_pix_mul_val_t; + typedef uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r<ch> uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r_t; + typedef uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r<ch> uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t; + typedef uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r<ch> uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t; + typedef uroll_uref_dptr_inc_asgn_comp_and_ff<ch> uroll_uref_dptr_inc_asgn_comp_and_ff_t; + typedef uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff<ch> uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff_t; + typedef uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff<ch> uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t; + +public: + scale_info(const U8 *src, U32 srcW, U32 srcH, U32 dstW, U32 dstH, U32 srcStride) + : xup_yup((dstW >= srcW) + ((dstH >= srcH) << 1)) + { + calc_x_points(srcW, dstW); + calc_y_strides(src, srcStride, srcH, dstH); + calc_aa_points(srcW, dstW, xup_yup&1, xapoints); + calc_aa_points(srcH, dstH, xup_yup&2, yapoints); + } + +private: + //........................................................................................... + void calc_x_points(U32 srcW, U32 dstW) + { + xpoints.resize(dstW+1); + + S32 val = dstW >= srcW ? 0x8000 * srcW / dstW - 0x8000 : 0; + S32 inc = (srcW << 16) / dstW; + + for(U32 i = 0, j = 0; i < dstW; ++i, ++j, val += inc) + { + xpoints[j] = llmax(0, val >> 16); + } + } + //........................................................................................... + void calc_y_strides(const U8 *src, U32 srcStride, U32 srcH, U32 dstH) + { + ystrides.resize(dstH+1); + + S32 val = dstH >= srcH ? 0x8000 * srcH / dstH - 0x8000 : 0; + S32 inc = (srcH << 16) / dstH; + + for(U32 i = 0, j = 0; i < dstH; ++i, ++j, val += inc) + { + ystrides[j] = src + llmax(0, val >> 16) * srcStride; + } + } + //........................................................................................... + void calc_aa_points(U32 srcSz, U32 dstSz, bool scale_up, std::vector<S32> &vp) + { + vp.resize(dstSz); + + if(scale_up) + { + S32 val = 0x8000 * srcSz / dstSz - 0x8000; + S32 inc = (srcSz << 16) / dstSz; + U32 pos; + + for(U32 i = 0, j = 0; i < dstSz; ++i, ++j, val += inc) + { + pos = val >> 16; + + if (pos >= (srcSz - 1)) + vp[j] = 0; + else + vp[j] = (val >> 8) - ((val >> 8) & 0xffffff00); + } + } + else + { + S32 inc = (srcSz << 16) / dstSz; + S32 Cp = ((dstSz << 14) / srcSz) + 1; + S32 ap; + + for(U32 i = 0, j = 0, val = 0; i < dstSz; ++i, ++j, val += inc) + { + ap = ((0x100 - ((val >> 8) & 0xff)) * Cp) >> 8; + vp[j] = ap | (Cp << 16); + } + } + } +}; + + +template<U8 ch> +inline void bilinear_scale( + const U8 *src, U32 srcW, U32 srcH, U32 srcStride + , U8 *dst, U32 dstW, U32 dstH, U32 dstStride + ) +{ + typedef scale_info<ch> scale_info_t; + + scale_info_t info(src, srcW, srcH, dstW, dstH, srcStride); + + const U8 *sptr; + U8 *dptr; + U32 x, y; + const U8 *pix; + + S32 cx[ch], comp[ch]; + + + if(3 == info.xup_yup) + { //scale x/y - up + for(y = 0; y < dstH; ++y) + { + dptr = dst + (y * dstStride); + sptr = info.ystrides[y]; + + if(0 < info.yapoints[y]) + { + for(x = 0; x < dstW; ++x) + { + //for(c = 0; c < ch; ++c) cx[c] = comp[c] = 0; + typename scale_info_t::uroll_zeroze_cx_comp_t()(cx, comp); + + if(0 < info.xapoints[x]) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * (256 - info.xapoints[x]); + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256 - info.xapoints[x]); + + pix += ch; + + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * info.xapoints[x]; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, info.xapoints[x]); + + pix += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * info.xapoints[x]; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, info.xapoints[x]); + + pix -= ch; + + //for(c = 0; c < ch; ++c) { + // cx[c] += pix[c] * (256 - info.xapoints[x]); + // comp[c] = ((cx[c] * info.yapoints[y]) + (comp[c] * (256 - info.yapoints[y]))) >> 16; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, 256 - info.xapoints[x]); + typename scale_info_t::uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r_t()(comp, cx, info.yapoints[y]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + else + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * (256 - info.yapoints[y]); + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256-info.yapoints[y]); + + pix += srcStride; + + //for(c = 0; c < ch; ++c) { + // comp[c] = (comp[c] + pix[c] * info.yapoints[y]) >> 8; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t()(comp, pix, info.yapoints[y]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + } + } + else + { + for(x = 0; x < dstW; ++x) + { + if(0 < info.xapoints[x]) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) { + // comp[c] = pix[c] * (256 - info.xapoints[x]); + // comp[c] = (comp[c] + pix[c] * info.xapoints[x]) >> 8; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256 - info.xapoints[x]); + typename scale_info_t::uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t()(comp, pix, info.xapoints[x]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + else + { + //for(c = 0; c < ch; ++c) *dptr++ = (sptr[info.xpoints[x]*ch + c])&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff_t()(dptr, sptr, info.xpoints[x]*ch); + } + } + } + } + } + else if(info.xup_yup == 1) + { //scaling down vertically + S32 Cy, j; + S32 yap; + + for(y = 0; y < dstH; y++) + { + Cy = info.yapoints[y] >> 16; + yap = info.yapoints[y] & 0xffff; + + dptr = dst + (y * dstStride); + + for(x = 0; x < dstW; x++) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * yap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, yap); + + pix += srcStride; + + for(j = (1 << 14) - yap; j > Cy; j -= Cy, pix += srcStride) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * Cy; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, Cy); + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, j); + } + + if(info.xapoints[x] > 0) + { + pix = info.ystrides[y] + info.xpoints[x]*ch + ch; + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * yap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, yap); + + pix += srcStride; + for(j = (1 << 14) - yap; j > Cy; j -= Cy) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cy; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cy); + pix += srcStride; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, j); + } + + //for(c = 0; c < ch; ++c) comp[c] = ((comp[c]*(256 - info.xapoints[x])) + ((cx[c] * info.xapoints[x]))) >> 12; + typename scale_info_t::uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t()(comp, info.xapoints[x], cx); + } + else + { + //for(c = 0; c < ch; ++c) comp[c] >>= 4; + typename scale_info_t::uroll_comp_rshftasgn_constval_t()(comp, 4); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 10); + } + } + } + else if(info.xup_yup == 2) + { // scaling down horizontally + S32 Cx, j; + S32 xap; + + for(y = 0; y < dstH; y++) + { + dptr = dst + (y * dstStride); + + for(x = 0; x < dstW; x++) + { + Cx = info.xapoints[x] >> 16; + xap = info.xapoints[x] & 0xffff; + + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, xap); + + pix+=ch; + for(j = (1 << 14) - xap; j > Cx; j -= Cx) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, Cx); + pix+=ch; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, j); + } + + if(info.yapoints[y] > 0) + { + pix = info.ystrides[y] + info.xpoints[x]*ch + srcStride; + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(j = (1 << 14) - xap; j > Cx; j -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, j); + } + + //for(c = 0; c < ch; ++c) comp[c] = ((comp[c] * (256 - info.yapoints[y])) + ((cx[c] * info.yapoints[y]))) >> 12; + typename scale_info_t::uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t()(comp, info.yapoints[y], cx); + } + else + { + //for(c = 0; c < ch; ++c) comp[c] >>= 4; + typename scale_info_t::uroll_comp_rshftasgn_constval_t()(comp, 4); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 10); + } + } + } + else + { //scale x/y - down + S32 Cx, Cy, i, j; + S32 xap, yap; + + for(y = 0; y < dstH; y++) + { + Cy = info.yapoints[y] >> 16; + yap = info.yapoints[y] & 0xffff; + + dptr = dst + (y * dstStride); + for(x = 0; x < dstW; x++) + { + Cx = info.xapoints[x] >> 16; + xap = info.xapoints[x] & 0xffff; + + sptr = info.ystrides[y] + info.xpoints[x] * ch; + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] = (cx[c] >> 5) * yap; + typename scale_info_t::uroll_comp_asgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, yap); + + for(j = (1 << 14) - yap; j > Cy; j -= Cy) + { + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * Cy; + typename scale_info_t::uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, Cy); + } + + if(j > 0) + { + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * j; + typename scale_info_t::uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, j); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>23)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 23); + } + } + } //else +} + +//wrapper +static void bilinear_scale(const U8 *src, U32 srcW, U32 srcH, U32 srcCh, U32 srcStride, U8 *dst, U32 dstW, U32 dstH, U32 dstCh, U32 dstStride) +{ + llassert(srcCh == dstCh); + + switch(srcCh) + { + case 1: + bilinear_scale<1>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + case 3: + bilinear_scale<3>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + case 4: + bilinear_scale<4>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + default: + llassert(!"Implement if need"); + break; + } + +} + //--------------------------------------------------------------------------- // LLImage //--------------------------------------------------------------------------- @@ -559,6 +1098,7 @@ void LLImageRaw::composite( LLImageRaw* src ) } } + // Src and dst can be any size. Src has 4 components. Dst has 3 components. void LLImageRaw::compositeScaled4onto3(LLImageRaw* src) { @@ -589,21 +1129,6 @@ void LLImageRaw::compositeScaled4onto3(LLImageRaw* src) // Src and dst are same size. Src has 4 components. Dst has 3 components. void LLImageRaw::compositeUnscaled4onto3( LLImageRaw* src ) { - /* - //test fastFractionalMult() - { - U8 i = 255; - U8 j = 255; - do - { - do - { - llassert( fastFractionalMult(i, j) == (U8)(255*(i/255.f)*(j/255.f) + 0.5f) ); - } while( j-- ); - } while( i-- ); - } - */ - LLImageRaw* dst = this; // Just for clarity. llassert( (3 == src->getComponents()) || (4 == src->getComponents()) ); @@ -639,6 +1164,7 @@ void LLImageRaw::compositeUnscaled4onto3( LLImageRaw* src ) } } + void LLImageRaw::copyUnscaledAlphaMask( LLImageRaw* src, const LLColor4U& fill) { LLImageRaw* dst = this; // Just for clarity. @@ -846,6 +1372,12 @@ void LLImageRaw::copyScaled( LLImageRaw* src ) return; } + bilinear_scale( + src->getData(), src->getWidth(), src->getHeight(), src->getComponents(), src->getWidth()*src->getComponents() + , dst->getData(), dst->getWidth(), dst->getHeight(), dst->getComponents(), dst->getWidth()*dst->getComponents() + ); + + /* S32 temp_data_size = src->getWidth() * dst->getHeight() * getComponents(); llassert_always(temp_data_size > 0); std::vector<U8> temp_buffer(temp_data_size); @@ -861,6 +1393,7 @@ void LLImageRaw::copyScaled( LLImageRaw* src ) { copyLineScaled( &temp_buffer[0] + (getComponents() * src->getWidth() * row), dst->getData() + (getComponents() * dst->getWidth() * row), src->getWidth(), dst->getWidth(), 1, 1 ); } + */ } @@ -880,6 +1413,7 @@ BOOL LLImageRaw::scale( S32 new_width, S32 new_height, BOOL scale_image_data ) if (scale_image_data) { + /* S32 temp_data_size = old_width * new_height * getComponents(); llassert_always(temp_data_size > 0); std::vector<U8> temp_buffer(temp_data_size); @@ -899,6 +1433,19 @@ BOOL LLImageRaw::scale( S32 new_width, S32 new_height, BOOL scale_image_data ) { copyLineScaled( &temp_buffer[0] + (getComponents() * old_width * row), new_buffer + (getComponents() * new_width * row), old_width, new_width, 1, 1 ); } + */ + + S32 new_data_size = new_width * new_height * getComponents(); + llassert_always(new_data_size > 0); + + U8 *new_data = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), new_data_size); + if(NULL == new_data) + { + return FALSE; + } + + bilinear_scale(getData(), old_width, old_height, getComponents(), old_width*getComponents(), new_data, new_width, new_height, getComponents(), new_width*getComponents()); + setDataAndSize(new_data, new_width, new_height, getComponents()); } else { diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index cd3f76f1fd..cd3f76f1fd 100755..100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h diff --git a/indra/llimage/llimagebmp.cpp b/indra/llimage/llimagebmp.cpp index 8573fe0d91..a2ce2fee86 100755..100644 --- a/indra/llimage/llimagebmp.cpp +++ b/indra/llimage/llimagebmp.cpp @@ -443,6 +443,10 @@ BOOL LLImageBMP::decodeColorMask32( U8* dst, U8* src ) mBitfieldMask[2] = 0x000000FF; } + if (getWidth() * getHeight() * 4 > getDataSize() - mBitmapOffset) + { //here we have situation when data size in src less than actually needed + return FALSE; + } S32 src_row_span = getWidth() * 4; S32 alignment_bytes = (3 * src_row_span) % 4; // round up to nearest multiple of 4 @@ -476,6 +480,11 @@ BOOL LLImageBMP::decodeColorTable8( U8* dst, U8* src ) S32 src_row_span = getWidth() * 1; S32 alignment_bytes = (3 * src_row_span) % 4; // round up to nearest multiple of 4 + if ((getWidth() * getHeight()) + getHeight() * alignment_bytes > getDataSize() - mBitmapOffset) + { //here we have situation when data size in src less than actually needed + return FALSE; + } + for( S32 row = 0; row < getHeight(); row++ ) { for( S32 col = 0; col < getWidth(); col++ ) @@ -501,6 +510,11 @@ BOOL LLImageBMP::decodeTruecolor24( U8* dst, U8* src ) S32 src_row_span = getWidth() * 3; S32 alignment_bytes = (3 * src_row_span) % 4; // round up to nearest multiple of 4 + if ((getWidth() * getHeight() * 3) + getHeight() * alignment_bytes > getDataSize() - mBitmapOffset) + { //here we have situation when data size in src less than actually needed + return FALSE; + } + for( S32 row = 0; row < getHeight(); row++ ) { for( S32 col = 0; col < getWidth(); col++ ) diff --git a/indra/llimage/llimagebmp.h b/indra/llimage/llimagebmp.h index db0b45def0..db0b45def0 100755..100644 --- a/indra/llimage/llimagebmp.h +++ b/indra/llimage/llimagebmp.h diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp index 5bf3f29b3c..5bf3f29b3c 100755..100644 --- a/indra/llimage/llimagedimensionsinfo.cpp +++ b/indra/llimage/llimagedimensionsinfo.cpp diff --git a/indra/llimage/llimagedimensionsinfo.h b/indra/llimage/llimagedimensionsinfo.h index 8f716c5d02..8f716c5d02 100755..100644 --- a/indra/llimage/llimagedimensionsinfo.h +++ b/indra/llimage/llimagedimensionsinfo.h diff --git a/indra/llimage/llimagedxt.cpp b/indra/llimage/llimagedxt.cpp index 04e0e752eb..04e0e752eb 100755..100644 --- a/indra/llimage/llimagedxt.cpp +++ b/indra/llimage/llimagedxt.cpp diff --git a/indra/llimage/llimagedxt.h b/indra/llimage/llimagedxt.h index a8756ba8ed..a8756ba8ed 100755..100644 --- a/indra/llimage/llimagedxt.h +++ b/indra/llimage/llimagedxt.h diff --git a/indra/llimage/llimagefilter.cpp b/indra/llimage/llimagefilter.cpp index 41adc7be9a..41adc7be9a 100755..100644 --- a/indra/llimage/llimagefilter.cpp +++ b/indra/llimage/llimagefilter.cpp diff --git a/indra/llimage/llimagefilter.h b/indra/llimage/llimagefilter.h index 16ec395f76..16ec395f76 100755..100644 --- a/indra/llimage/llimagefilter.h +++ b/indra/llimage/llimagefilter.h diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index 7cd59a2983..7cd59a2983 100755..100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp diff --git a/indra/llimage/llimagej2c.h b/indra/llimage/llimagej2c.h index ce8195940d..ce8195940d 100755..100644 --- a/indra/llimage/llimagej2c.h +++ b/indra/llimage/llimagej2c.h diff --git a/indra/llimage/llimagejpeg.cpp b/indra/llimage/llimagejpeg.cpp index e419c77ff2..e419c77ff2 100755..100644 --- a/indra/llimage/llimagejpeg.cpp +++ b/indra/llimage/llimagejpeg.cpp diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h index 2142660c81..2142660c81 100755..100644 --- a/indra/llimage/llimagejpeg.h +++ b/indra/llimage/llimagejpeg.h diff --git a/indra/llimage/llimagepng.cpp b/indra/llimage/llimagepng.cpp index 7735dc1379..7735dc1379 100755..100644 --- a/indra/llimage/llimagepng.cpp +++ b/indra/llimage/llimagepng.cpp diff --git a/indra/llimage/llimagepng.h b/indra/llimage/llimagepng.h index 1fbd850a2e..1fbd850a2e 100755..100644 --- a/indra/llimage/llimagepng.h +++ b/indra/llimage/llimagepng.h diff --git a/indra/llimage/llimagetga.cpp b/indra/llimage/llimagetga.cpp index 4eb8dc7440..d0ae105ba7 100755..100644 --- a/indra/llimage/llimagetga.cpp +++ b/indra/llimage/llimagetga.cpp @@ -437,7 +437,13 @@ BOOL LLImageTGA::decodeTruecolorNonRle( LLImageRaw* raw_image, BOOL &alpha_opaqu // Origin is the bottom left U8* dst = raw_image->getData(); U8* src = getData() + mDataOffset; + S32 pixels = getWidth() * getHeight(); + + if (pixels * (mIs15Bit ? 2 : getComponents()) > getDataSize() - mDataOffset) + { //here we have situation when data size in src less than actually needed + return FALSE; + } if (getComponents() == 4) { diff --git a/indra/llimage/llimagetga.h b/indra/llimage/llimagetga.h index 5da3525149..5da3525149 100755..100644 --- a/indra/llimage/llimagetga.h +++ b/indra/llimage/llimagetga.h diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index 4875fe7001..4875fe7001 100755..100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index 1bfb0ddfd3..1bfb0ddfd3 100755..100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h diff --git a/indra/llimage/llmapimagetype.h b/indra/llimage/llmapimagetype.h index 0a040d3db9..0a040d3db9 100755..100644 --- a/indra/llimage/llmapimagetype.h +++ b/indra/llimage/llmapimagetype.h diff --git a/indra/llimage/llpngwrapper.cpp b/indra/llimage/llpngwrapper.cpp index aad139f570..aad139f570 100755..100644 --- a/indra/llimage/llpngwrapper.cpp +++ b/indra/llimage/llpngwrapper.cpp diff --git a/indra/llimage/llpngwrapper.h b/indra/llimage/llpngwrapper.h index 27d7df3bef..27d7df3bef 100755..100644 --- a/indra/llimage/llpngwrapper.h +++ b/indra/llimage/llpngwrapper.h diff --git a/indra/llimage/tests/llimageworker_test.cpp b/indra/llimage/tests/llimageworker_test.cpp index 51c5c63556..51c5c63556 100755..100644 --- a/indra/llimage/tests/llimageworker_test.cpp +++ b/indra/llimage/tests/llimageworker_test.cpp diff --git a/indra/llimagej2coj/CMakeLists.txt b/indra/llimagej2coj/CMakeLists.txt index 97d22cf86a..97d22cf86a 100755..100644 --- a/indra/llimagej2coj/CMakeLists.txt +++ b/indra/llimagej2coj/CMakeLists.txt diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index e98f677d9b..e98f677d9b 100755..100644 --- a/indra/llimagej2coj/llimagej2coj.cpp +++ b/indra/llimagej2coj/llimagej2coj.cpp diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h index 40ad4edb00..40ad4edb00 100755..100644 --- a/indra/llimagej2coj/llimagej2coj.h +++ b/indra/llimagej2coj/llimagej2coj.h diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt index 0a1f93bd80..0a1f93bd80 100755..100644 --- a/indra/llinventory/CMakeLists.txt +++ b/indra/llinventory/CMakeLists.txt diff --git a/indra/llinventory/llcategory.cpp b/indra/llinventory/llcategory.cpp index 97a496845b..97a496845b 100755..100644 --- a/indra/llinventory/llcategory.cpp +++ b/indra/llinventory/llcategory.cpp diff --git a/indra/llinventory/llcategory.h b/indra/llinventory/llcategory.h index 390a8a1f1e..390a8a1f1e 100755..100644 --- a/indra/llinventory/llcategory.h +++ b/indra/llinventory/llcategory.h diff --git a/indra/llinventory/lleconomy.cpp b/indra/llinventory/lleconomy.cpp index e10402196f..e10402196f 100755..100644 --- a/indra/llinventory/lleconomy.cpp +++ b/indra/llinventory/lleconomy.cpp diff --git a/indra/llinventory/lleconomy.h b/indra/llinventory/lleconomy.h index 47fcf688a2..47fcf688a2 100755..100644 --- a/indra/llinventory/lleconomy.h +++ b/indra/llinventory/lleconomy.h diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp index 23bf6da1f9..86aca77de8 100755..100644 --- a/indra/llinventory/llfoldertype.cpp +++ b/indra/llinventory/llfoldertype.cpp @@ -96,6 +96,10 @@ LLFolderDictionary::LLFolderDictionary() addEntry(LLFolderType::FT_OUTBOX, new FolderEntry("outbox", TRUE)); addEntry(LLFolderType::FT_BASIC_ROOT, new FolderEntry("basic_rt", TRUE)); + + addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new FolderEntry("merchant", FALSE)); + addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new FolderEntry("stock", FALSE)); + addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new FolderEntry("version", FALSE)); addEntry(LLFolderType::FT_NONE, new FolderEntry("-1", FALSE)); }; diff --git a/indra/llinventory/llfoldertype.h b/indra/llinventory/llfoldertype.h index a0c847914f..515bb05a3f 100755..100644 --- a/indra/llinventory/llfoldertype.h +++ b/indra/llinventory/llfoldertype.h @@ -87,6 +87,10 @@ public: FT_BASIC_ROOT = 52, + FT_MARKETPLACE_LISTINGS = 53, + FT_MARKETPLACE_STOCK = 54, + FT_MARKETPLACE_VERSION = 55, // Note: We actually *never* create folders with that type. This is used for icon override only. + FT_COUNT, FT_NONE = -1 diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp index 11647c5518..11647c5518 100755..100644 --- a/indra/llinventory/llinventory.cpp +++ b/indra/llinventory/llinventory.cpp diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h index 70b200e139..70b200e139 100755..100644 --- a/indra/llinventory/llinventory.h +++ b/indra/llinventory/llinventory.h diff --git a/indra/llinventory/llinventorydefines.cpp b/indra/llinventory/llinventorydefines.cpp index 575331a263..575331a263 100755..100644 --- a/indra/llinventory/llinventorydefines.cpp +++ b/indra/llinventory/llinventorydefines.cpp diff --git a/indra/llinventory/llinventorydefines.h b/indra/llinventory/llinventorydefines.h index 3881fb1fd7..3881fb1fd7 100755..100644 --- a/indra/llinventory/llinventorydefines.h +++ b/indra/llinventory/llinventorydefines.h diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp index 8807b36117..8807b36117 100755..100644 --- a/indra/llinventory/llinventorytype.cpp +++ b/indra/llinventory/llinventorytype.cpp diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h index fc3c78cf50..fc3c78cf50 100755..100644 --- a/indra/llinventory/llinventorytype.h +++ b/indra/llinventory/llinventorytype.h diff --git a/indra/llinventory/lllandmark.cpp b/indra/llinventory/lllandmark.cpp index 4c6075d6b5..4c6075d6b5 100755..100644 --- a/indra/llinventory/lllandmark.cpp +++ b/indra/llinventory/lllandmark.cpp diff --git a/indra/llinventory/lllandmark.h b/indra/llinventory/lllandmark.h index 92923ea6fb..92923ea6fb 100755..100644 --- a/indra/llinventory/lllandmark.h +++ b/indra/llinventory/lllandmark.h diff --git a/indra/llinventory/llnotecard.cpp b/indra/llinventory/llnotecard.cpp index 908c647498..908c647498 100755..100644 --- a/indra/llinventory/llnotecard.cpp +++ b/indra/llinventory/llnotecard.cpp diff --git a/indra/llinventory/llnotecard.h b/indra/llinventory/llnotecard.h index d64a821b78..d64a821b78 100755..100644 --- a/indra/llinventory/llnotecard.h +++ b/indra/llinventory/llnotecard.h diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index b24e14c72b..0908613c10 100755..100644 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -40,6 +40,8 @@ #include "llsdutil_math.h" #include "message.h" #include "u64.h" +#include "llregionflags.h" +#include <boost/range/adaptor/map.hpp> static const F32 SOME_BIG_NUMBER = 1000.0f; static const F32 SOME_BIG_NEG_NUMBER = -1000.0f; @@ -627,8 +629,8 @@ void LLParcel::unpackMessage(LLMessageSystem* msg) void LLParcel::packAccessEntries(LLMessageSystem* msg, const std::map<LLUUID,LLAccessEntry>& list) { - access_map_const_iterator cit = list.begin(); - access_map_const_iterator end = list.end(); + LLAccessEntry::map::const_iterator cit = list.begin(); + LLAccessEntry::map::const_iterator end = list.end(); if (cit == end) { @@ -679,9 +681,28 @@ void LLParcel::unpackAccessEntries(LLMessageSystem* msg, } +void LLParcel::unpackExperienceEntries( LLMessageSystem* msg, U32 type ) +{ + LLUUID id; + + S32 i; + S32 count = msg->getNumberOfBlocksFast(_PREHASH_List); + for (i = 0; i < count; i++) + { + msg->getUUIDFast(_PREHASH_List, _PREHASH_ID, id, i); + + if (id.notNull()) + { + mExperienceKeys[id]=type; + } + } +} + + + void LLParcel::expirePasses(S32 now) { - access_map_iterator itor = mAccessList.begin(); + LLAccessEntry::map::iterator itor = mAccessList.begin(); while (itor != mAccessList.end()) { const LLAccessEntry& entry = (*itor).second; @@ -771,7 +792,7 @@ BOOL LLParcel::addToAccessList(const LLUUID& agent_id, S32 time) // Can't add owner to these lists return FALSE; } - access_map_iterator itor = mAccessList.begin(); + LLAccessEntry::map::iterator itor = mAccessList.begin(); while (itor != mAccessList.end()) { const LLAccessEntry& entry = (*itor).second; @@ -814,7 +835,7 @@ BOOL LLParcel::addToBanList(const LLUUID& agent_id, S32 time) return FALSE; } - access_map_iterator itor = mBanList.begin(); + LLAccessEntry::map::iterator itor = mBanList.begin(); while (itor != mBanList.end()) { const LLAccessEntry& entry = (*itor).second; @@ -848,7 +869,7 @@ BOOL remove_from_access_array(std::map<LLUUID,LLAccessEntry>* list, const LLUUID& agent_id) { BOOL removed = FALSE; - access_map_iterator itor = list->begin(); + LLAccessEntry::map::iterator itor = list->begin(); while (itor != list->end()) { const LLAccessEntry& entry = (*itor).second; @@ -1191,3 +1212,58 @@ LLParcel::ECategory category_ui_string_to_category(const std::string& s) // is a distinct option from "None" and "Other" return LLParcel::C_ANY; } + +LLAccessEntry::map LLParcel::getExperienceKeysByType( U32 type ) const +{ + LLAccessEntry::map access; + LLAccessEntry entry; + xp_type_map_t::const_iterator it = mExperienceKeys.begin(); + for(/**/; it != mExperienceKeys.end(); ++it) + { + if(it->second == type) + { + entry.mID = it->first; + access[entry.mID] = entry; + } + } + return access; +} + +void LLParcel::clearExperienceKeysByType( U32 type ) +{ + xp_type_map_t::iterator it = mExperienceKeys.begin(); + while(it != mExperienceKeys.end()) + { + if(it->second == type) + { + mExperienceKeys.erase(it++); + } + else + { + ++it; + } + } +} + +void LLParcel::setExperienceKeyType( const LLUUID& experience_key, U32 type ) +{ + if(type == EXPERIENCE_KEY_TYPE_NONE) + { + mExperienceKeys.erase(experience_key); + } + else + { + if(countExperienceKeyType(type) < PARCEL_MAX_EXPERIENCE_LIST) + { + mExperienceKeys[experience_key] = type; + } + } +} + +U32 LLParcel::countExperienceKeyType( U32 type ) +{ + return std::count_if( + boost::begin(mExperienceKeys | boost::adaptors::map_values), + boost::end(mExperienceKeys | boost::adaptors::map_values), + std::bind2nd(std::equal_to<U32>(), type)); +} diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index c4363a48df..e68331b99a 100755..100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.h @@ -53,6 +53,9 @@ const S32 PARCEL_MAX_ACCESS_LIST = 300; //for access/ban lists. const F32 PARCEL_MAX_ENTRIES_PER_PACKET = 48.f; +// Maximum number of experiences +const S32 PARCEL_MAX_EXPERIENCE_LIST = 24; + // Weekly charge for listing a parcel in the directory const S32 PARCEL_DIRECTORY_FEE = 30; @@ -130,9 +133,11 @@ class LLSD; class LLAccessEntry { public: + + typedef std::map<LLUUID,LLAccessEntry> map; + LLAccessEntry() - : mID(), - mTime(0), + : mTime(0), mFlags(0) {} @@ -141,8 +146,6 @@ public: U32 mFlags; // Not used - currently should always be zero }; -typedef std::map<LLUUID,LLAccessEntry>::iterator access_map_iterator; -typedef std::map<LLUUID,LLAccessEntry>::const_iterator access_map_const_iterator; class LLParcel { @@ -320,6 +323,9 @@ public: void unpackAccessEntries(LLMessageSystem* msg, std::map<LLUUID,LLAccessEntry>* list); + void unpackExperienceEntries(LLMessageSystem* msg, U32 type); + + void setAABBMin(const LLVector3& min) { mAABBMin = min; } void setAABBMax(const LLVector3& max) { mAABBMax = max; } @@ -665,6 +671,17 @@ public: std::map<LLUUID,LLAccessEntry> mTempBanList; std::map<LLUUID,LLAccessEntry> mTempAccessList; + typedef std::map<LLUUID, U32> xp_type_map_t; + + void setExperienceKeyType(const LLUUID& experience_key, U32 type); + U32 countExperienceKeyType(U32 type); + U32 getExperienceKeyType(const LLUUID& experience_key)const; + LLAccessEntry::map getExperienceKeysByType(U32 type)const; + void clearExperienceKeysByType(U32 type); + +private: + xp_type_map_t mExperienceKeys; + }; diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h index b1a917df73..25b27a281a 100755..100644 --- a/indra/llinventory/llparcelflags.h +++ b/indra/llinventory/llparcelflags.h @@ -90,8 +90,10 @@ const U32 PF_DEFAULT = PF_ALLOW_FLY | PF_USE_ESTATE_VOICE_CHAN; // Access list flags -const U32 AL_ACCESS = (1 << 0); -const U32 AL_BAN = (1 << 1); +const U32 AL_ACCESS = (1 << 0); +const U32 AL_BAN = (1 << 1); +const U32 AL_ALLOW_EXPERIENCE = (1 << 3); +const U32 AL_BLOCK_EXPERIENCE = (1 << 4); //const U32 AL_RENTER = (1 << 2); // Block access return values. BA_ALLOWED is the only success case diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp index e79b753514..e79b753514 100755..100644 --- a/indra/llinventory/llpermissions.cpp +++ b/indra/llinventory/llpermissions.cpp diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h index 89c66f6ebd..89c66f6ebd 100755..100644 --- a/indra/llinventory/llpermissions.h +++ b/indra/llinventory/llpermissions.h diff --git a/indra/llinventory/llpermissionsflags.h b/indra/llinventory/llpermissionsflags.h index 9ecf465c8c..9ecf465c8c 100755..100644 --- a/indra/llinventory/llpermissionsflags.h +++ b/indra/llinventory/llpermissionsflags.h diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp index 63e34d188e..63e34d188e 100755..100644 --- a/indra/llinventory/llsaleinfo.cpp +++ b/indra/llinventory/llsaleinfo.cpp diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h index 4e98ccf6ff..4e98ccf6ff 100755..100644 --- a/indra/llinventory/llsaleinfo.h +++ b/indra/llinventory/llsaleinfo.h diff --git a/indra/llinventory/lltransactionflags.cpp b/indra/llinventory/lltransactionflags.cpp index e21f29df41..e21f29df41 100755..100644 --- a/indra/llinventory/lltransactionflags.cpp +++ b/indra/llinventory/lltransactionflags.cpp diff --git a/indra/llinventory/lltransactionflags.h b/indra/llinventory/lltransactionflags.h index 8227f3bcc2..8227f3bcc2 100755..100644 --- a/indra/llinventory/lltransactionflags.h +++ b/indra/llinventory/lltransactionflags.h diff --git a/indra/llinventory/lltransactiontypes.h b/indra/llinventory/lltransactiontypes.h index 6f8d005f1b..6f8d005f1b 100755..100644 --- a/indra/llinventory/lltransactiontypes.h +++ b/indra/llinventory/lltransactiontypes.h diff --git a/indra/llinventory/lluserrelations.cpp b/indra/llinventory/lluserrelations.cpp index b938dfeb7b..b938dfeb7b 100755..100644 --- a/indra/llinventory/lluserrelations.cpp +++ b/indra/llinventory/lluserrelations.cpp diff --git a/indra/llinventory/lluserrelations.h b/indra/llinventory/lluserrelations.h index 9fbf36f0e2..9fbf36f0e2 100755..100644 --- a/indra/llinventory/lluserrelations.h +++ b/indra/llinventory/lluserrelations.h diff --git a/indra/llinventory/tests/inventorymisc_test.cpp b/indra/llinventory/tests/inventorymisc_test.cpp index 7b15552f24..7b15552f24 100755..100644 --- a/indra/llinventory/tests/inventorymisc_test.cpp +++ b/indra/llinventory/tests/inventorymisc_test.cpp diff --git a/indra/llinventory/tests/llparcel_test.cpp b/indra/llinventory/tests/llparcel_test.cpp index f2e4b03ff7..f2e4b03ff7 100755..100644 --- a/indra/llinventory/tests/llparcel_test.cpp +++ b/indra/llinventory/tests/llparcel_test.cpp diff --git a/indra/llkdu/CMakeLists.txt b/indra/llkdu/CMakeLists.txt index b8f8b420c3..b8f8b420c3 100755..100644 --- a/indra/llkdu/CMakeLists.txt +++ b/indra/llkdu/CMakeLists.txt diff --git a/indra/llkdu/llimagej2ckdu.cpp b/indra/llkdu/llimagej2ckdu.cpp index 6a8959517d..6a8959517d 100755..100644 --- a/indra/llkdu/llimagej2ckdu.cpp +++ b/indra/llkdu/llimagej2ckdu.cpp diff --git a/indra/llkdu/llimagej2ckdu.h b/indra/llkdu/llimagej2ckdu.h index 02281152bf..02281152bf 100755..100644 --- a/indra/llkdu/llimagej2ckdu.h +++ b/indra/llkdu/llimagej2ckdu.h diff --git a/indra/llkdu/llkdumem.cpp b/indra/llkdu/llkdumem.cpp index 0347475559..0347475559 100755..100644 --- a/indra/llkdu/llkdumem.cpp +++ b/indra/llkdu/llkdumem.cpp diff --git a/indra/llkdu/llkdumem.h b/indra/llkdu/llkdumem.h index fab913d93b..fab913d93b 100755..100644 --- a/indra/llkdu/llkdumem.h +++ b/indra/llkdu/llkdumem.h diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp index 0605fad068..0605fad068 100755..100644 --- a/indra/llkdu/tests/llimagej2ckdu_test.cpp +++ b/indra/llkdu/tests/llimagej2ckdu_test.cpp diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt index 0614fd92ef..0614fd92ef 100755..100644 --- a/indra/llmath/CMakeLists.txt +++ b/indra/llmath/CMakeLists.txt diff --git a/indra/llmath/camera.h b/indra/llmath/camera.h index 26f3c3d19f..26f3c3d19f 100755..100644 --- a/indra/llmath/camera.h +++ b/indra/llmath/camera.h diff --git a/indra/llmath/coordframe.h b/indra/llmath/coordframe.h index 271bcb433c..271bcb433c 100755..100644 --- a/indra/llmath/coordframe.h +++ b/indra/llmath/coordframe.h diff --git a/indra/llmath/llbbox.cpp b/indra/llmath/llbbox.cpp index 3e2c05a6e6..3e2c05a6e6 100755..100644 --- a/indra/llmath/llbbox.cpp +++ b/indra/llmath/llbbox.cpp diff --git a/indra/llmath/llbbox.h b/indra/llmath/llbbox.h index 28e69b75e1..28e69b75e1 100755..100644 --- a/indra/llmath/llbbox.h +++ b/indra/llmath/llbbox.h diff --git a/indra/llmath/llbboxlocal.cpp b/indra/llmath/llbboxlocal.cpp index bf0c1a7b93..bf0c1a7b93 100755..100644 --- a/indra/llmath/llbboxlocal.cpp +++ b/indra/llmath/llbboxlocal.cpp diff --git a/indra/llmath/llbboxlocal.h b/indra/llmath/llbboxlocal.h index defb899248..defb899248 100755..100644 --- a/indra/llmath/llbboxlocal.h +++ b/indra/llmath/llbboxlocal.h diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp index edc6986cc9..edc6986cc9 100755..100644 --- a/indra/llmath/llcalc.cpp +++ b/indra/llmath/llcalc.cpp diff --git a/indra/llmath/llcalc.h b/indra/llmath/llcalc.h index ceb9dce585..ceb9dce585 100755..100644 --- a/indra/llmath/llcalc.h +++ b/indra/llmath/llcalc.h diff --git a/indra/llmath/llcalcparser.cpp b/indra/llmath/llcalcparser.cpp index b4ca320659..b4ca320659 100755..100644 --- a/indra/llmath/llcalcparser.cpp +++ b/indra/llmath/llcalcparser.cpp diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h index faa699ff7b..faa699ff7b 100755..100644 --- a/indra/llmath/llcalcparser.h +++ b/indra/llmath/llcalcparser.h diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index ff90532f75..ff90532f75 100755..100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index 321b8ddcc4..321b8ddcc4 100755..100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h diff --git a/indra/llmath/llcoord.h b/indra/llmath/llcoord.h index 9b76268afd..9b76268afd 100755..100644 --- a/indra/llmath/llcoord.h +++ b/indra/llmath/llcoord.h diff --git a/indra/llmath/llcoordframe.cpp b/indra/llmath/llcoordframe.cpp index 1bf51ca0eb..1bf51ca0eb 100755..100644 --- a/indra/llmath/llcoordframe.cpp +++ b/indra/llmath/llcoordframe.cpp diff --git a/indra/llmath/llcoordframe.h b/indra/llmath/llcoordframe.h index 909adf260c..909adf260c 100755..100644 --- a/indra/llmath/llcoordframe.h +++ b/indra/llmath/llcoordframe.h diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h index 5187646179..5187646179 100755..100644 --- a/indra/llmath/llinterp.h +++ b/indra/llmath/llinterp.h diff --git a/indra/llmath/llline.cpp b/indra/llmath/llline.cpp index cfee315b55..cfee315b55 100755..100644 --- a/indra/llmath/llline.cpp +++ b/indra/llmath/llline.cpp diff --git a/indra/llmath/llline.h b/indra/llmath/llline.h index e1cbc1323e..e1cbc1323e 100755..100644 --- a/indra/llmath/llline.h +++ b/indra/llmath/llline.h diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 93b9f22b25..93b9f22b25 100755..100644 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h diff --git a/indra/llmath/llmatrix3a.cpp b/indra/llmath/llmatrix3a.cpp index ab077abcb0..ab077abcb0 100755..100644 --- a/indra/llmath/llmatrix3a.cpp +++ b/indra/llmath/llmatrix3a.cpp diff --git a/indra/llmath/llmatrix3a.h b/indra/llmath/llmatrix3a.h index 9916cfd2da..9916cfd2da 100755..100644 --- a/indra/llmath/llmatrix3a.h +++ b/indra/llmath/llmatrix3a.h diff --git a/indra/llmath/llmatrix3a.inl b/indra/llmath/llmatrix3a.inl index 37819fea3c..37819fea3c 100755..100644 --- a/indra/llmath/llmatrix3a.inl +++ b/indra/llmath/llmatrix3a.inl diff --git a/indra/llmath/llmatrix4a.h b/indra/llmath/llmatrix4a.h index d141298f69..d141298f69 100755..100644 --- a/indra/llmath/llmatrix4a.h +++ b/indra/llmath/llmatrix4a.h diff --git a/indra/llmath/llmodularmath.cpp b/indra/llmath/llmodularmath.cpp index cdc20028bf..cdc20028bf 100755..100644 --- a/indra/llmath/llmodularmath.cpp +++ b/indra/llmath/llmodularmath.cpp diff --git a/indra/llmath/llmodularmath.h b/indra/llmath/llmodularmath.h index 0d4d28fadc..0d4d28fadc 100755..100644 --- a/indra/llmath/llmodularmath.h +++ b/indra/llmath/llmodularmath.h diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 280d2653d3..280d2653d3 100755..100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h diff --git a/indra/llmath/llperlin.cpp b/indra/llmath/llperlin.cpp index e1da2bf92b..e1da2bf92b 100755..100644 --- a/indra/llmath/llperlin.cpp +++ b/indra/llmath/llperlin.cpp diff --git a/indra/llmath/llperlin.h b/indra/llmath/llperlin.h index 40cf19d1ec..40cf19d1ec 100755..100644 --- a/indra/llmath/llperlin.h +++ b/indra/llmath/llperlin.h diff --git a/indra/llmath/llplane.h b/indra/llmath/llplane.h index 64a3eed0e5..64a3eed0e5 100755..100644 --- a/indra/llmath/llplane.h +++ b/indra/llmath/llplane.h diff --git a/indra/llmath/llquantize.h b/indra/llmath/llquantize.h index 10c950abbb..10c950abbb 100755..100644 --- a/indra/llmath/llquantize.h +++ b/indra/llmath/llquantize.h diff --git a/indra/llmath/llquaternion.cpp b/indra/llmath/llquaternion.cpp index 47374c287f..47374c287f 100755..100644 --- a/indra/llmath/llquaternion.cpp +++ b/indra/llmath/llquaternion.cpp diff --git a/indra/llmath/llquaternion.h b/indra/llmath/llquaternion.h index aa0b1752f4..aa0b1752f4 100755..100644 --- a/indra/llmath/llquaternion.h +++ b/indra/llmath/llquaternion.h diff --git a/indra/llmath/llquaternion2.h b/indra/llmath/llquaternion2.h index fd9c0cf3ab..fd9c0cf3ab 100755..100644 --- a/indra/llmath/llquaternion2.h +++ b/indra/llmath/llquaternion2.h diff --git a/indra/llmath/llquaternion2.inl b/indra/llmath/llquaternion2.inl index 2a6987552d..2a6987552d 100755..100644 --- a/indra/llmath/llquaternion2.inl +++ b/indra/llmath/llquaternion2.inl diff --git a/indra/llmath/llrect.cpp b/indra/llmath/llrect.cpp index 4083c99768..4083c99768 100755..100644 --- a/indra/llmath/llrect.cpp +++ b/indra/llmath/llrect.cpp diff --git a/indra/llmath/llrect.h b/indra/llmath/llrect.h index c51e0e0ae6..c51e0e0ae6 100755..100644 --- a/indra/llmath/llrect.h +++ b/indra/llmath/llrect.h diff --git a/indra/llmath/llsdutil_math.cpp b/indra/llmath/llsdutil_math.cpp index 591f7fde36..591f7fde36 100755..100644 --- a/indra/llmath/llsdutil_math.cpp +++ b/indra/llmath/llsdutil_math.cpp diff --git a/indra/llmath/llsdutil_math.h b/indra/llmath/llsdutil_math.h index 0ea78cd231..0ea78cd231 100755..100644 --- a/indra/llmath/llsdutil_math.h +++ b/indra/llmath/llsdutil_math.h diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h index cebd2ace7d..cebd2ace7d 100755..100644 --- a/indra/llmath/llsimdmath.h +++ b/indra/llmath/llsimdmath.h diff --git a/indra/llmath/llsimdtypes.h b/indra/llmath/llsimdtypes.h index bd991d0e71..bd991d0e71 100755..100644 --- a/indra/llmath/llsimdtypes.h +++ b/indra/llmath/llsimdtypes.h diff --git a/indra/llmath/llsimdtypes.inl b/indra/llmath/llsimdtypes.inl index e905c84954..e905c84954 100755..100644 --- a/indra/llmath/llsimdtypes.inl +++ b/indra/llmath/llsimdtypes.inl diff --git a/indra/llmath/llsphere.cpp b/indra/llmath/llsphere.cpp index a8d6200488..a8d6200488 100755..100644 --- a/indra/llmath/llsphere.cpp +++ b/indra/llmath/llsphere.cpp diff --git a/indra/llmath/llsphere.h b/indra/llmath/llsphere.h index 7c60a11406..7c60a11406 100755..100644 --- a/indra/llmath/llsphere.h +++ b/indra/llmath/llsphere.h diff --git a/indra/llmath/lltreenode.h b/indra/llmath/lltreenode.h index 0b479c4564..0b479c4564 100755..100644 --- a/indra/llmath/lltreenode.h +++ b/indra/llmath/lltreenode.h diff --git a/indra/llmath/llvector4a.cpp b/indra/llmath/llvector4a.cpp index 570fa41a43..570fa41a43 100755..100644 --- a/indra/llmath/llvector4a.cpp +++ b/indra/llmath/llvector4a.cpp diff --git a/indra/llmath/llvector4a.h b/indra/llmath/llvector4a.h index 79d0a44551..79d0a44551 100755..100644 --- a/indra/llmath/llvector4a.h +++ b/indra/llmath/llvector4a.h diff --git a/indra/llmath/llvector4a.inl b/indra/llmath/llvector4a.inl index 69d3d01efe..69d3d01efe 100755..100644 --- a/indra/llmath/llvector4a.inl +++ b/indra/llmath/llvector4a.inl diff --git a/indra/llmath/llvector4logical.h b/indra/llmath/llvector4logical.h index c5698f7cea..c5698f7cea 100755..100644 --- a/indra/llmath/llvector4logical.h +++ b/indra/llmath/llvector4logical.h diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index c2198b91a7..8608e45a91 100755..100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -2536,6 +2536,8 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size) U32 cur_influence = 0; LLVector4 wght(0,0,0,0); + U32 joints[4] = {0,0,0,0}; + LLVector4 joints_with_weights(0,0,0,0); while (joint != END_INFLUENCES && idx < weights.size()) { @@ -2543,7 +2545,9 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size) influence |= ((U16) weights[idx++] << 8); F32 w = llclamp((F32) influence / 65535.f, 0.f, 0.99999f); - wght.mV[cur_influence++] = (F32) joint + w; + wght.mV[cur_influence] = w; + joints[cur_influence] = joint; + cur_influence++; if (cur_influence >= 4) { @@ -2554,8 +2558,16 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size) joint = weights[idx++]; } } - - face.mWeights[cur_vertex].loadua(wght.mV); + F32 wsum = wght.mV[VX] + wght.mV[VY] + wght.mV[VZ] + wght.mV[VW]; + if (wsum <= 0.f) + { + wght = LLVector4(0.99999f,0.f,0.f,0.f); + } + for (U32 k=0; k<4; k++) + { + joints_with_weights[k] = (F32) joints[k] + wght[k]; + } + face.mWeights[cur_vertex].loadua(joints_with_weights.mV); cur_vertex++; } @@ -5584,7 +5596,7 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) { resizeVertices(num_vertices+1); - if (!partial_build) + //if (!partial_build) { resizeIndices(num_indices+3); } @@ -5592,7 +5604,7 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) else { resizeVertices(num_vertices); - if (!partial_build) + //if (!partial_build) { resizeIndices(num_indices); } @@ -5714,10 +5726,10 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) LL_CHECK_MEMORY - if (partial_build) - { - return TRUE; - } + //if (partial_build) + //{ + // return TRUE; + //} if (mTypeMask & HOLLOW_MASK) { @@ -6072,7 +6084,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con if (new_verts > mNumAllocatedVertices) { - //double buffer size on expansion + // double buffer size on expansion new_verts *= 2; S32 new_tc_size = ((new_verts*8)+0xF) & ~0xF; @@ -6088,18 +6100,21 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con mNormals = mPositions+new_verts; mTexCoords = (LLVector2*) (mNormals+new_verts); - //positions - LLVector4a::memcpyNonAliased16((F32*) mPositions, (F32*) old_buf, old_vsize); - - //normals - LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) (old_buf+mNumVertices), old_vsize); + if (old_buf != NULL) + { + // copy old positions into new buffer + LLVector4a::memcpyNonAliased16((F32*)mPositions, (F32*)old_buf, old_vsize); - //tex coords - LLVector4a::memcpyNonAliased16((F32*) mTexCoords, (F32*) (old_buf+mNumVertices*2), old_tc_size); + // normals + LLVector4a::memcpyNonAliased16((F32*)mNormals, (F32*)(old_buf + mNumVertices), old_vsize); - //just clear tangents - ll_aligned_free_16(mTangents); - mTangents = NULL; + // tex coords + LLVector4a::memcpyNonAliased16((F32*)mTexCoords, (F32*)(old_buf + mNumVertices * 2), old_tc_size); + } + + // just clear tangents + ll_aligned_free_16(mTangents); + mTangents = NULL; ll_aligned_free<64>(old_buf); mNumAllocatedVertices = new_verts; diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index c8476f6897..1da2d0c6b1 100755..100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -190,8 +190,12 @@ const U8 LL_SCULPT_TYPE_MESH = 5; const U8 LL_SCULPT_TYPE_MASK = LL_SCULPT_TYPE_SPHERE | LL_SCULPT_TYPE_TORUS | LL_SCULPT_TYPE_PLANE | LL_SCULPT_TYPE_CYLINDER | LL_SCULPT_TYPE_MESH; +// for value checks, assign new value after adding new types +const U8 LL_SCULPT_TYPE_MAX = LL_SCULPT_TYPE_MESH; + const U8 LL_SCULPT_FLAG_INVERT = 64; const U8 LL_SCULPT_FLAG_MIRROR = 128; +const U8 LL_SCULPT_FLAG_MASK = LL_SCULPT_FLAG_INVERT | LL_SCULPT_FLAG_MIRROR; const S32 LL_SCULPT_MESH_MAX_FACES = 8; @@ -968,6 +972,7 @@ protected: ~LLVolume(); // use unref public: + typedef std::vector<LLVolumeFace> face_list_t; struct FaceParams { @@ -1041,6 +1046,10 @@ public: // conversion if *(LLVolume*) to LLVolume& const LLVolumeFace &getVolumeFace(const S32 f) const {return mVolumeFaces[f];} // DO NOT DELETE VOLUME WHILE USING THIS REFERENCE, OR HOLD A POINTER TO THIS VOLUMEFACE + LLVolumeFace &getVolumeFace(const S32 f) {return mVolumeFaces[f];} // DO NOT DELETE VOLUME WHILE USING THIS REFERENCE, OR HOLD A POINTER TO THIS VOLUMEFACE + + face_list_t& getVolumeFaces() { return mVolumeFaces; } + U32 mFaceMask; // bit array of which faces exist in this volume LLVector3 mLODScaleBias; // vector for biasing LOD based on scale @@ -1080,7 +1089,6 @@ public: BOOL mGenerateSingleFace; - typedef std::vector<LLVolumeFace> face_list_t; face_list_t mVolumeFaces; public: diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp index 3b8f08e0c6..3b8f08e0c6 100755..100644 --- a/indra/llmath/llvolumemgr.cpp +++ b/indra/llmath/llvolumemgr.cpp diff --git a/indra/llmath/llvolumemgr.h b/indra/llmath/llvolumemgr.h index c75906f675..c75906f675 100755..100644 --- a/indra/llmath/llvolumemgr.h +++ b/indra/llmath/llvolumemgr.h diff --git a/indra/llmath/llvolumeoctree.cpp b/indra/llmath/llvolumeoctree.cpp index fb232d5f6c..fb232d5f6c 100755..100644 --- a/indra/llmath/llvolumeoctree.cpp +++ b/indra/llmath/llvolumeoctree.cpp diff --git a/indra/llmath/llvolumeoctree.h b/indra/llmath/llvolumeoctree.h index 13150028d8..13150028d8 100755..100644 --- a/indra/llmath/llvolumeoctree.h +++ b/indra/llmath/llvolumeoctree.h diff --git a/indra/llmath/m3math.cpp b/indra/llmath/m3math.cpp index 802ddb9e57..802ddb9e57 100755..100644 --- a/indra/llmath/m3math.cpp +++ b/indra/llmath/m3math.cpp diff --git a/indra/llmath/m3math.h b/indra/llmath/m3math.h index 2be5452f8d..2be5452f8d 100755..100644 --- a/indra/llmath/m3math.h +++ b/indra/llmath/m3math.h diff --git a/indra/llmath/m4math.cpp b/indra/llmath/m4math.cpp index 6a1b4143cf..d89c482804 100755..100644 --- a/indra/llmath/m4math.cpp +++ b/indra/llmath/m4math.cpp @@ -274,6 +274,19 @@ const LLMatrix4& LLMatrix4::invert(void) return *this; } +// Convenience func for simplifying comparison-heavy code by +// intentionally stomping values in [-FLT_EPS,FLT_EPS] to 0.0f +// +void LLMatrix4::condition(void) +{ + U32 i; + U32 j; + for (i = 0; i < 3;i++) + for (j = 0; j < 3;j++) + mMatrix[i][j] = ((mMatrix[i][j] > -FLT_EPSILON) + && (mMatrix[i][j] < FLT_EPSILON)) ? 0.0f : mMatrix[i][j]; +} + LLVector4 LLMatrix4::getFwdRow4() const { return LLVector4(mMatrix[VX][VX], mMatrix[VX][VY], mMatrix[VX][VZ], mMatrix[VX][VW]); diff --git a/indra/llmath/m4math.h b/indra/llmath/m4math.h index a7dce10397..a77c5bc76d 100755..100644 --- a/indra/llmath/m4math.h +++ b/indra/llmath/m4math.h @@ -180,6 +180,11 @@ public: const LLMatrix4& setTranslation(const LLVector4 &translation); const LLMatrix4& setTranslation(const LLVector3 &translation); + // Convenience func for simplifying comparison-heavy code by + // intentionally stomping values [-FLT_EPS,FLT_EPS] to 0.0 + // + void condition(void); + /////////////////////////// // // Get properties of a matrix diff --git a/indra/llmath/raytrace.cpp b/indra/llmath/raytrace.cpp index f38fe49bcb..f38fe49bcb 100755..100644 --- a/indra/llmath/raytrace.cpp +++ b/indra/llmath/raytrace.cpp diff --git a/indra/llmath/raytrace.h b/indra/llmath/raytrace.h index 2d32af0c86..2d32af0c86 100755..100644 --- a/indra/llmath/raytrace.h +++ b/indra/llmath/raytrace.h diff --git a/indra/llmath/tests/alignment_test.cpp b/indra/llmath/tests/alignment_test.cpp index 5ee3c45502..5ee3c45502 100755..100644 --- a/indra/llmath/tests/alignment_test.cpp +++ b/indra/llmath/tests/alignment_test.cpp diff --git a/indra/llmath/tests/llbbox_test.cpp b/indra/llmath/tests/llbbox_test.cpp index fd0dbb58fc..fd0dbb58fc 100755..100644 --- a/indra/llmath/tests/llbbox_test.cpp +++ b/indra/llmath/tests/llbbox_test.cpp diff --git a/indra/llmath/tests/llbboxlocal_test.cpp b/indra/llmath/tests/llbboxlocal_test.cpp index f31e4126c4..f31e4126c4 100755..100644 --- a/indra/llmath/tests/llbboxlocal_test.cpp +++ b/indra/llmath/tests/llbboxlocal_test.cpp diff --git a/indra/llmath/tests/llmodularmath_test.cpp b/indra/llmath/tests/llmodularmath_test.cpp index 063d3ef79f..063d3ef79f 100755..100644 --- a/indra/llmath/tests/llmodularmath_test.cpp +++ b/indra/llmath/tests/llmodularmath_test.cpp diff --git a/indra/llmath/tests/llquaternion_test.cpp b/indra/llmath/tests/llquaternion_test.cpp index 3490829743..3490829743 100755..100644 --- a/indra/llmath/tests/llquaternion_test.cpp +++ b/indra/llmath/tests/llquaternion_test.cpp diff --git a/indra/llmath/tests/llrect_test.cpp b/indra/llmath/tests/llrect_test.cpp index d740173e69..d740173e69 100755..100644 --- a/indra/llmath/tests/llrect_test.cpp +++ b/indra/llmath/tests/llrect_test.cpp diff --git a/indra/llmath/tests/m3math_test.cpp b/indra/llmath/tests/m3math_test.cpp index 1ca2b005d9..1ca2b005d9 100755..100644 --- a/indra/llmath/tests/m3math_test.cpp +++ b/indra/llmath/tests/m3math_test.cpp diff --git a/indra/llmath/tests/mathmisc_test.cpp b/indra/llmath/tests/mathmisc_test.cpp index f12140cf8f..f12140cf8f 100755..100644 --- a/indra/llmath/tests/mathmisc_test.cpp +++ b/indra/llmath/tests/mathmisc_test.cpp diff --git a/indra/llmath/tests/v2math_test.cpp b/indra/llmath/tests/v2math_test.cpp index 4d6a2eca93..4d6a2eca93 100755..100644 --- a/indra/llmath/tests/v2math_test.cpp +++ b/indra/llmath/tests/v2math_test.cpp diff --git a/indra/llmath/tests/v3color_test.cpp b/indra/llmath/tests/v3color_test.cpp index 29d1c483ab..29d1c483ab 100755..100644 --- a/indra/llmath/tests/v3color_test.cpp +++ b/indra/llmath/tests/v3color_test.cpp diff --git a/indra/llmath/tests/v3dmath_test.cpp b/indra/llmath/tests/v3dmath_test.cpp index 20b26faa12..20b26faa12 100755..100644 --- a/indra/llmath/tests/v3dmath_test.cpp +++ b/indra/llmath/tests/v3dmath_test.cpp diff --git a/indra/llmath/tests/v3math_test.cpp b/indra/llmath/tests/v3math_test.cpp index e4ae1c10ef..e4ae1c10ef 100755..100644 --- a/indra/llmath/tests/v3math_test.cpp +++ b/indra/llmath/tests/v3math_test.cpp diff --git a/indra/llmath/tests/v4color_test.cpp b/indra/llmath/tests/v4color_test.cpp index d7eec3c87f..d7eec3c87f 100755..100644 --- a/indra/llmath/tests/v4color_test.cpp +++ b/indra/llmath/tests/v4color_test.cpp diff --git a/indra/llmath/tests/v4coloru_test.cpp b/indra/llmath/tests/v4coloru_test.cpp index 12e607a820..12e607a820 100755..100644 --- a/indra/llmath/tests/v4coloru_test.cpp +++ b/indra/llmath/tests/v4coloru_test.cpp diff --git a/indra/llmath/tests/v4math_test.cpp b/indra/llmath/tests/v4math_test.cpp index 191ac864df..191ac864df 100755..100644 --- a/indra/llmath/tests/v4math_test.cpp +++ b/indra/llmath/tests/v4math_test.cpp diff --git a/indra/llmath/tests/xform_test.cpp b/indra/llmath/tests/xform_test.cpp index 49870eef3c..49870eef3c 100755..100644 --- a/indra/llmath/tests/xform_test.cpp +++ b/indra/llmath/tests/xform_test.cpp diff --git a/indra/llmath/v2math.cpp b/indra/llmath/v2math.cpp index a0cd642853..a0cd642853 100755..100644 --- a/indra/llmath/v2math.cpp +++ b/indra/llmath/v2math.cpp diff --git a/indra/llmath/v2math.h b/indra/llmath/v2math.h index 8d5db96f5e..8d5db96f5e 100755..100644 --- a/indra/llmath/v2math.h +++ b/indra/llmath/v2math.h diff --git a/indra/llmath/v3color.cpp b/indra/llmath/v3color.cpp index d38f48b11e..d38f48b11e 100755..100644 --- a/indra/llmath/v3color.cpp +++ b/indra/llmath/v3color.cpp diff --git a/indra/llmath/v3color.h b/indra/llmath/v3color.h index daf3a6857b..daf3a6857b 100755..100644 --- a/indra/llmath/v3color.h +++ b/indra/llmath/v3color.h diff --git a/indra/llmath/v3dmath.cpp b/indra/llmath/v3dmath.cpp index a50cb3c6ca..a50cb3c6ca 100755..100644 --- a/indra/llmath/v3dmath.cpp +++ b/indra/llmath/v3dmath.cpp diff --git a/indra/llmath/v3dmath.h b/indra/llmath/v3dmath.h index 4938273d5b..4938273d5b 100755..100644 --- a/indra/llmath/v3dmath.h +++ b/indra/llmath/v3dmath.h diff --git a/indra/llmath/v3math.cpp b/indra/llmath/v3math.cpp index e7107dee16..e7107dee16 100755..100644 --- a/indra/llmath/v3math.cpp +++ b/indra/llmath/v3math.cpp diff --git a/indra/llmath/v3math.h b/indra/llmath/v3math.h index f3fbce4843..f3fbce4843 100755..100644 --- a/indra/llmath/v3math.h +++ b/indra/llmath/v3math.h diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp index 79a64b24f2..79a64b24f2 100755..100644 --- a/indra/llmath/v4color.cpp +++ b/indra/llmath/v4color.cpp diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index 0d632f59be..0d632f59be 100755..100644 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h diff --git a/indra/llmath/v4coloru.cpp b/indra/llmath/v4coloru.cpp index f1a2518cf3..f1a2518cf3 100755..100644 --- a/indra/llmath/v4coloru.cpp +++ b/indra/llmath/v4coloru.cpp diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h index fddad34978..fddad34978 100755..100644 --- a/indra/llmath/v4coloru.h +++ b/indra/llmath/v4coloru.h diff --git a/indra/llmath/v4math.cpp b/indra/llmath/v4math.cpp index 2782cf2966..2782cf2966 100755..100644 --- a/indra/llmath/v4math.cpp +++ b/indra/llmath/v4math.cpp diff --git a/indra/llmath/v4math.h b/indra/llmath/v4math.h index 623c8b2003..623c8b2003 100755..100644 --- a/indra/llmath/v4math.h +++ b/indra/llmath/v4math.h diff --git a/indra/llmath/xform.cpp b/indra/llmath/xform.cpp index 5d8b93d5e8..5d8b93d5e8 100755..100644 --- a/indra/llmath/xform.cpp +++ b/indra/llmath/xform.cpp diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h index 54b0f6d9ec..54b0f6d9ec 100755..100644 --- a/indra/llmath/xform.h +++ b/indra/llmath/xform.h diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt index 40eddcb0ab..0a308fbf10 100755..100644 --- a/indra/llmessage/CMakeLists.txt +++ b/indra/llmessage/CMakeLists.txt @@ -42,6 +42,7 @@ set(llmessage_SOURCE_FILES llcurl.cpp lldatapacker.cpp lldispatcher.cpp + llexperiencecache.cpp llfiltersd2xmlrpc.cpp llhost.cpp llhttpassetstorage.cpp @@ -133,6 +134,7 @@ set(llmessage_HEADER_FILES lldbstrings.h lldispatcher.h lleventflags.h + llexperiencecache.h llextendedstatus.h llfiltersd2xmlrpc.h llfollowcamparams.h diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp index 9f90ae1544..9f90ae1544 100755..100644 --- a/indra/llmessage/llares.cpp +++ b/indra/llmessage/llares.cpp diff --git a/indra/llmessage/llares.h b/indra/llmessage/llares.h index c727363b60..c727363b60 100755..100644 --- a/indra/llmessage/llares.h +++ b/indra/llmessage/llares.h diff --git a/indra/llmessage/llareslistener.cpp b/indra/llmessage/llareslistener.cpp index 3d65906b98..3d65906b98 100755..100644 --- a/indra/llmessage/llareslistener.cpp +++ b/indra/llmessage/llareslistener.cpp diff --git a/indra/llmessage/llareslistener.h b/indra/llmessage/llareslistener.h index 780dcdd9c5..780dcdd9c5 100755..100644 --- a/indra/llmessage/llareslistener.h +++ b/indra/llmessage/llareslistener.h diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index 8ba2535531..61663e1982 100755..100644 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -633,6 +633,10 @@ void LLAssetStorage::downloadCompleteCallback( vfile.remove(); } } + + // we will be deleting elements of mPendingDownloads which req might be part of, save id and type for reference + LLUUID callback_id = req->getUUID(); + LLAssetType::EType callback_type = req->getType(); // find and callback ALL pending requests for this UUID // SJB: We process the callbacks in reverse order, I do not know if this is important, @@ -660,7 +664,7 @@ void LLAssetStorage::downloadCompleteCallback( { add(sFailedDownloadCount, 1); } - tmp->mDownCallback(gAssetStorage->mVFS, req->getUUID(), req->getType(), tmp->mUserData, result, ext_status); + tmp->mDownCallback(gAssetStorage->mVFS, callback_id, callback_type, tmp->mUserData, result, ext_status); } delete tmp; } diff --git a/indra/llmessage/llassetstorage.h b/indra/llmessage/llassetstorage.h index 1bb4acea9e..1bb4acea9e 100755..100644 --- a/indra/llmessage/llassetstorage.h +++ b/indra/llmessage/llassetstorage.h diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index 549708097a..549708097a 100755..100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h index 5a10053a69..5a10053a69 100755..100644 --- a/indra/llmessage/llavatarnamecache.h +++ b/indra/llmessage/llavatarnamecache.h diff --git a/indra/llmessage/llblowfishcipher.cpp b/indra/llmessage/llblowfishcipher.cpp index 0b5025a422..0b5025a422 100755..100644 --- a/indra/llmessage/llblowfishcipher.cpp +++ b/indra/llmessage/llblowfishcipher.cpp diff --git a/indra/llmessage/llblowfishcipher.h b/indra/llmessage/llblowfishcipher.h index e2e54526e8..e2e54526e8 100755..100644 --- a/indra/llmessage/llblowfishcipher.h +++ b/indra/llmessage/llblowfishcipher.h diff --git a/indra/llmessage/llbuffer.cpp b/indra/llmessage/llbuffer.cpp index d07d9980c3..d07d9980c3 100755..100644 --- a/indra/llmessage/llbuffer.cpp +++ b/indra/llmessage/llbuffer.cpp diff --git a/indra/llmessage/llbuffer.h b/indra/llmessage/llbuffer.h index ccdb9fa7ee..ccdb9fa7ee 100755..100644 --- a/indra/llmessage/llbuffer.h +++ b/indra/llmessage/llbuffer.h diff --git a/indra/llmessage/llbufferstream.cpp b/indra/llmessage/llbufferstream.cpp index ff1c9993cc..ff1c9993cc 100755..100644 --- a/indra/llmessage/llbufferstream.cpp +++ b/indra/llmessage/llbufferstream.cpp diff --git a/indra/llmessage/llbufferstream.h b/indra/llmessage/llbufferstream.h index 19749612f3..19749612f3 100755..100644 --- a/indra/llmessage/llbufferstream.h +++ b/indra/llmessage/llbufferstream.h diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index daf3e0b4de..daf3e0b4de 100755..100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp diff --git a/indra/llmessage/llcachename.h b/indra/llmessage/llcachename.h index d238c3a247..d238c3a247 100755..100644 --- a/indra/llmessage/llcachename.h +++ b/indra/llmessage/llcachename.h diff --git a/indra/llmessage/llchainio.cpp b/indra/llmessage/llchainio.cpp index bcda6746a1..bcda6746a1 100755..100644 --- a/indra/llmessage/llchainio.cpp +++ b/indra/llmessage/llchainio.cpp diff --git a/indra/llmessage/llchainio.h b/indra/llmessage/llchainio.h index 6e4d6c2013..6e4d6c2013 100755..100644 --- a/indra/llmessage/llchainio.h +++ b/indra/llmessage/llchainio.h diff --git a/indra/llmessage/llcipher.h b/indra/llmessage/llcipher.h index 76e3a7a5a3..76e3a7a5a3 100755..100644 --- a/indra/llmessage/llcipher.h +++ b/indra/llmessage/llcipher.h diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp index 8dbe2f8411..8dbe2f8411 100755..100644 --- a/indra/llmessage/llcircuit.cpp +++ b/indra/llmessage/llcircuit.cpp diff --git a/indra/llmessage/llcircuit.h b/indra/llmessage/llcircuit.h index b8021bc9f0..b8021bc9f0 100755..100644 --- a/indra/llmessage/llcircuit.h +++ b/indra/llmessage/llcircuit.h diff --git a/indra/llmessage/llclassifiedflags.cpp b/indra/llmessage/llclassifiedflags.cpp index f6084d4a60..f6084d4a60 100755..100644 --- a/indra/llmessage/llclassifiedflags.cpp +++ b/indra/llmessage/llclassifiedflags.cpp diff --git a/indra/llmessage/llclassifiedflags.h b/indra/llmessage/llclassifiedflags.h index 17fc867453..17fc867453 100755..100644 --- a/indra/llmessage/llclassifiedflags.h +++ b/indra/llmessage/llclassifiedflags.h diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 73df47b933..7e9ae8d108 100755..100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -178,6 +178,11 @@ void LLCurl::Responder::setURL(const std::string& url) mURL = url; } +const std::string& LLCurl::Responder::getURL() +{ + return mURL; +} + void LLCurl::Responder::successResult(const LLSD& content) { setResult(HTTP_OK, "", content); diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 385d9fffa8..34758433c8 100755..100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -147,6 +147,7 @@ public: public: void setHTTPMethod(EHTTPMethod method); void setURL(const std::string& url); + const std::string& getURL(); void setResult(S32 status, const std::string& reason, const LLSD& content = LLSD()); void setResponseHeader(const std::string& header, const std::string& value); diff --git a/indra/llmessage/lldatapacker.cpp b/indra/llmessage/lldatapacker.cpp index 3510f93805..3510f93805 100755..100644 --- a/indra/llmessage/lldatapacker.cpp +++ b/indra/llmessage/lldatapacker.cpp diff --git a/indra/llmessage/lldatapacker.h b/indra/llmessage/lldatapacker.h index 5140f56c01..5140f56c01 100755..100644 --- a/indra/llmessage/lldatapacker.h +++ b/indra/llmessage/lldatapacker.h diff --git a/indra/llmessage/lldbstrings.h b/indra/llmessage/lldbstrings.h index e23d17d5b6..e23d17d5b6 100755..100644 --- a/indra/llmessage/lldbstrings.h +++ b/indra/llmessage/lldbstrings.h diff --git a/indra/llmessage/lldispatcher.cpp b/indra/llmessage/lldispatcher.cpp index c40fe0d389..c40fe0d389 100755..100644 --- a/indra/llmessage/lldispatcher.cpp +++ b/indra/llmessage/lldispatcher.cpp diff --git a/indra/llmessage/lldispatcher.h b/indra/llmessage/lldispatcher.h index 9d1751f588..9d1751f588 100755..100644 --- a/indra/llmessage/lldispatcher.h +++ b/indra/llmessage/lldispatcher.h diff --git a/indra/llmessage/lleventflags.h b/indra/llmessage/lleventflags.h index 75d79071b1..75d79071b1 100755..100644 --- a/indra/llmessage/lleventflags.h +++ b/indra/llmessage/lleventflags.h diff --git a/indra/llmessage/llexperiencecache.cpp b/indra/llmessage/llexperiencecache.cpp new file mode 100644 index 0000000000..52b60a176e --- /dev/null +++ b/indra/llmessage/llexperiencecache.cpp @@ -0,0 +1,641 @@ +/** + * @file llexperiencecache.cpp + * @brief llexperiencecache and related class definitions + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2012, 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 "llexperiencecache.h" + +#include "llavatarname.h" +#include "llframetimer.h" +#include "llhttpclient.h" +#include "llsdserialize.h" +#include <set> +#include <map> +#include "boost/tokenizer.hpp" + + +namespace LLExperienceCache +{ + + typedef std::map<LLUUID, LLUUID> KeyMap; + KeyMap privateToPublicKeyMap; + + void mapKeys(const LLSD& legacyKeys); + + std::string sLookupURL; + + typedef std::map<LLUUID, std::string> ask_queue_t; + ask_queue_t sAskQueue; + + typedef std::map<LLUUID, F64> pending_queue_t; + pending_queue_t sPendingQueue; + + cache_t sCache; + int sMaximumLookups = 10; + + LLFrameTimer sRequestTimer; + + // Periodically clean out expired entries from the cache + LLFrameTimer sEraseExpiredTimer; + + // May have multiple callbacks for a single ID, which are + // represented as multiple slots bound to the signal. + // Avoid copying signals via pointers. + typedef std::map<LLUUID, callback_signal_t*> signal_map_t; + signal_map_t sSignalMap; + + + + bool max_age_from_cache_control(const std::string& cache_control, S32 *max_age); + void eraseExpired(); + + void processExperience( const LLUUID& public_key, const LLSD& experience ) + { + sCache[public_key]=experience; + LLSD & row = sCache[public_key]; + + if(row.has(EXPIRES)) + { + row[EXPIRES] = row[EXPIRES].asReal() + LLFrameTimer::getTotalSeconds(); + } + + if(row.has(EXPERIENCE_ID)) + { + sPendingQueue.erase(row[EXPERIENCE_ID].asUUID()); + } + + //signal + signal_map_t::iterator sig_it = sSignalMap.find(public_key); + if (sig_it != sSignalMap.end()) + { + callback_signal_t* signal = sig_it->second; + (*signal)(experience); + + sSignalMap.erase(public_key); + + delete signal; + } + } + + void initClass( ) + { + } + + const cache_t& getCached() + { + return sCache; + } + + void setMaximumLookups( int maximumLookups) + { + sMaximumLookups = maximumLookups; + } + + void bootstrap(const LLSD& legacyKeys, int initialExpiration) + { + mapKeys(legacyKeys); + LLSD::array_const_iterator it = legacyKeys.beginArray(); + for(/**/; it != legacyKeys.endArray(); ++it) + { + LLSD experience = *it; + if(experience.has(EXPERIENCE_ID)) + { + if(!experience.has(EXPIRES)) + { + experience[EXPIRES] = initialExpiration; + } + processExperience(experience[EXPERIENCE_ID].asUUID(), experience); + } + else + { + LL_WARNS("ExperienceCache") + << "Skipping bootstrap entry which is missing " << EXPERIENCE_ID + << LL_ENDL; + } + } + } + + + + bool expirationFromCacheControl(LLSD headers, F64 *expires) + { + // Allow the header to override the default + LLSD cache_control_header = headers["cache-control"]; + if (cache_control_header.isDefined()) + { + S32 max_age = 0; + std::string cache_control = cache_control_header.asString(); + if (max_age_from_cache_control(cache_control, &max_age)) + { + LL_WARNS("ExperienceCache") + << "got EXPIRES from headers, max_age " << max_age + << LL_ENDL; + F64 now = LLFrameTimer::getTotalSeconds(); + *expires = now + (F64)max_age; + return true; + } + } + return false; + } + + + static const std::string MAX_AGE("max-age"); + static const boost::char_separator<char> EQUALS_SEPARATOR("="); + static const boost::char_separator<char> COMMA_SEPARATOR(","); + + bool max_age_from_cache_control(const std::string& cache_control, S32 *max_age) + { + // Split the string on "," to get a list of directives + typedef boost::tokenizer<boost::char_separator<char> > tokenizer; + tokenizer directives(cache_control, COMMA_SEPARATOR); + + tokenizer::iterator token_it = directives.begin(); + for ( ; token_it != directives.end(); ++token_it) + { + // Tokens may have leading or trailing whitespace + std::string token = *token_it; + LLStringUtil::trim(token); + + if (token.compare(0, MAX_AGE.size(), MAX_AGE) == 0) + { + // ...this token starts with max-age, so let's chop it up by "=" + tokenizer subtokens(token, EQUALS_SEPARATOR); + tokenizer::iterator subtoken_it = subtokens.begin(); + + // Must have a token + if (subtoken_it == subtokens.end()) return false; + std::string subtoken = *subtoken_it; + + // Must exactly equal "max-age" + LLStringUtil::trim(subtoken); + if (subtoken != MAX_AGE) return false; + + // Must have another token + ++subtoken_it; + if (subtoken_it == subtokens.end()) return false; + subtoken = *subtoken_it; + + // Must be a valid integer + // *NOTE: atoi() returns 0 for invalid values, so we have to + // check the string first. + // *TODO: Do servers ever send "0000" for zero? We don't handle it + LLStringUtil::trim(subtoken); + if (subtoken == "0") + { + *max_age = 0; + return true; + } + S32 val = atoi( subtoken.c_str() ); + if (val > 0 && val < S32_MAX) + { + *max_age = val; + return true; + } + return false; + } + } + return false; + } + + + void importFile(std::istream& istr) + { + LLSD data; + S32 parse_count = LLSDSerialize::fromXMLDocument(data, istr); + if(parse_count < 1) return; + + LLSD experiences = data["experiences"]; + + LLUUID public_key; + LLSD::map_const_iterator it = experiences.beginMap(); + for(; it != experiences.endMap() ; ++it) + { + public_key.set(it->first); + sCache[public_key]=it->second; + } + + LL_DEBUGS("ExperienceCache") << "importFile() loaded " << sCache.size() << LL_ENDL; + } + + void exportFile(std::ostream& ostr) + { + LLSD experiences; + + cache_t::const_iterator it =sCache.begin(); + for( ; it != sCache.end() ; ++it) + { + if(!it->second.has(EXPERIENCE_ID) || it->second[EXPERIENCE_ID].asUUID().isNull() || + it->second.has("DoesNotExist") || (it->second.has(PROPERTIES) && it->second[PROPERTIES].asInteger() & PROPERTY_INVALID)) + continue; + + experiences[it->first.asString()] = it->second; + } + + LLSD data; + data["experiences"] = experiences; + + LLSDSerialize::toPrettyXML(data, ostr); + } + + class LLExperienceResponder : public LLHTTPClient::Responder + { + public: + LLExperienceResponder(const ask_queue_t& keys) + :mKeys(keys) + { + + } + + /*virtual*/ void httpCompleted() + { + LLSD experiences = getContent()["experience_keys"]; + LLSD::array_const_iterator it = experiences.beginArray(); + for( /**/ ; it != experiences.endArray(); ++it) + { + const LLSD& row = *it; + LLUUID public_key = row[EXPERIENCE_ID].asUUID(); + + + LL_DEBUGS("ExperienceCache") << "Received result for " << public_key + << " display '" << row[LLExperienceCache::NAME].asString() << "'" << LL_ENDL ; + + processExperience(public_key, row); + } + + LLSD error_ids = getContent()["error_ids"]; + LLSD::array_const_iterator errIt = error_ids.beginArray(); + for( /**/ ; errIt != error_ids.endArray() ; ++errIt ) + { + LLUUID id = errIt->asUUID(); + LLSD exp; + exp[EXPIRES]=DEFAULT_EXPIRATION; + exp[EXPERIENCE_ID] = id; + exp[PROPERTIES]=PROPERTY_INVALID; + exp[MISSING]=true; + exp[QUOTA] = DEFAULT_QUOTA; + + processExperience(id, exp); + LL_WARNS("ExperienceCache") << "LLExperienceResponder::result() error result for " << id << LL_ENDL ; + } + + LL_DEBUGS("ExperienceCache") << sCache.size() << " cached experiences" << LL_ENDL; + } + + /*virtual*/ void httpFailure() + { + LL_WARNS("ExperienceCache") << "Request failed "<<getStatus()<<" "<<getReason()<< LL_ENDL; + // We're going to construct a dummy record and cache it for a while, + // either briefly for a 503 Service Unavailable, or longer for other + // errors. + F64 retry_timestamp = errorRetryTimestamp(getStatus()); + + + // Add dummy records for all agent IDs in this request + ask_queue_t::const_iterator it = mKeys.begin(); + for ( ; it != mKeys.end(); ++it) + { + + LLSD exp = get(it->first); + //leave the properties alone if we already have a cache entry for this xp + if(exp.isUndefined()) + { + exp[PROPERTIES]=PROPERTY_INVALID; + } + exp[EXPIRES]=retry_timestamp; + exp[EXPERIENCE_ID] = it->first; + exp["key_type"] = it->second; + exp["uuid"] = it->first; + exp["error"] = (LLSD::Integer)getStatus(); + exp[QUOTA] = DEFAULT_QUOTA; + + LLExperienceCache::processExperience(it->first, exp); + } + + } + + // Return time to retry a request that generated an error, based on + // error type and headers. Return value is seconds-since-epoch. + F64 errorRetryTimestamp(S32 status) + { + + // Retry-After takes priority + LLSD retry_after = getResponseHeaders()["retry-after"]; + if (retry_after.isDefined()) + { + // We only support the delta-seconds type + S32 delta_seconds = retry_after.asInteger(); + if (delta_seconds > 0) + { + // ...valid delta-seconds + return F64(delta_seconds); + } + } + + // If no Retry-After, look for Cache-Control max-age + F64 expires = 0.0; + if (LLExperienceCache::expirationFromCacheControl(getResponseHeaders(), &expires)) + { + return expires; + } + + // No information in header, make a guess + if (status == 503) + { + // ...service unavailable, retry soon + const F64 SERVICE_UNAVAILABLE_DELAY = 600.0; // 10 min + return SERVICE_UNAVAILABLE_DELAY; + } + else if (status == 499) + { + // ...we were probably too busy, retry quickly + const F64 BUSY_DELAY = 10.0; // 10 seconds + return BUSY_DELAY; + + } + else + { + // ...other unexpected error + const F64 DEFAULT_DELAY = 3600.0; // 1 hour + return DEFAULT_DELAY; + } + } + + private: + ask_queue_t mKeys; + }; + + void requestExperiences() + { + if(sAskQueue.empty() || sLookupURL.empty()) + return; + + F64 now = LLFrameTimer::getTotalSeconds(); + + const U32 EXP_URL_SEND_THRESHOLD = 3000; + const U32 PAGE_SIZE = EXP_URL_SEND_THRESHOLD/UUID_STR_LENGTH; + + std::ostringstream ostr; + + ask_queue_t keys; + + ostr << sLookupURL << "?page_size=" << PAGE_SIZE; + + + int request_count = 0; + while(!sAskQueue.empty() && request_count < sMaximumLookups) + { + ask_queue_t::iterator it = sAskQueue.begin(); + const LLUUID& key = it->first; + const std::string& key_type = it->second; + + ostr << '&' << key_type << '=' << key.asString() ; + + keys[key]=key_type; + request_count++; + + sPendingQueue[key] = now; + + if(ostr.tellp() > EXP_URL_SEND_THRESHOLD) + { + LL_DEBUGS("ExperienceCache") << "requestExperiences() query: " << ostr.str() << LL_ENDL; + LLHTTPClient::get(ostr.str(), new LLExperienceResponder(keys)); + ostr.clear(); + ostr.str(sLookupURL); + ostr << "?page_size=" << PAGE_SIZE; + keys.clear(); + } + sAskQueue.erase(it); + } + + if(ostr.tellp() > sLookupURL.size()) + { + LL_DEBUGS("ExperienceCache") << "requestExperiences() query 2: " << ostr.str() << LL_ENDL; + LLHTTPClient::get(ostr.str(), new LLExperienceResponder(keys)); + } + } + + bool isRequestPending(const LLUUID& public_key) + { + bool isPending = false; + const F64 PENDING_TIMEOUT_SECS = 5.0 * 60.0; + + pending_queue_t::const_iterator it = sPendingQueue.find(public_key); + + if(it != sPendingQueue.end()) + { + F64 expire_time = LLFrameTimer::getTotalSeconds() - PENDING_TIMEOUT_SECS; + isPending = (it->second > expire_time); + } + + return isPending; + } + + + void setLookupURL( const std::string& lookup_url ) + { + sLookupURL = lookup_url; + if(!sLookupURL.empty()) + { + sLookupURL += "id/"; + } + } + + bool hasLookupURL() + { + return !sLookupURL.empty(); + } + + void idle() + { + + const F32 SECS_BETWEEN_REQUESTS = 0.1f; + if (!sRequestTimer.checkExpirationAndReset(SECS_BETWEEN_REQUESTS)) + { + return; + } + + // Must be large relative to above + const F32 ERASE_EXPIRED_TIMEOUT = 60.f; // seconds + if (sEraseExpiredTimer.checkExpirationAndReset(ERASE_EXPIRED_TIMEOUT)) + { + eraseExpired(); + } + + + if(!sAskQueue.empty()) + { + requestExperiences(); + } + } + + void erase( const LLUUID& key ) + { + cache_t::iterator it = sCache.find(key); + + if(it != sCache.end()) + { + sCache.erase(it); + } + } + + void eraseExpired() + { + F64 now = LLFrameTimer::getTotalSeconds(); + cache_t::iterator it = sCache.begin(); + while (it != sCache.end()) + { + cache_t::iterator cur = it; + LLSD& exp = cur->second; + ++it; + + if(exp.has(EXPIRES) && exp[EXPIRES].asReal() < now) + { + if(!exp.has(EXPERIENCE_ID)) + { + LL_WARNS("ExperienceCache") << "Removing experience with no id " << LL_ENDL ; + sCache.erase(cur); + } + else + { + LLUUID id = exp[EXPERIENCE_ID].asUUID(); + LLUUID private_key = exp.has(LLExperienceCache::PRIVATE_KEY) ? exp[LLExperienceCache::PRIVATE_KEY].asUUID():LLUUID::null; + if(private_key.notNull() || !exp.has("DoesNotExist")) + { + fetch(id, true); + } + else + { + LL_WARNS("ExperienceCache") << "Removing invalid experience " << id << LL_ENDL ; + sCache.erase(cur); + } + } + } + } + } + + + bool fetch( const LLUUID& key, bool refresh/* = true*/ ) + { + if(!key.isNull() && !isRequestPending(key) && (refresh || sCache.find(key)==sCache.end())) + { + LL_DEBUGS("ExperienceCache") << " queue request for " << EXPERIENCE_ID << " " << key << LL_ENDL ; + sAskQueue[key]=EXPERIENCE_ID; + + return true; + } + return false; + } + + void insert(const LLSD& experience_data ) + { + if(experience_data.has(EXPERIENCE_ID)) + { + processExperience(experience_data[EXPERIENCE_ID].asUUID(), experience_data); + } + else + { + LL_WARNS("ExperienceCache") << ": Ignoring cache insert of experience which is missing " << EXPERIENCE_ID << LL_ENDL; + } + } + static LLSD empty; + const LLSD& get(const LLUUID& key) + { + if(key.isNull()) return empty; + cache_t::const_iterator it = sCache.find(key); + + if (it != sCache.end()) + { + return it->second; + } + + fetch(key); + + return empty; + } + void get( const LLUUID& key, callback_slot_t slot ) + { + if(key.isNull()) return; + + cache_t::const_iterator it = sCache.find(key); + if (it != sCache.end()) + { + // ...name already exists in cache, fire callback now + callback_signal_t signal; + signal.connect(slot); + + signal(it->second); + return; + } + + fetch(key); + + // always store additional callback, even if request is pending + signal_map_t::iterator sig_it = sSignalMap.find(key); + if (sig_it == sSignalMap.end()) + { + // ...new callback for this id + callback_signal_t* signal = new callback_signal_t(); + signal->connect(slot); + sSignalMap[key] = signal; + } + else + { + // ...existing callback, bind additional slot + callback_signal_t* signal = sig_it->second; + signal->connect(slot); + } + } + +} + + +void LLExperienceCache::mapKeys( const LLSD& legacyKeys ) +{ + LLSD::array_const_iterator exp = legacyKeys.beginArray(); + for(/**/ ; exp != legacyKeys.endArray() ; ++exp) + { + if(exp->has(LLExperienceCache::EXPERIENCE_ID) && exp->has(LLExperienceCache::PRIVATE_KEY)) + { + privateToPublicKeyMap[(*exp)[LLExperienceCache::PRIVATE_KEY].asUUID()]=(*exp)[LLExperienceCache::EXPERIENCE_ID].asUUID(); + } + } +} + + +LLUUID LLExperienceCache::getExperienceId(const LLUUID& private_key, bool null_if_not_found) +{ + if (private_key.isNull()) + return LLUUID::null; + + KeyMap::const_iterator it=privateToPublicKeyMap.find(private_key); + if(it == privateToPublicKeyMap.end()) + { + if(null_if_not_found) + { + return LLUUID::null; + } + return private_key; + } + LL_WARNS("LLExperience") << "converted private key " << private_key << " to experience_id " << it->second << LL_ENDL; + return it->second; +} diff --git a/indra/llmessage/llexperiencecache.h b/indra/llmessage/llexperiencecache.h new file mode 100644 index 0000000000..e669ee888e --- /dev/null +++ b/indra/llmessage/llexperiencecache.h @@ -0,0 +1,104 @@ +/** + * @file llexperiencecache.h + * @brief Caches information relating to experience keys + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2012, 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_LLEXPERIENCECACHE_H +#define LL_LLEXPERIENCECACHE_H + +#include "linden_common.h" +#include <boost/signals2.hpp> + +class LLSD; +class LLUUID; + + + +namespace LLExperienceCache +{ + const std::string PRIVATE_KEY = "private_id"; + const std::string MISSING = "DoesNotExist"; + + const std::string AGENT_ID = "agent_id"; + const std::string GROUP_ID = "group_id"; + const std::string EXPERIENCE_ID = "public_id"; + const std::string NAME = "name"; + const std::string PROPERTIES = "properties"; + const std::string EXPIRES = "expiration"; + const std::string DESCRIPTION = "description"; + const std::string QUOTA = "quota"; + const std::string MATURITY = "maturity"; + const std::string METADATA = "extended_metadata"; + const std::string SLURL = "slurl"; + + + // should be in sync with experience-api/experiences/models.py + const int PROPERTY_INVALID = 1 << 0; + const int PROPERTY_PRIVILEGED = 1 << 3; + const int PROPERTY_GRID = 1 << 4; + const int PROPERTY_PRIVATE = 1 << 5; + const int PROPERTY_DISABLED = 1 << 6; + const int PROPERTY_SUSPENDED = 1 << 7; + + + // default values + const static F64 DEFAULT_EXPIRATION = 600.0; + const static S32 DEFAULT_QUOTA = 128; // this is megabytes + + // Callback types for get() below + typedef boost::signals2::signal<void (const LLSD& experience)> + callback_signal_t; + typedef callback_signal_t::slot_type callback_slot_t; + typedef std::map<LLUUID, LLSD> cache_t; + + + void setLookupURL(const std::string& lookup_url); + bool hasLookupURL(); + + void setMaximumLookups(int maximumLookups); + + void idle(); + void exportFile(std::ostream& ostr); + void importFile(std::istream& istr); + void initClass(); + void bootstrap(const LLSD& legacyKeys, int initialExpiration); + + void erase(const LLUUID& key); + bool fetch(const LLUUID& key, bool refresh=false); + void insert(const LLSD& experience_data); + const LLSD& get(const LLUUID& key); + + // If name information is in cache, callback will be called immediately. + void get(const LLUUID& key, callback_slot_t slot); + + const cache_t& getCached(); + + // maps an experience private key to the experience id + LLUUID getExperienceId(const LLUUID& private_key, bool null_if_not_found=false); + +}; + +#endif // LL_LLEXPERIENCECACHE_H diff --git a/indra/llmessage/llextendedstatus.h b/indra/llmessage/llextendedstatus.h index 8ce173d1ff..8ce173d1ff 100755..100644 --- a/indra/llmessage/llextendedstatus.h +++ b/indra/llmessage/llextendedstatus.h diff --git a/indra/llmessage/llfiltersd2xmlrpc.cpp b/indra/llmessage/llfiltersd2xmlrpc.cpp index d3e195789b..d3e195789b 100755..100644 --- a/indra/llmessage/llfiltersd2xmlrpc.cpp +++ b/indra/llmessage/llfiltersd2xmlrpc.cpp diff --git a/indra/llmessage/llfiltersd2xmlrpc.h b/indra/llmessage/llfiltersd2xmlrpc.h index 0c9a0dc95b..0c9a0dc95b 100755..100644 --- a/indra/llmessage/llfiltersd2xmlrpc.h +++ b/indra/llmessage/llfiltersd2xmlrpc.h diff --git a/indra/llmessage/llfollowcamparams.h b/indra/llmessage/llfollowcamparams.h index 25208031db..25208031db 100755..100644 --- a/indra/llmessage/llfollowcamparams.h +++ b/indra/llmessage/llfollowcamparams.h diff --git a/indra/llmessage/llhost.cpp b/indra/llmessage/llhost.cpp index 63c15f0d5e..63c15f0d5e 100755..100644 --- a/indra/llmessage/llhost.cpp +++ b/indra/llmessage/llhost.cpp diff --git a/indra/llmessage/llhost.h b/indra/llmessage/llhost.h index 0cf52a4151..0cf52a4151 100755..100644 --- a/indra/llmessage/llhost.h +++ b/indra/llmessage/llhost.h diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index e202154445..e202154445 100755..100644 --- a/indra/llmessage/llhttpassetstorage.cpp +++ b/indra/llmessage/llhttpassetstorage.cpp diff --git a/indra/llmessage/llhttpassetstorage.h b/indra/llmessage/llhttpassetstorage.h index 783e95cac6..783e95cac6 100755..100644 --- a/indra/llmessage/llhttpassetstorage.h +++ b/indra/llmessage/llhttpassetstorage.h diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index f8db3dded2..60f17e6870 100755..100644 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -572,6 +572,17 @@ void LLHTTPClient::patch( request(url, HTTP_PATCH, new LLSDInjector(body), responder, timeout, headers); } +void LLHTTPClient::putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers, + const F32 timeout) +{ + request(url, HTTP_PUT, new RawInjector(data, size), responder, timeout, headers); +} + void LLHTTPClient::post( const std::string& url, const LLSD& body, diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h index b18258fd7b..fd48b4a743 100755..100644 --- a/indra/llmessage/llhttpclient.h +++ b/indra/llmessage/llhttpclient.h @@ -79,6 +79,14 @@ public: ResponderPtr, const LLSD& headers = LLSD(), const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers = LLSD(), + const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void patch( const std::string& url, diff --git a/indra/llmessage/llhttpclientadapter.cpp b/indra/llmessage/llhttpclientadapter.cpp index b56a804f94..b56a804f94 100755..100644 --- a/indra/llmessage/llhttpclientadapter.cpp +++ b/indra/llmessage/llhttpclientadapter.cpp diff --git a/indra/llmessage/llhttpclientadapter.h b/indra/llmessage/llhttpclientadapter.h index 270282c66f..270282c66f 100755..100644 --- a/indra/llmessage/llhttpclientadapter.h +++ b/indra/llmessage/llhttpclientadapter.h diff --git a/indra/llmessage/llhttpclientinterface.h b/indra/llmessage/llhttpclientinterface.h index 12a3857a61..12a3857a61 100755..100644 --- a/indra/llmessage/llhttpclientinterface.h +++ b/indra/llmessage/llhttpclientinterface.h diff --git a/indra/llmessage/llhttpconstants.cpp b/indra/llmessage/llhttpconstants.cpp index 32f76f0d70..32f76f0d70 100755..100644 --- a/indra/llmessage/llhttpconstants.cpp +++ b/indra/llmessage/llhttpconstants.cpp diff --git a/indra/llmessage/llhttpconstants.h b/indra/llmessage/llhttpconstants.h index d6bcbd3c19..d6bcbd3c19 100755..100644 --- a/indra/llmessage/llhttpconstants.h +++ b/indra/llmessage/llhttpconstants.h diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp index f235965879..f235965879 100755..100644 --- a/indra/llmessage/llhttpnode.cpp +++ b/indra/llmessage/llhttpnode.cpp diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h index 1144d88be1..1144d88be1 100755..100644 --- a/indra/llmessage/llhttpnode.h +++ b/indra/llmessage/llhttpnode.h diff --git a/indra/llmessage/llhttpnodeadapter.h b/indra/llmessage/llhttpnodeadapter.h index 22984c4478..22984c4478 100755..100644 --- a/indra/llmessage/llhttpnodeadapter.h +++ b/indra/llmessage/llhttpnodeadapter.h diff --git a/indra/llmessage/llhttpsender.cpp b/indra/llmessage/llhttpsender.cpp index 5363088d79..5363088d79 100755..100644 --- a/indra/llmessage/llhttpsender.cpp +++ b/indra/llmessage/llhttpsender.cpp diff --git a/indra/llmessage/llhttpsender.h b/indra/llmessage/llhttpsender.h index ff8fa2f95b..ff8fa2f95b 100755..100644 --- a/indra/llmessage/llhttpsender.h +++ b/indra/llmessage/llhttpsender.h diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp index b7f3e6e4f7..b7f3e6e4f7 100755..100644 --- a/indra/llmessage/llinstantmessage.cpp +++ b/indra/llmessage/llinstantmessage.cpp diff --git a/indra/llmessage/llinstantmessage.h b/indra/llmessage/llinstantmessage.h index f7118f8ccf..f7118f8ccf 100755..100644 --- a/indra/llmessage/llinstantmessage.h +++ b/indra/llmessage/llinstantmessage.h diff --git a/indra/llmessage/llinvite.h b/indra/llmessage/llinvite.h index e5d573c1e3..e5d573c1e3 100755..100644 --- a/indra/llmessage/llinvite.h +++ b/indra/llmessage/llinvite.h diff --git a/indra/llmessage/lliobuffer.cpp b/indra/llmessage/lliobuffer.cpp index bbd7b8777d..bbd7b8777d 100755..100644 --- a/indra/llmessage/lliobuffer.cpp +++ b/indra/llmessage/lliobuffer.cpp diff --git a/indra/llmessage/lliobuffer.h b/indra/llmessage/lliobuffer.h index 3349848947..3349848947 100755..100644 --- a/indra/llmessage/lliobuffer.h +++ b/indra/llmessage/lliobuffer.h diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index d9042fa8b0..d9042fa8b0 100755..100644 --- a/indra/llmessage/lliohttpserver.cpp +++ b/indra/llmessage/lliohttpserver.cpp diff --git a/indra/llmessage/lliohttpserver.h b/indra/llmessage/lliohttpserver.h index a23eafe58a..a23eafe58a 100755..100644 --- a/indra/llmessage/lliohttpserver.h +++ b/indra/llmessage/lliohttpserver.h diff --git a/indra/llmessage/lliopipe.cpp b/indra/llmessage/lliopipe.cpp index 4676a9a8f0..4676a9a8f0 100755..100644 --- a/indra/llmessage/lliopipe.cpp +++ b/indra/llmessage/lliopipe.cpp diff --git a/indra/llmessage/lliopipe.h b/indra/llmessage/lliopipe.h index 7fd4cee8ba..7fd4cee8ba 100755..100644 --- a/indra/llmessage/lliopipe.h +++ b/indra/llmessage/lliopipe.h diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp index b7460df508..b7460df508 100755..100644 --- a/indra/llmessage/lliosocket.cpp +++ b/indra/llmessage/lliosocket.cpp diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h index f840f0275c..f840f0275c 100755..100644 --- a/indra/llmessage/lliosocket.h +++ b/indra/llmessage/lliosocket.h diff --git a/indra/llmessage/llioutil.cpp b/indra/llmessage/llioutil.cpp index b8443c0600..b8443c0600 100755..100644 --- a/indra/llmessage/llioutil.cpp +++ b/indra/llmessage/llioutil.cpp diff --git a/indra/llmessage/llioutil.h b/indra/llmessage/llioutil.h index e8d245f530..e8d245f530 100755..100644 --- a/indra/llmessage/llioutil.h +++ b/indra/llmessage/llioutil.h diff --git a/indra/llmessage/llloginflags.h b/indra/llmessage/llloginflags.h index 45833fc914..45833fc914 100755..100644 --- a/indra/llmessage/llloginflags.h +++ b/indra/llmessage/llloginflags.h diff --git a/indra/llmessage/llmail.cpp b/indra/llmessage/llmail.cpp index 134154aa6c..134154aa6c 100755..100644 --- a/indra/llmessage/llmail.cpp +++ b/indra/llmessage/llmail.cpp diff --git a/indra/llmessage/llmail.h b/indra/llmessage/llmail.h index 3791714363..3791714363 100755..100644 --- a/indra/llmessage/llmail.h +++ b/indra/llmessage/llmail.h diff --git a/indra/llmessage/llmessagebuilder.cpp b/indra/llmessage/llmessagebuilder.cpp index e2ed968a57..e2ed968a57 100755..100644 --- a/indra/llmessage/llmessagebuilder.cpp +++ b/indra/llmessage/llmessagebuilder.cpp diff --git a/indra/llmessage/llmessagebuilder.h b/indra/llmessage/llmessagebuilder.h index bf5be929f2..bf5be929f2 100755..100644 --- a/indra/llmessage/llmessagebuilder.h +++ b/indra/llmessage/llmessagebuilder.h diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp index 64e79d6767..64e79d6767 100755..100644 --- a/indra/llmessage/llmessageconfig.cpp +++ b/indra/llmessage/llmessageconfig.cpp diff --git a/indra/llmessage/llmessageconfig.h b/indra/llmessage/llmessageconfig.h index 1b39c386ca..1b39c386ca 100755..100644 --- a/indra/llmessage/llmessageconfig.h +++ b/indra/llmessage/llmessageconfig.h diff --git a/indra/llmessage/llmessagereader.cpp b/indra/llmessage/llmessagereader.cpp index 1d1bee7f59..1d1bee7f59 100755..100644 --- a/indra/llmessage/llmessagereader.cpp +++ b/indra/llmessage/llmessagereader.cpp diff --git a/indra/llmessage/llmessagereader.h b/indra/llmessage/llmessagereader.h index 3b77a6bfe4..3b77a6bfe4 100755..100644 --- a/indra/llmessage/llmessagereader.h +++ b/indra/llmessage/llmessagereader.h diff --git a/indra/llmessage/llmessagesenderinterface.h b/indra/llmessage/llmessagesenderinterface.h index ac0f9f7edb..ac0f9f7edb 100755..100644 --- a/indra/llmessage/llmessagesenderinterface.h +++ b/indra/llmessage/llmessagesenderinterface.h diff --git a/indra/llmessage/llmessagetemplate.cpp b/indra/llmessage/llmessagetemplate.cpp index c4c7e66703..c4c7e66703 100755..100644 --- a/indra/llmessage/llmessagetemplate.cpp +++ b/indra/llmessage/llmessagetemplate.cpp diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index a44e16fc3a..a44e16fc3a 100755..100644 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp index 1f7c09dbe5..1f7c09dbe5 100755..100644 --- a/indra/llmessage/llmessagetemplateparser.cpp +++ b/indra/llmessage/llmessagetemplateparser.cpp diff --git a/indra/llmessage/llmessagetemplateparser.h b/indra/llmessage/llmessagetemplateparser.h index 372a2b292d..372a2b292d 100755..100644 --- a/indra/llmessage/llmessagetemplateparser.h +++ b/indra/llmessage/llmessagetemplateparser.h diff --git a/indra/llmessage/llmessagethrottle.cpp b/indra/llmessage/llmessagethrottle.cpp index 579d6d7187..579d6d7187 100755..100644 --- a/indra/llmessage/llmessagethrottle.cpp +++ b/indra/llmessage/llmessagethrottle.cpp diff --git a/indra/llmessage/llmessagethrottle.h b/indra/llmessage/llmessagethrottle.h index 4ea84f712a..4ea84f712a 100755..100644 --- a/indra/llmessage/llmessagethrottle.h +++ b/indra/llmessage/llmessagethrottle.h diff --git a/indra/llmessage/llmsgvariabletype.h b/indra/llmessage/llmsgvariabletype.h index c4de822b46..c4de822b46 100755..100644 --- a/indra/llmessage/llmsgvariabletype.h +++ b/indra/llmessage/llmsgvariabletype.h diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp index c51883ee3d..c51883ee3d 100755..100644 --- a/indra/llmessage/llnamevalue.cpp +++ b/indra/llmessage/llnamevalue.cpp diff --git a/indra/llmessage/llnamevalue.h b/indra/llmessage/llnamevalue.h index f8b556b5fe..f8b556b5fe 100755..100644 --- a/indra/llmessage/llnamevalue.h +++ b/indra/llmessage/llnamevalue.h diff --git a/indra/llmessage/llnullcipher.cpp b/indra/llmessage/llnullcipher.cpp index b32e7e6fa6..b32e7e6fa6 100755..100644 --- a/indra/llmessage/llnullcipher.cpp +++ b/indra/llmessage/llnullcipher.cpp diff --git a/indra/llmessage/llnullcipher.h b/indra/llmessage/llnullcipher.h index a9f9a1ce03..a9f9a1ce03 100755..100644 --- a/indra/llmessage/llnullcipher.h +++ b/indra/llmessage/llnullcipher.h diff --git a/indra/llmessage/llpacketack.cpp b/indra/llmessage/llpacketack.cpp index c3c022c297..c3c022c297 100755..100644 --- a/indra/llmessage/llpacketack.cpp +++ b/indra/llmessage/llpacketack.cpp diff --git a/indra/llmessage/llpacketack.h b/indra/llmessage/llpacketack.h index f0ed923f19..f0ed923f19 100755..100644 --- a/indra/llmessage/llpacketack.h +++ b/indra/llmessage/llpacketack.h diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp index ccf991b1a7..ccf991b1a7 100755..100644 --- a/indra/llmessage/llpacketbuffer.cpp +++ b/indra/llmessage/llpacketbuffer.cpp diff --git a/indra/llmessage/llpacketbuffer.h b/indra/llmessage/llpacketbuffer.h index 14b6f9d5d2..14b6f9d5d2 100755..100644 --- a/indra/llmessage/llpacketbuffer.h +++ b/indra/llmessage/llpacketbuffer.h diff --git a/indra/llmessage/llpacketring.cpp b/indra/llmessage/llpacketring.cpp index 687212ea10..687212ea10 100755..100644 --- a/indra/llmessage/llpacketring.cpp +++ b/indra/llmessage/llpacketring.cpp diff --git a/indra/llmessage/llpacketring.h b/indra/llmessage/llpacketring.h index b214271e78..b214271e78 100755..100644 --- a/indra/llmessage/llpacketring.h +++ b/indra/llmessage/llpacketring.h diff --git a/indra/llmessage/llpartdata.cpp b/indra/llmessage/llpartdata.cpp index 53aa35c0f9..53aa35c0f9 100755..100644 --- a/indra/llmessage/llpartdata.cpp +++ b/indra/llmessage/llpartdata.cpp diff --git a/indra/llmessage/llpartdata.h b/indra/llmessage/llpartdata.h index ed5c1a6ac7..ed5c1a6ac7 100755..100644 --- a/indra/llmessage/llpartdata.h +++ b/indra/llmessage/llpartdata.h diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp index 9b8d19cc3e..9b8d19cc3e 100755..100644 --- a/indra/llmessage/llproxy.cpp +++ b/indra/llmessage/llproxy.cpp diff --git a/indra/llmessage/llproxy.h b/indra/llmessage/llproxy.h index a919370540..a919370540 100755..100644 --- a/indra/llmessage/llproxy.h +++ b/indra/llmessage/llproxy.h diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp index 506ccc98a4..506ccc98a4 100755..100644 --- a/indra/llmessage/llpumpio.cpp +++ b/indra/llmessage/llpumpio.cpp diff --git a/indra/llmessage/llpumpio.h b/indra/llmessage/llpumpio.h index d2c5d37571..d2c5d37571 100755..100644 --- a/indra/llmessage/llpumpio.h +++ b/indra/llmessage/llpumpio.h diff --git a/indra/llmessage/llqueryflags.h b/indra/llmessage/llqueryflags.h index 14a62de04f..14a62de04f 100755..100644 --- a/indra/llmessage/llqueryflags.h +++ b/indra/llmessage/llqueryflags.h diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h index 40d7b04a90..eb0c4e6d1e 100755..100644 --- a/indra/llmessage/llregionflags.h +++ b/indra/llmessage/llregionflags.h @@ -148,19 +148,20 @@ const U32 ESTATE_ACCESS_ALL = ESTATE_ACCESS_ALLOWED_AGENTS | ESTATE_ACCESS_BANNED_AGENTS | ESTATE_ACCESS_MANAGERS; -// for EstateOwnerRequest, estateaccessdelta message -const U32 ESTATE_ACCESS_APPLY_TO_ALL_ESTATES = 1 << 0; -const U32 ESTATE_ACCESS_APPLY_TO_MANAGED_ESTATES = 1 << 1; - -const U32 ESTATE_ACCESS_ALLOWED_AGENT_ADD = 1 << 2; -const U32 ESTATE_ACCESS_ALLOWED_AGENT_REMOVE = 1 << 3; -const U32 ESTATE_ACCESS_ALLOWED_GROUP_ADD = 1 << 4; -const U32 ESTATE_ACCESS_ALLOWED_GROUP_REMOVE = 1 << 5; -const U32 ESTATE_ACCESS_BANNED_AGENT_ADD = 1 << 6; -const U32 ESTATE_ACCESS_BANNED_AGENT_REMOVE = 1 << 7; -const U32 ESTATE_ACCESS_MANAGER_ADD = 1 << 8; -const U32 ESTATE_ACCESS_MANAGER_REMOVE = 1 << 9; -const U32 ESTATE_ACCESS_NO_REPLY = 1 << 10; +// for EstateOwnerRequest, estateaccessdelta, estateexperiencedelta messages +const U32 ESTATE_ACCESS_APPLY_TO_ALL_ESTATES = 1U << 0; +const U32 ESTATE_ACCESS_APPLY_TO_MANAGED_ESTATES = 1U << 1; + +const U32 ESTATE_ACCESS_ALLOWED_AGENT_ADD = 1U << 2; +const U32 ESTATE_ACCESS_ALLOWED_AGENT_REMOVE = 1U << 3; +const U32 ESTATE_ACCESS_ALLOWED_GROUP_ADD = 1U << 4; +const U32 ESTATE_ACCESS_ALLOWED_GROUP_REMOVE = 1U << 5; +const U32 ESTATE_ACCESS_BANNED_AGENT_ADD = 1U << 6; +const U32 ESTATE_ACCESS_BANNED_AGENT_REMOVE = 1U << 7; +const U32 ESTATE_ACCESS_MANAGER_ADD = 1U << 8; +const U32 ESTATE_ACCESS_MANAGER_REMOVE = 1U << 9; +const U32 ESTATE_ACCESS_NO_REPLY = 1U << 10; +const U32 ESTATE_ACCESS_FAILED_BAN_ESTATE_MANAGER = 1U << 11; const S32 ESTATE_MAX_MANAGERS = 10; const S32 ESTATE_MAX_ACCESS_IDS = 500; // max for access, banned @@ -171,6 +172,26 @@ const U32 SWD_OTHERS_LAND_ONLY = (1 << 0); const U32 SWD_ALWAYS_RETURN_OBJECTS = (1 << 1); const U32 SWD_SCRIPTED_ONLY = (1 << 2); +// Controls experience key validity in the estate +const U32 EXPERIENCE_KEY_TYPE_NONE = 0; +const U32 EXPERIENCE_KEY_TYPE_BLOCKED = 1; +const U32 EXPERIENCE_KEY_TYPE_ALLOWED = 2; +const U32 EXPERIENCE_KEY_TYPE_TRUSTED = 3; + +const U32 EXPERIENCE_KEY_TYPE_FIRST = EXPERIENCE_KEY_TYPE_BLOCKED; +const U32 EXPERIENCE_KEY_TYPE_LAST = EXPERIENCE_KEY_TYPE_TRUSTED; + +// +const U32 ESTATE_EXPERIENCE_TRUSTED_ADD = 1U << 2; +const U32 ESTATE_EXPERIENCE_TRUSTED_REMOVE = 1U << 3; +const U32 ESTATE_EXPERIENCE_ALLOWED_ADD = 1U << 4; +const U32 ESTATE_EXPERIENCE_ALLOWED_REMOVE = 1U << 5; +const U32 ESTATE_EXPERIENCE_BLOCKED_ADD = 1U << 6; +const U32 ESTATE_EXPERIENCE_BLOCKED_REMOVE = 1U << 7; + +const S32 ESTATE_MAX_EXPERIENCE_IDS = 8; + + #endif diff --git a/indra/llmessage/llregionhandle.h b/indra/llmessage/llregionhandle.h index 085757dcbc..085757dcbc 100755..100644 --- a/indra/llmessage/llregionhandle.h +++ b/indra/llmessage/llregionhandle.h diff --git a/indra/llmessage/llsdappservices.cpp b/indra/llmessage/llsdappservices.cpp index 4ca45267bd..4ca45267bd 100755..100644 --- a/indra/llmessage/llsdappservices.cpp +++ b/indra/llmessage/llsdappservices.cpp diff --git a/indra/llmessage/llsdappservices.h b/indra/llmessage/llsdappservices.h index e76e20cea9..e76e20cea9 100755..100644 --- a/indra/llmessage/llsdappservices.h +++ b/indra/llmessage/llsdappservices.h diff --git a/indra/llmessage/llsdhttpserver.cpp b/indra/llmessage/llsdhttpserver.cpp index 8ac6b3cb12..8ac6b3cb12 100755..100644 --- a/indra/llmessage/llsdhttpserver.cpp +++ b/indra/llmessage/llsdhttpserver.cpp diff --git a/indra/llmessage/llsdhttpserver.h b/indra/llmessage/llsdhttpserver.h index 39f9204604..39f9204604 100755..100644 --- a/indra/llmessage/llsdhttpserver.h +++ b/indra/llmessage/llsdhttpserver.h diff --git a/indra/llmessage/llsdmessage.cpp b/indra/llmessage/llsdmessage.cpp index 61fcc5dd2f..61fcc5dd2f 100755..100644 --- a/indra/llmessage/llsdmessage.cpp +++ b/indra/llmessage/llsdmessage.cpp diff --git a/indra/llmessage/llsdmessage.h b/indra/llmessage/llsdmessage.h index e5d532d6a4..e5d532d6a4 100755..100644 --- a/indra/llmessage/llsdmessage.h +++ b/indra/llmessage/llsdmessage.h diff --git a/indra/llmessage/llsdmessagebuilder.cpp b/indra/llmessage/llsdmessagebuilder.cpp index 49456c71ed..49456c71ed 100755..100644 --- a/indra/llmessage/llsdmessagebuilder.cpp +++ b/indra/llmessage/llsdmessagebuilder.cpp diff --git a/indra/llmessage/llsdmessagebuilder.h b/indra/llmessage/llsdmessagebuilder.h index 9c7c1bfde3..9c7c1bfde3 100755..100644 --- a/indra/llmessage/llsdmessagebuilder.h +++ b/indra/llmessage/llsdmessagebuilder.h diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp index b729ebafa9..b729ebafa9 100755..100644 --- a/indra/llmessage/llsdmessagereader.cpp +++ b/indra/llmessage/llsdmessagereader.cpp diff --git a/indra/llmessage/llsdmessagereader.h b/indra/llmessage/llsdmessagereader.h index 3b3d7fbfbe..3b3d7fbfbe 100755..100644 --- a/indra/llmessage/llsdmessagereader.h +++ b/indra/llmessage/llsdmessagereader.h diff --git a/indra/llmessage/llsdrpcclient.cpp b/indra/llmessage/llsdrpcclient.cpp index eb773ceb3a..eb773ceb3a 100755..100644 --- a/indra/llmessage/llsdrpcclient.cpp +++ b/indra/llmessage/llsdrpcclient.cpp diff --git a/indra/llmessage/llsdrpcclient.h b/indra/llmessage/llsdrpcclient.h index c4e0333ca3..c4e0333ca3 100755..100644 --- a/indra/llmessage/llsdrpcclient.h +++ b/indra/llmessage/llsdrpcclient.h diff --git a/indra/llmessage/llsdrpcserver.cpp b/indra/llmessage/llsdrpcserver.cpp index c3ed19889e..c3ed19889e 100755..100644 --- a/indra/llmessage/llsdrpcserver.cpp +++ b/indra/llmessage/llsdrpcserver.cpp diff --git a/indra/llmessage/llsdrpcserver.h b/indra/llmessage/llsdrpcserver.h index 415bd31c26..415bd31c26 100755..100644 --- a/indra/llmessage/llsdrpcserver.h +++ b/indra/llmessage/llsdrpcserver.h diff --git a/indra/llmessage/llservice.cpp b/indra/llmessage/llservice.cpp index ddcc13d969..ddcc13d969 100755..100644 --- a/indra/llmessage/llservice.cpp +++ b/indra/llmessage/llservice.cpp diff --git a/indra/llmessage/llservice.h b/indra/llmessage/llservice.h index 9c09aeb44c..9c09aeb44c 100755..100644 --- a/indra/llmessage/llservice.h +++ b/indra/llmessage/llservice.h diff --git a/indra/llmessage/llservicebuilder.cpp b/indra/llmessage/llservicebuilder.cpp index cf2e42f95c..cf2e42f95c 100755..100644 --- a/indra/llmessage/llservicebuilder.cpp +++ b/indra/llmessage/llservicebuilder.cpp diff --git a/indra/llmessage/llservicebuilder.h b/indra/llmessage/llservicebuilder.h index 968995edf2..968995edf2 100755..100644 --- a/indra/llmessage/llservicebuilder.h +++ b/indra/llmessage/llservicebuilder.h diff --git a/indra/llmessage/llstoredmessage.cpp b/indra/llmessage/llstoredmessage.cpp index 9f2f2bcda7..9f2f2bcda7 100755..100644 --- a/indra/llmessage/llstoredmessage.cpp +++ b/indra/llmessage/llstoredmessage.cpp diff --git a/indra/llmessage/llstoredmessage.h b/indra/llmessage/llstoredmessage.h index 9c98e2c558..9c98e2c558 100755..100644 --- a/indra/llmessage/llstoredmessage.h +++ b/indra/llmessage/llstoredmessage.h diff --git a/indra/llmessage/lltaskname.h b/indra/llmessage/lltaskname.h index 5dbd9c6223..5dbd9c6223 100755..100644 --- a/indra/llmessage/lltaskname.h +++ b/indra/llmessage/lltaskname.h diff --git a/indra/llmessage/llteleportflags.h b/indra/llmessage/llteleportflags.h index b3fcad036e..b3fcad036e 100755..100644 --- a/indra/llmessage/llteleportflags.h +++ b/indra/llmessage/llteleportflags.h diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp index 8d7c4c0282..8d7c4c0282 100755..100644 --- a/indra/llmessage/lltemplatemessagebuilder.cpp +++ b/indra/llmessage/lltemplatemessagebuilder.cpp diff --git a/indra/llmessage/lltemplatemessagebuilder.h b/indra/llmessage/lltemplatemessagebuilder.h index 4f614a4657..4f614a4657 100755..100644 --- a/indra/llmessage/lltemplatemessagebuilder.h +++ b/indra/llmessage/lltemplatemessagebuilder.h diff --git a/indra/llmessage/lltemplatemessagedispatcher.cpp b/indra/llmessage/lltemplatemessagedispatcher.cpp index ee7a4e7e71..ee7a4e7e71 100755..100644 --- a/indra/llmessage/lltemplatemessagedispatcher.cpp +++ b/indra/llmessage/lltemplatemessagedispatcher.cpp diff --git a/indra/llmessage/lltemplatemessagedispatcher.h b/indra/llmessage/lltemplatemessagedispatcher.h index fe77f92074..fe77f92074 100755..100644 --- a/indra/llmessage/lltemplatemessagedispatcher.h +++ b/indra/llmessage/lltemplatemessagedispatcher.h diff --git a/indra/llmessage/lltemplatemessagereader.cpp b/indra/llmessage/lltemplatemessagereader.cpp index 406afadd2f..406afadd2f 100755..100644 --- a/indra/llmessage/lltemplatemessagereader.cpp +++ b/indra/llmessage/lltemplatemessagereader.cpp diff --git a/indra/llmessage/lltemplatemessagereader.h b/indra/llmessage/lltemplatemessagereader.h index fcf8f92fa6..fcf8f92fa6 100755..100644 --- a/indra/llmessage/lltemplatemessagereader.h +++ b/indra/llmessage/lltemplatemessagereader.h diff --git a/indra/llmessage/llthrottle.cpp b/indra/llmessage/llthrottle.cpp index 7605da4d3f..7605da4d3f 100755..100644 --- a/indra/llmessage/llthrottle.cpp +++ b/indra/llmessage/llthrottle.cpp diff --git a/indra/llmessage/llthrottle.h b/indra/llmessage/llthrottle.h index e43e54f61b..e43e54f61b 100755..100644 --- a/indra/llmessage/llthrottle.h +++ b/indra/llmessage/llthrottle.h diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index ec7b21d8b6..ec7b21d8b6 100755..100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp diff --git a/indra/llmessage/lltransfermanager.h b/indra/llmessage/lltransfermanager.h index 6aad153c24..6aad153c24 100755..100644 --- a/indra/llmessage/lltransfermanager.h +++ b/indra/llmessage/lltransfermanager.h diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 80ed3340c6..80ed3340c6 100755..100644 --- a/indra/llmessage/lltransfersourceasset.cpp +++ b/indra/llmessage/lltransfersourceasset.cpp diff --git a/indra/llmessage/lltransfersourceasset.h b/indra/llmessage/lltransfersourceasset.h index 3abda83cf8..3abda83cf8 100755..100644 --- a/indra/llmessage/lltransfersourceasset.h +++ b/indra/llmessage/lltransfersourceasset.h diff --git a/indra/llmessage/lltransfersourcefile.cpp b/indra/llmessage/lltransfersourcefile.cpp index 1f284a158d..1f284a158d 100755..100644 --- a/indra/llmessage/lltransfersourcefile.cpp +++ b/indra/llmessage/lltransfersourcefile.cpp diff --git a/indra/llmessage/lltransfersourcefile.h b/indra/llmessage/lltransfersourcefile.h index 985042417e..985042417e 100755..100644 --- a/indra/llmessage/lltransfersourcefile.h +++ b/indra/llmessage/lltransfersourcefile.h diff --git a/indra/llmessage/lltransfertargetfile.cpp b/indra/llmessage/lltransfertargetfile.cpp index ca0318a2d6..ca0318a2d6 100755..100644 --- a/indra/llmessage/lltransfertargetfile.cpp +++ b/indra/llmessage/lltransfertargetfile.cpp diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h index 6d03ff2d2e..6d03ff2d2e 100755..100644 --- a/indra/llmessage/lltransfertargetfile.h +++ b/indra/llmessage/lltransfertargetfile.h diff --git a/indra/llmessage/lltransfertargetvfile.cpp b/indra/llmessage/lltransfertargetvfile.cpp index 3c234b9726..3c234b9726 100755..100644 --- a/indra/llmessage/lltransfertargetvfile.cpp +++ b/indra/llmessage/lltransfertargetvfile.cpp diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h index 23a65e4bb2..23a65e4bb2 100755..100644 --- a/indra/llmessage/lltransfertargetvfile.h +++ b/indra/llmessage/lltransfertargetvfile.h diff --git a/indra/llmessage/lltrustedmessageservice.cpp b/indra/llmessage/lltrustedmessageservice.cpp index 5bd1112cfe..5bd1112cfe 100755..100644 --- a/indra/llmessage/lltrustedmessageservice.cpp +++ b/indra/llmessage/lltrustedmessageservice.cpp diff --git a/indra/llmessage/lltrustedmessageservice.h b/indra/llmessage/lltrustedmessageservice.h index 12a37bb535..12a37bb535 100755..100644 --- a/indra/llmessage/lltrustedmessageservice.h +++ b/indra/llmessage/lltrustedmessageservice.h diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index 1294379eca..1294379eca 100755..100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h index 88fccd4bf6..88fccd4bf6 100755..100644 --- a/indra/llmessage/llurlrequest.h +++ b/indra/llmessage/llurlrequest.h diff --git a/indra/llmessage/lluseroperation.cpp b/indra/llmessage/lluseroperation.cpp index c506af19ce..c506af19ce 100755..100644 --- a/indra/llmessage/lluseroperation.cpp +++ b/indra/llmessage/lluseroperation.cpp diff --git a/indra/llmessage/lluseroperation.h b/indra/llmessage/lluseroperation.h index 7db5f0b27f..7db5f0b27f 100755..100644 --- a/indra/llmessage/lluseroperation.h +++ b/indra/llmessage/lluseroperation.h diff --git a/indra/llmessage/llvehicleparams.h b/indra/llmessage/llvehicleparams.h index f34df7744e..f34df7744e 100755..100644 --- a/indra/llmessage/llvehicleparams.h +++ b/indra/llmessage/llvehicleparams.h diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp index 4aba5cae72..4aba5cae72 100755..100644 --- a/indra/llmessage/llxfer.cpp +++ b/indra/llmessage/llxfer.cpp diff --git a/indra/llmessage/llxfer.h b/indra/llmessage/llxfer.h index edf5eeb82d..edf5eeb82d 100755..100644 --- a/indra/llmessage/llxfer.h +++ b/indra/llmessage/llxfer.h diff --git a/indra/llmessage/llxfer_file.cpp b/indra/llmessage/llxfer_file.cpp index 257a13f277..257a13f277 100755..100644 --- a/indra/llmessage/llxfer_file.cpp +++ b/indra/llmessage/llxfer_file.cpp diff --git a/indra/llmessage/llxfer_file.h b/indra/llmessage/llxfer_file.h index a37dda6732..a37dda6732 100755..100644 --- a/indra/llmessage/llxfer_file.h +++ b/indra/llmessage/llxfer_file.h diff --git a/indra/llmessage/llxfer_mem.cpp b/indra/llmessage/llxfer_mem.cpp index 3bea08f2e5..3bea08f2e5 100755..100644 --- a/indra/llmessage/llxfer_mem.cpp +++ b/indra/llmessage/llxfer_mem.cpp diff --git a/indra/llmessage/llxfer_mem.h b/indra/llmessage/llxfer_mem.h index b5adf837df..b5adf837df 100755..100644 --- a/indra/llmessage/llxfer_mem.h +++ b/indra/llmessage/llxfer_mem.h diff --git a/indra/llmessage/llxfer_vfile.cpp b/indra/llmessage/llxfer_vfile.cpp index 4a378d1d34..4a378d1d34 100755..100644 --- a/indra/llmessage/llxfer_vfile.cpp +++ b/indra/llmessage/llxfer_vfile.cpp diff --git a/indra/llmessage/llxfer_vfile.h b/indra/llmessage/llxfer_vfile.h index 048bf49dcc..048bf49dcc 100755..100644 --- a/indra/llmessage/llxfer_vfile.h +++ b/indra/llmessage/llxfer_vfile.h diff --git a/indra/llmessage/llxfermanager.cpp b/indra/llmessage/llxfermanager.cpp index 0ab67b8dda..0ab67b8dda 100755..100644 --- a/indra/llmessage/llxfermanager.cpp +++ b/indra/llmessage/llxfermanager.cpp diff --git a/indra/llmessage/llxfermanager.h b/indra/llmessage/llxfermanager.h index b3d110e7a1..b3d110e7a1 100755..100644 --- a/indra/llmessage/llxfermanager.h +++ b/indra/llmessage/llxfermanager.h diff --git a/indra/llmessage/llxorcipher.cpp b/indra/llmessage/llxorcipher.cpp index 9053e1b2f1..9053e1b2f1 100755..100644 --- a/indra/llmessage/llxorcipher.cpp +++ b/indra/llmessage/llxorcipher.cpp diff --git a/indra/llmessage/llxorcipher.h b/indra/llmessage/llxorcipher.h index c5b0700f0d..c5b0700f0d 100755..100644 --- a/indra/llmessage/llxorcipher.h +++ b/indra/llmessage/llxorcipher.h diff --git a/indra/llmessage/machine.cpp b/indra/llmessage/machine.cpp index 1e9c9c3c9a..1e9c9c3c9a 100755..100644 --- a/indra/llmessage/machine.cpp +++ b/indra/llmessage/machine.cpp diff --git a/indra/llmessage/machine.h b/indra/llmessage/machine.h index 07aadd47d2..07aadd47d2 100755..100644 --- a/indra/llmessage/machine.h +++ b/indra/llmessage/machine.h diff --git a/indra/llmessage/mean_collision_data.h b/indra/llmessage/mean_collision_data.h index 29de091603..29de091603 100755..100644 --- a/indra/llmessage/mean_collision_data.h +++ b/indra/llmessage/mean_collision_data.h diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index e9ce94ab3b..e9ce94ab3b 100755..100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h index 348b09b992..348b09b992 100755..100644 --- a/indra/llmessage/message.h +++ b/indra/llmessage/message.h diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp index a62b9c3227..5c6b3d5fab 100755..100644 --- a/indra/llmessage/message_prehash.cpp +++ b/indra/llmessage/message_prehash.cpp @@ -1385,3 +1385,5 @@ char const* const _PREHASH_AppearanceVersion = LLMessageStringTable::getInstance char const* const _PREHASH_CofVersion = LLMessageStringTable::getInstance()->getString("CofVersion"); char const* const _PREHASH_AppearanceHover = LLMessageStringTable::getInstance()->getString("AppearanceHover"); char const* const _PREHASH_HoverHeight = LLMessageStringTable::getInstance()->getString("HoverHeight"); +char const* const _PREHASH_Experience = LLMessageStringTable::getInstance()->getString("Experience"); +char const* const _PREHASH_ExperienceID = LLMessageStringTable::getInstance()->getString("ExperienceID"); diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h index 573c8e466f..e696c3b0ca 100755..100644 --- a/indra/llmessage/message_prehash.h +++ b/indra/llmessage/message_prehash.h @@ -1385,4 +1385,6 @@ extern char const* const _PREHASH_AppearanceVersion; extern char const* const _PREHASH_CofVersion; extern char const* const _PREHASH_AppearanceHover; extern char const* const _PREHASH_HoverHeight; +extern char const* const _PREHASH_Experience; +extern char const* const _PREHASH_ExperienceID; #endif diff --git a/indra/llmessage/message_string_table.cpp b/indra/llmessage/message_string_table.cpp index e4f5fb3a38..e4f5fb3a38 100755..100644 --- a/indra/llmessage/message_string_table.cpp +++ b/indra/llmessage/message_string_table.cpp diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp index 523bcbb60d..523bcbb60d 100755..100644 --- a/indra/llmessage/net.cpp +++ b/indra/llmessage/net.cpp diff --git a/indra/llmessage/net.h b/indra/llmessage/net.h index beb67bae4e..beb67bae4e 100755..100644 --- a/indra/llmessage/net.h +++ b/indra/llmessage/net.h diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp index d87de38aa5..d87de38aa5 100755..100644 --- a/indra/llmessage/partsyspacket.cpp +++ b/indra/llmessage/partsyspacket.cpp diff --git a/indra/llmessage/partsyspacket.h b/indra/llmessage/partsyspacket.h index d9abecea3f..d9abecea3f 100755..100644 --- a/indra/llmessage/partsyspacket.h +++ b/indra/llmessage/partsyspacket.h diff --git a/indra/llmessage/patch_code.cpp b/indra/llmessage/patch_code.cpp index 32f8d80782..32f8d80782 100755..100644 --- a/indra/llmessage/patch_code.cpp +++ b/indra/llmessage/patch_code.cpp diff --git a/indra/llmessage/patch_code.h b/indra/llmessage/patch_code.h index 4c87c9808a..4c87c9808a 100755..100644 --- a/indra/llmessage/patch_code.h +++ b/indra/llmessage/patch_code.h diff --git a/indra/llmessage/patch_dct.cpp b/indra/llmessage/patch_dct.cpp index b5518b61ea..b5518b61ea 100755..100644 --- a/indra/llmessage/patch_dct.cpp +++ b/indra/llmessage/patch_dct.cpp diff --git a/indra/llmessage/patch_dct.h b/indra/llmessage/patch_dct.h index 101231ec84..101231ec84 100755..100644 --- a/indra/llmessage/patch_dct.h +++ b/indra/llmessage/patch_dct.h diff --git a/indra/llmessage/patch_idct.cpp b/indra/llmessage/patch_idct.cpp index 9ce35df284..9ce35df284 100755..100644 --- a/indra/llmessage/patch_idct.cpp +++ b/indra/llmessage/patch_idct.cpp diff --git a/indra/llmessage/sound_ids.cpp b/indra/llmessage/sound_ids.cpp index 2b8a0807c6..2b8a0807c6 100755..100644 --- a/indra/llmessage/sound_ids.cpp +++ b/indra/llmessage/sound_ids.cpp diff --git a/indra/llmessage/sound_ids.h b/indra/llmessage/sound_ids.h index 6a2e343ad3..6a2e343ad3 100755..100644 --- a/indra/llmessage/sound_ids.h +++ b/indra/llmessage/sound_ids.h diff --git a/indra/llmessage/tests/commtest.h b/indra/llmessage/tests/commtest.h index 0d149b5258..0d149b5258 100755..100644 --- a/indra/llmessage/tests/commtest.h +++ b/indra/llmessage/tests/commtest.h diff --git a/indra/llmessage/tests/llareslistener_test.cpp b/indra/llmessage/tests/llareslistener_test.cpp index c04696c86b..c04696c86b 100755..100644 --- a/indra/llmessage/tests/llareslistener_test.cpp +++ b/indra/llmessage/tests/llareslistener_test.cpp diff --git a/indra/llmessage/tests/llavatarnamecache_test.cpp b/indra/llmessage/tests/llavatarnamecache_test.cpp index ec6b65d483..ec6b65d483 100755..100644 --- a/indra/llmessage/tests/llavatarnamecache_test.cpp +++ b/indra/llmessage/tests/llavatarnamecache_test.cpp diff --git a/indra/llmessage/tests/llcurl_stub.cpp b/indra/llmessage/tests/llcurl_stub.cpp index b7fdf4f437..b7fdf4f437 100755..100644 --- a/indra/llmessage/tests/llcurl_stub.cpp +++ b/indra/llmessage/tests/llcurl_stub.cpp diff --git a/indra/llmessage/tests/llhost_test.cpp b/indra/llmessage/tests/llhost_test.cpp index efca1bbfca..efca1bbfca 100755..100644 --- a/indra/llmessage/tests/llhost_test.cpp +++ b/indra/llmessage/tests/llhost_test.cpp diff --git a/indra/llmessage/tests/llhttpclient_test.cpp b/indra/llmessage/tests/llhttpclient_test.cpp index a32bfa59ce..a32bfa59ce 100755..100644 --- a/indra/llmessage/tests/llhttpclient_test.cpp +++ b/indra/llmessage/tests/llhttpclient_test.cpp diff --git a/indra/llmessage/tests/llhttpclientadapter_test.cpp b/indra/llmessage/tests/llhttpclientadapter_test.cpp index e9ce116bb3..e9ce116bb3 100755..100644 --- a/indra/llmessage/tests/llhttpclientadapter_test.cpp +++ b/indra/llmessage/tests/llhttpclientadapter_test.cpp diff --git a/indra/llmessage/tests/llhttpnode_stub.cpp b/indra/llmessage/tests/llhttpnode_stub.cpp index 479a256bdd..479a256bdd 100755..100644 --- a/indra/llmessage/tests/llhttpnode_stub.cpp +++ b/indra/llmessage/tests/llhttpnode_stub.cpp diff --git a/indra/llmessage/tests/llmockhttpclient.h b/indra/llmessage/tests/llmockhttpclient.h index af26bf8803..af26bf8803 100755..100644 --- a/indra/llmessage/tests/llmockhttpclient.h +++ b/indra/llmessage/tests/llmockhttpclient.h diff --git a/indra/llmessage/tests/llnamevalue_test.cpp b/indra/llmessage/tests/llnamevalue_test.cpp index 8902fdd2e8..8902fdd2e8 100755..100644 --- a/indra/llmessage/tests/llnamevalue_test.cpp +++ b/indra/llmessage/tests/llnamevalue_test.cpp diff --git a/indra/llmessage/tests/llpartdata_test.cpp b/indra/llmessage/tests/llpartdata_test.cpp index de81e0bbb2..de81e0bbb2 100755..100644 --- a/indra/llmessage/tests/llpartdata_test.cpp +++ b/indra/llmessage/tests/llpartdata_test.cpp diff --git a/indra/llmessage/tests/llsdmessage_test.cpp b/indra/llmessage/tests/llsdmessage_test.cpp index 44b024a83f..44b024a83f 100755..100644 --- a/indra/llmessage/tests/llsdmessage_test.cpp +++ b/indra/llmessage/tests/llsdmessage_test.cpp diff --git a/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp b/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp index 3b04530c1a..3b04530c1a 100755..100644 --- a/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp +++ b/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp diff --git a/indra/llmessage/tests/lltesthttpclientadapter.cpp b/indra/llmessage/tests/lltesthttpclientadapter.cpp index 4539e4a540..4539e4a540 100755..100644 --- a/indra/llmessage/tests/lltesthttpclientadapter.cpp +++ b/indra/llmessage/tests/lltesthttpclientadapter.cpp diff --git a/indra/llmessage/tests/lltesthttpclientadapter.h b/indra/llmessage/tests/lltesthttpclientadapter.h index c29cbb3a2a..c29cbb3a2a 100755..100644 --- a/indra/llmessage/tests/lltesthttpclientadapter.h +++ b/indra/llmessage/tests/lltesthttpclientadapter.h diff --git a/indra/llmessage/tests/lltestmessagesender.cpp b/indra/llmessage/tests/lltestmessagesender.cpp index ee40e0249e..ee40e0249e 100755..100644 --- a/indra/llmessage/tests/lltestmessagesender.cpp +++ b/indra/llmessage/tests/lltestmessagesender.cpp diff --git a/indra/llmessage/tests/lltestmessagesender.h b/indra/llmessage/tests/lltestmessagesender.h index bb89289585..bb89289585 100755..100644 --- a/indra/llmessage/tests/lltestmessagesender.h +++ b/indra/llmessage/tests/lltestmessagesender.h diff --git a/indra/llmessage/tests/lltrustedmessageservice_test.cpp b/indra/llmessage/tests/lltrustedmessageservice_test.cpp index 55748ad27e..55748ad27e 100755..100644 --- a/indra/llmessage/tests/lltrustedmessageservice_test.cpp +++ b/indra/llmessage/tests/lltrustedmessageservice_test.cpp diff --git a/indra/llmessage/tests/llxfer_file_test.cpp b/indra/llmessage/tests/llxfer_file_test.cpp index a8c1adf9b4..a8c1adf9b4 100755..100644 --- a/indra/llmessage/tests/llxfer_file_test.cpp +++ b/indra/llmessage/tests/llxfer_file_test.cpp diff --git a/indra/llmessage/tests/networkio.h b/indra/llmessage/tests/networkio.h index 2aff90ca1e..2aff90ca1e 100755..100644 --- a/indra/llmessage/tests/networkio.h +++ b/indra/llmessage/tests/networkio.h diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt index 05fc12e338..8c4ddd524e 100755..100644 --- a/indra/llplugin/CMakeLists.txt +++ b/indra/llplugin/CMakeLists.txt @@ -20,7 +20,6 @@ include_directories( ${LLRENDER_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} - ${LLQTWEBKIT_INCLUDE_DIR} ) include_directories(SYSTEM ${LLCOMMON_SYSTEM_INCLUDE_DIRS} @@ -68,7 +67,7 @@ list(APPEND llplugin_SOURCE_FILES ${llplugin_HEADER_FILES}) add_library (llplugin ${llplugin_SOURCE_FILES}) -##add_subdirectory(slplugin) +add_subdirectory(slplugin) # Add tests if (LL_TESTS) diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 52626b0302..3d173d0459 100755..100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1,4 +1,4 @@ -/** +/** * @file llpluginclassmedia.cpp * @brief LLPluginClassMedia handles a plugin which knows about the "media" message class. * @@ -6,21 +6,21 @@ * $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$ * @endcond @@ -41,14 +41,13 @@ static int nextPowerOf2( int value ) { next_power_of_2 <<= 1; } - + return next_power_of_2; } LLPluginClassMedia::LLPluginClassMedia(LLPluginClassMediaOwner *owner) { mOwner = owner; - mPlugin = NULL; reset(); //debug use @@ -63,19 +62,19 @@ LLPluginClassMedia::~LLPluginClassMedia() } bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_dir, const std::string &plugin_filename, bool debug) -{ +{ LL_DEBUGS("Plugin") << "launcher: " << launcher_filename << LL_ENDL; LL_DEBUGS("Plugin") << "dir: " << plugin_dir << LL_ENDL; LL_DEBUGS("Plugin") << "plugin: " << plugin_filename << LL_ENDL; - - mPlugin = new LLPluginProcessParent(this); + + mPlugin = LLPluginProcessParent::create(this); mPlugin->setSleepTime(mSleepTime); - + // 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_dir, plugin_filename, debug); return true; @@ -84,10 +83,10 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s void LLPluginClassMedia::reset() { - if(mPlugin != NULL) + if(mPlugin) { - delete mPlugin; - mPlugin = NULL; + mPlugin->requestShutdown(); + mPlugin.reset(); } mTextureParamsReceived = false; @@ -115,7 +114,7 @@ void LLPluginClassMedia::reset() mTextureHeight = 0; mMediaWidth = 0; mMediaHeight = 0; - mDirtyRect = LLRect::null; + mDirtyRect = LLRect::null; mAutoScaleMedia = false; mRequestedVolume = 1.0f; mPriority = PRIORITY_NORMAL; @@ -132,7 +131,7 @@ void LLPluginClassMedia::reset() mMediaName.clear(); mMediaDescription.clear(); mBackgroundColor = LLColor4(1.0f, 1.0f, 1.0f, 1.0f); - + // media_browser class mNavigateURI.clear(); mNavigateResultCode = -1; @@ -140,13 +139,15 @@ void LLPluginClassMedia::reset() mHistoryBackAvailable = false; mHistoryForwardAvailable = false; mStatusText.clear(); - mProgressPercent = 0; + mProgressPercent = 0; mClickURL.clear(); mClickNavType.clear(); mClickTarget.clear(); mClickUUID.clear(); mStatusCode = 0; - + + mClickEnforceTarget = false; + // media_time class mCurrentTime = 0.0f; mDuration = 0.0f; @@ -160,7 +161,7 @@ void LLPluginClassMedia::idle(void) { mPlugin->idle(); } - + if((mMediaWidth == -1) || (!mTextureParamsReceived) || (mPlugin == NULL) || (mPlugin->isBlocked()) || (mOwner == NULL)) { // Can't process a size change at this time @@ -177,7 +178,7 @@ void LLPluginClassMedia::idle(void) else { mRequestedTextureWidth = mRequestedMediaWidth; - + if(mPadding > 1) { // Pad up to a multiple of the specified number of bytes per row @@ -187,7 +188,7 @@ void LLPluginClassMedia::idle(void) { rowbytes += mPadding - pad; } - + if(rowbytes % mRequestedTextureDepth == 0) { mRequestedTextureWidth = rowbytes / mRequestedTextureDepth; @@ -199,7 +200,7 @@ void LLPluginClassMedia::idle(void) } } - + // Size change has been requested but not initiated yet. size_t newsize = mRequestedTextureWidth * mRequestedTextureHeight * mRequestedTextureDepth; @@ -214,22 +215,22 @@ void LLPluginClassMedia::idle(void) mPlugin->removeSharedMemory(mTextureSharedMemoryName); mTextureSharedMemoryName.clear(); } - + mTextureSharedMemorySize = newsize; mTextureSharedMemoryName = mPlugin->addSharedMemory(mTextureSharedMemorySize); if(!mTextureSharedMemoryName.empty()) { void *addr = mPlugin->getSharedMemoryAddress(mTextureSharedMemoryName); - + // clear texture memory to avoid random screen visual fuzz from uninitialized texture data memset( addr, 0x00, newsize ); - + // We could do this to force an update, but textureValid() will still be returning false until the first roundtrip to the plugin, // so it may not be worthwhile. // mDirtyRect.setOriginAndSize(0, 0, mRequestedMediaWidth, mRequestedMediaHeight); } } - + // This is our local indicator that a change is in progress. mTextureWidth = -1; mTextureHeight = -1; @@ -238,7 +239,7 @@ void LLPluginClassMedia::idle(void) // This invalidates any existing dirty rect. resetDirty(); - + // Send a size change message to the plugin { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change"); @@ -252,11 +253,11 @@ void LLPluginClassMedia::idle(void) message.setValueReal("background_b", mBackgroundColor.mV[VZ]); message.setValueReal("background_a", mBackgroundColor.mV[VW]); mPlugin->sendMessage(message); // DO NOT just use sendMessage() here -- we want this to jump ahead of the queue. - + LL_DEBUGS("Plugin") << "Sending size_change" << LL_ENDL; } } - + if(mPlugin && mPlugin->isRunning()) { // Send queued messages @@ -322,11 +323,11 @@ void LLPluginClassMedia::setSizeInternal(void) mRequestedMediaWidth = mDefaultMediaWidth; mRequestedMediaHeight = mDefaultMediaHeight; } - + // Save these for size/interest calculations mFullMediaWidth = mRequestedMediaWidth; mFullMediaHeight = mRequestedMediaHeight; - + if(mAllowDownsample) { switch(mPriority) @@ -340,19 +341,19 @@ void LLPluginClassMedia::setSizeInternal(void) mRequestedMediaHeight /= 2; } break; - + default: // Don't adjust texture size break; } } - + if(mAutoScaleMedia) { mRequestedMediaWidth = nextPowerOf2(mRequestedMediaWidth); mRequestedMediaHeight = nextPowerOf2(mRequestedMediaHeight); } - + if(mRequestedMediaWidth > 2048) mRequestedMediaWidth = 2048; @@ -380,9 +381,9 @@ bool LLPluginClassMedia::textureValid(void) mRequestedMediaWidth != mMediaWidth || mRequestedMediaHeight != mMediaHeight || getBitsData() == NULL - ) + ) return false; - + return true; } @@ -406,8 +407,8 @@ void LLPluginClassMedia::resetDirty(void) std::string LLPluginClassMedia::translateModifiers(MASK modifiers) { std::string result; - - + + if(modifiers & MASK_CONTROL) { result += "control|"; @@ -430,7 +431,7 @@ std::string LLPluginClassMedia::translateModifiers(MASK modifiers) { result += "meta|"; } -*/ +*/ return result; } @@ -538,11 +539,11 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int // Don't spam unnecessary mouse move events. return; } - + mLastMouseX = x; mLastMouseY = y; } - + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "mouse_event"); std::string temp; switch(type) @@ -557,7 +558,7 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int message.setValueS32("button", button); message.setValueS32("x", x); - + // Incoming coordinates are OpenGL-style ((0,0) = lower left), so flip them here if the plugin has requested it. if(!mRequestedTextureCoordsOpenGL) { @@ -567,42 +568,42 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int message.setValueS32("y", y); message.setValue("modifiers", translateModifiers(modifiers)); - + sendMessage(message); } bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data) { bool result = true; - + // FIXME: // HACK: we don't have an easy way to tell if the plugin is going to handle a particular keycode. // For now, return false for the ones the webkit plugin won't handle properly. - + switch(key_code) { - case KEY_BACKSPACE: - case KEY_TAB: - case KEY_RETURN: - case KEY_PAD_RETURN: - case KEY_SHIFT: - case KEY_CONTROL: - case KEY_ALT: - case KEY_CAPSLOCK: - case KEY_ESCAPE: - case KEY_PAGE_UP: - case KEY_PAGE_DOWN: - case KEY_END: - case KEY_HOME: - case KEY_LEFT: - case KEY_UP: - case KEY_RIGHT: - case KEY_DOWN: - case KEY_INSERT: + case KEY_BACKSPACE: + case KEY_TAB: + case KEY_RETURN: + case KEY_PAD_RETURN: + case KEY_SHIFT: + case KEY_CONTROL: + case KEY_ALT: + case KEY_CAPSLOCK: + case KEY_ESCAPE: + case KEY_PAGE_UP: + case KEY_PAGE_DOWN: + case KEY_END: + case KEY_HOME: + case KEY_LEFT: + case KEY_UP: + case KEY_RIGHT: + case KEY_DOWN: + case KEY_INSERT: case KEY_DELETE: - // These will be handled + // These will be handled break; - + default: // regular ASCII characters will also be handled if(key_code >= KEY_SPECIAL) @@ -613,7 +614,7 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie break; } -#if LL_DARWIN +#if LL_DARWIN if(modifiers & MASK_ALT) { // Option-key modified characters should be handled by the unicode input path instead of this one. @@ -632,15 +633,15 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie case KEY_EVENT_REPEAT: temp = "repeat"; break; } message.setValue("event", temp); - + message.setValueS32("key", key_code); message.setValue("modifiers", translateModifiers(modifiers)); message.setValueLLSD("native_key_data", native_key_data); - + sendMessage(message); } - + return result; } @@ -651,10 +652,10 @@ void LLPluginClassMedia::scrollEvent(int x, int y, MASK modifiers) message.setValueS32("x", x); message.setValueS32("y", y); message.setValue("modifiers", translateModifiers(modifiers)); - + sendMessage(message); } - + bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers, LLSD native_key_data) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "text_event"); @@ -662,18 +663,33 @@ bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers, LLSD message.setValue("text", text); message.setValue("modifiers", translateModifiers(modifiers)); message.setValueLLSD("native_key_data", native_key_data); - + sendMessage(message); - + return true; } +void LLPluginClassMedia::setCookie(std::string uri, std::string name, std::string value, std::string domain, std::string path, bool httponly, bool secure) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "set_cookie"); + + message.setValue("uri", uri); + message.setValue("name", name); + message.setValue("value", value); + message.setValue("domain", domain); + message.setValue("path", path); + message.setValueBoolean("httponly", httponly); + message.setValueBoolean("secure", secure); + + sendMessage(message); +} + void LLPluginClassMedia::loadURI(const std::string &uri) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "load_uri"); message.setValue("uri", uri); - + sendMessage(message); } @@ -690,7 +706,7 @@ const char* LLPluginClassMedia::priorityToString(EPriority priority) case PRIORITY_NORMAL: result = "normal"; break; case PRIORITY_HIGH: result = "high"; break; } - + return result; } @@ -701,44 +717,44 @@ void LLPluginClassMedia::setPriority(EPriority priority) mPriority = priority; LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "set_priority"); - + std::string priority_string = priorityToString(priority); switch(priority) { - case PRIORITY_UNLOADED: + case PRIORITY_UNLOADED: mSleepTime = 1.0f; break; - case PRIORITY_STOPPED: + case PRIORITY_STOPPED: mSleepTime = 1.0f; break; - case PRIORITY_HIDDEN: + case PRIORITY_HIDDEN: mSleepTime = 1.0f; break; case PRIORITY_SLIDESHOW: mSleepTime = 1.0f; break; - case PRIORITY_LOW: + case PRIORITY_LOW: mSleepTime = 1.0f / 25.0f; break; - case PRIORITY_NORMAL: + case PRIORITY_NORMAL: mSleepTime = 1.0f / 50.0f; break; - case PRIORITY_HIGH: + case PRIORITY_HIGH: mSleepTime = 1.0f / 100.0f; break; } - + message.setValue("priority", priority_string); sendMessage(message); - + if(mPlugin) { mPlugin->setSleepTime(mSleepTime); } - + LL_DEBUGS("PluginPriority") << this << ": setting priority to " << priority_string << LL_ENDL; - + // This may affect the calculated size, so recalculate it here. setSizeInternal(); } @@ -759,12 +775,12 @@ void LLPluginClassMedia::setLowPrioritySizeLimit(int size) F64 LLPluginClassMedia::getCPUUsage() { F64 result = 0.0f; - + if(mPlugin) { result = mPlugin->getCPUUsage(); } - + return result; } @@ -812,10 +828,11 @@ void LLPluginClassMedia::paste() sendMessage(message); } -void LLPluginClassMedia::setUserDataPath(const std::string &user_data_path) +void LLPluginClassMedia::setUserDataPath(const std::string &user_data_path_cache, const std::string &user_data_path_cookies) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "set_user_data_path"); - message.setValue("path", user_data_path); + message.setValue("cache_path", user_data_path_cache); + message.setValue("cookies_path", user_data_path_cookies); sendMessage(message); } @@ -828,14 +845,14 @@ void LLPluginClassMedia::setLanguageCode(const std::string &language_code) void LLPluginClassMedia::setPluginsEnabled(const bool enabled) { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "plugins_enabled"); + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "plugins_enabled"); message.setValueBoolean("enable", enabled); sendMessage(message); } void LLPluginClassMedia::setJavascriptEnabled(const bool enabled) { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "javascript_enabled"); + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "javascript_enabled"); message.setValueBoolean("enable", enabled); sendMessage(message); } @@ -853,11 +870,11 @@ void LLPluginClassMedia::setTarget(const std::string &target) mTarget = target; } -/* virtual */ +/* virtual */ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { std::string message_class = message.getClass(); - + if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) { std::string message_name = message.getName(); @@ -868,21 +885,21 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mRequestedTextureFormat = message.getValueU32("format"); mRequestedTextureType = message.getValueU32("type"); mRequestedTextureSwapBytes = message.getValueBoolean("swap_bytes"); - mRequestedTextureCoordsOpenGL = message.getValueBoolean("coords_opengl"); - + mRequestedTextureCoordsOpenGL = message.getValueBoolean("coords_opengl"); + // These two are optional, and will default to 0 if they're not specified. mDefaultMediaWidth = message.getValueS32("default_width"); mDefaultMediaHeight = message.getValueS32("default_height"); - + mAllowDownsample = message.getValueBoolean("allow_downsample"); mPadding = message.getValueS32("padding"); setSizeInternal(); - + mTextureParamsReceived = true; } else if(message_name == "updated") - { + { if(message.hasValue("left")) { LLRect newDirtyRect; @@ -890,7 +907,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) newDirtyRect.mTop = message.getValueS32("top"); newDirtyRect.mRight = message.getValueS32("right"); newDirtyRect.mBottom = message.getValueS32("bottom"); - + // The plugin is likely to have top and bottom switched, due to vertical flip and OpenGL coordinate confusion. // If they're backwards, swap them. if(newDirtyRect.mTop < newDirtyRect.mBottom) @@ -899,7 +916,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) newDirtyRect.mTop = newDirtyRect.mBottom; newDirtyRect.mBottom = temp; } - + if(mDirtyRect.isEmpty()) { mDirtyRect = newDirtyRect; @@ -909,7 +926,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mDirtyRect.unionWith(newDirtyRect); } - LL_DEBUGS("Plugin") << "adjusted incoming rect is: (" + LL_DEBUGS("Plugin") << "adjusted incoming rect is: (" << newDirtyRect.mLeft << ", " << newDirtyRect.mTop << ", " << newDirtyRect.mRight << ", " @@ -919,10 +936,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) << mDirtyRect.mRight << ", " << mDirtyRect.mBottom << ")" << LL_ENDL; - + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CONTENT_UPDATED); - } - + } + bool time_duration_updated = false; int previous_percent = mProgressPercent; @@ -942,7 +959,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { mCurrentRate = message.getValueReal("current_rate"); } - + if(message.hasValue("loaded_duration")) { mLoadedDuration = message.getValueReal("loaded_duration"); @@ -953,7 +970,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) // If the message doesn't contain a loaded_duration param, assume it's equal to duration mLoadedDuration = mDuration; } - + // Calculate a percentage based on the loaded duration and total duration. if(mDuration != 0.0f) // Don't divide by zero. { @@ -964,7 +981,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_TIME_DURATION_UPDATED); } - + if(previous_percent != mProgressPercent) { mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PROGRESS_UPDATED); @@ -973,9 +990,9 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) else if(message_name == "media_status") { std::string status = message.getValue("status"); - + LL_DEBUGS("Plugin") << "Status changed to: " << status << LL_ENDL; - + if(status == "loading") { mStatus = LLPluginClassMediaOwner::MEDIA_LOADING; @@ -1015,24 +1032,24 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) // TODO: check that name matches? mNaturalMediaWidth = width; mNaturalMediaHeight = height; - + setSizeInternal(); } else if(message_name == "size_change_response") { std::string name = message.getValue("name"); - + // TODO: check that name matches? - + mTextureWidth = message.getValueS32("texture_width"); mTextureHeight = message.getValueS32("texture_height"); mMediaWidth = message.getValueS32("width"); mMediaHeight = message.getValueS32("height"); - + // This invalidates any existing dirty rect. resetDirty(); - - // TODO: should we verify that the plugin sent back the right values? + + // TODO: should we verify that the plugin sent back the right values? // Two size changes in a row may cause them to not match, due to queueing, etc. mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_SIZE_CHANGED); @@ -1073,6 +1090,11 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mAuthRealm = message.getValue("realm"); mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_AUTH_REQUEST); } + else if (message_name == "file_download") + { + mFileDownloadFilename = message.getValue("filename"); + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_FILE_DOWNLOAD); + } else if(message_name == "debug_message") { mDebugMessageText = message.getValue("message_text"); @@ -1099,7 +1121,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mNavigateResultString = message.getValue("result_string"); mHistoryBackAvailable = message.getValueBoolean("history_back_available"); mHistoryForwardAvailable = message.getValueBoolean("history_forward_available"); - + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAVIGATE_COMPLETE); } else if(message_name == "progress") @@ -1154,7 +1176,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mGeometryY = message.getValueS32("y"); mGeometryWidth = message.getValueS32("width"); mGeometryHeight = message.getValueS32("height"); - + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE); } else if(message_name == "link_hovered") @@ -1163,7 +1185,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mHoverLink = message.getValue("link"); mHoverText = message.getValue("title"); // message.getValue("text"); - + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_LINK_HOVERED); } else @@ -1179,7 +1201,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) // if(message_name == "message_name") // { // } -// else +// else { LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; } @@ -1187,13 +1209,13 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) } -/* virtual */ +/* virtual */ void LLPluginClassMedia::pluginLaunchFailed() { mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PLUGIN_FAILED_LAUNCH); } -/* virtual */ +/* virtual */ void LLPluginClassMedia::pluginDied() { mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PLUGIN_FAILED); @@ -1233,7 +1255,7 @@ void LLPluginClassMedia::focus(bool focused) LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "focus"); message.setValueBoolean("focused", focused); - + sendMessage(message); } @@ -1260,7 +1282,7 @@ void LLPluginClassMedia::clear_cookies() void LLPluginClassMedia::set_cookies(const std::string &cookies) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "set_cookies"); - message.setValue("cookies", cookies); + message.setValue("cookies", cookies); sendMessage(message); } @@ -1293,7 +1315,7 @@ void LLPluginClassMedia::browse_reload(bool ignore_cache) LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "browse_reload"); message.setValueBoolean("ignore_cache", ignore_cache); - + sendMessage(message); } @@ -1358,6 +1380,12 @@ void LLPluginClassMedia::addCertificateFilePath(const std::string& path) sendMessage(message); } +void LLPluginClassMedia::setOverrideClickTarget(const std::string &target) +{ + mClickEnforceTarget = true; + mOverrideClickTarget = target; +} + void LLPluginClassMedia::crashPlugin() { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash"); @@ -1407,7 +1435,7 @@ void LLPluginClassMedia::seek(float time) LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME, "seek"); message.setValueReal("time", time); - + sendMessage(message); } @@ -1425,11 +1453,11 @@ void LLPluginClassMedia::setVolume(float volume) if(volume != mRequestedVolume) { mRequestedVolume = volume; - + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME, "set_volume"); message.setValueReal("volume", volume); - + sendMessage(message); } } @@ -1448,4 +1476,3 @@ void LLPluginClassMedia::initializeUrlHistory(const LLSD& url_history) LL_DEBUGS("Plugin") << "Sending history" << LL_ENDL; } - diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 5fe8254331..fc27b7bea3 100755..100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -133,6 +133,8 @@ public: // Text may be unicode (utf8 encoded) bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data); + void setCookie(std::string uri, std::string name, std::string value, std::string domain, std::string path, bool httponly, bool secure); + void loadURI(const std::string &uri); // "Loading" means uninitialized or any state prior to fully running (processing commands) @@ -191,7 +193,7 @@ public: bool canPaste() const { return mCanPaste; }; // These can be called before init(), and they will be queued and sent before the media init message. - void setUserDataPath(const std::string &user_data_path); + void setUserDataPath(const std::string &user_data_path_cache, const std::string &user_data_path_cookies); void setLanguageCode(const std::string &language_code); void setPluginsEnabled(const bool enabled); void setJavascriptEnabled(const bool enabled); @@ -249,6 +251,13 @@ public: // This is valid during MEDIA_EVENT_CLICK_LINK_HREF and MEDIA_EVENT_GEOMETRY_CHANGE std::string getClickUUID() const { return mClickUUID; }; + // mClickTarget is received from message and governs how link will be opened + // use this to enforce your own way of opening links inside plugins + void setOverrideClickTarget(const std::string &target); + void resetOverrideClickTarget() { mClickEnforceTarget = false; }; + bool isOverrideClickTarget() const { return mClickEnforceTarget; } + std::string getOverrideClickTarget() const { return mOverrideClickTarget; }; + // These are valid during MEDIA_EVENT_DEBUG_MESSAGE std::string getDebugMessageText() const { return mDebugMessageText; }; std::string getDebugMessageLevel() const { return mDebugMessageLevel; }; @@ -270,6 +279,10 @@ public: std::string getHoverText() const { return mHoverText; }; std::string getHoverLink() const { return mHoverLink; }; + // these are valid during MEDIA_EVENT_LINK_HOVERED + std::string getFileDownloadFilename() const { return mFileDownloadFilename; } + + const std::string& getMediaName() const { return mMediaName; }; std::string getMediaDescription() const { return mMediaDescription; }; @@ -365,7 +378,7 @@ protected: int mPadding; - LLPluginProcessParent *mPlugin; + LLPluginProcessParent::ptr_t mPlugin; LLRect mDirtyRect; @@ -404,6 +417,8 @@ protected: std::string mClickNavType; std::string mClickTarget; std::string mClickUUID; + bool mClickEnforceTarget; + std::string mOverrideClickTarget; std::string mDebugMessageText; std::string mDebugMessageLevel; S32 mGeometryX; @@ -415,6 +430,7 @@ protected: std::string mAuthRealm; std::string mHoverText; std::string mHoverLink; + std::string mFileDownloadFilename; ///////////////////////////////////////// // media_time class diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h index 2f3edba7f3..391c23d883 100755..100644 --- a/indra/llplugin/llpluginclassmediaowner.h +++ b/indra/llplugin/llpluginclassmediaowner.h @@ -64,6 +64,8 @@ public: MEDIA_EVENT_AUTH_REQUEST, // The plugin wants to display an auth dialog + MEDIA_EVENT_FILE_DOWNLOAD, // the plugin wants to download a file + MEDIA_EVENT_DEBUG_MESSAGE, // plugin sending back debug information for host to process MEDIA_EVENT_LINK_HOVERED // Got a "link hovered" event from the plugin diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp index a5d717389d..a5d717389d 100755..100644 --- a/indra/llplugin/llplugincookiestore.cpp +++ b/indra/llplugin/llplugincookiestore.cpp diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h index a2fdeab647..a2fdeab647 100755..100644 --- a/indra/llplugin/llplugincookiestore.h +++ b/indra/llplugin/llplugincookiestore.h diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp index 7cde82a20e..7cde82a20e 100755..100644 --- a/indra/llplugin/llplugininstance.cpp +++ b/indra/llplugin/llplugininstance.cpp diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h index e6926c3e37..e6926c3e37 100755..100644 --- a/indra/llplugin/llplugininstance.h +++ b/indra/llplugin/llplugininstance.h diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp index b39e951155..b39e951155 100755..100644 --- a/indra/llplugin/llpluginmessage.cpp +++ b/indra/llplugin/llpluginmessage.cpp diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h index f86b68d16e..f86b68d16e 100755..100644 --- a/indra/llplugin/llpluginmessage.h +++ b/indra/llplugin/llpluginmessage.h diff --git a/indra/llplugin/llpluginmessageclasses.h b/indra/llplugin/llpluginmessageclasses.h index 65fc8cb5ff..65fc8cb5ff 100755..100644 --- a/indra/llplugin/llpluginmessageclasses.h +++ b/indra/llplugin/llpluginmessageclasses.h diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp index 7e2bf90ad1..7e2bf90ad1 100755..100644 --- a/indra/llplugin/llpluginmessagepipe.cpp +++ b/indra/llplugin/llpluginmessagepipe.cpp diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h index c3498beac0..c3498beac0 100755..100644 --- a/indra/llplugin/llpluginmessagepipe.h +++ b/indra/llplugin/llpluginmessagepipe.h diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index f8a282184e..be80d38305 100755..100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -33,6 +33,7 @@ #include "llpluginmessagepipe.h" #include "llpluginmessageclasses.h" +static const F32 GOODBYE_SECONDS = 20.0f; static const F32 HEARTBEAT_SECONDS = 1.0f; static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will give the plugin this much time. @@ -194,33 +195,43 @@ void LLPluginProcessChild::idle(void) } } // receivePluginMessage will transition to STATE_UNLOADING - break; + break; + + case STATE_SHUTDOWNREQ: + if (mInstance != NULL) + { + sendMessageToPlugin(LLPluginMessage("base", "cleanup")); + delete mInstance; + mInstance = NULL; + } + setState(STATE_UNLOADING); + mWaitGoodbye.setTimerExpirySec(GOODBYE_SECONDS); + break; case STATE_UNLOADING: - if(mInstance != NULL) - { - sendMessageToPlugin(LLPluginMessage("base", "cleanup")); - delete mInstance; - mInstance = NULL; - } - setState(STATE_UNLOADED); - break; + // waiting for goodbye from plugin. + if (mWaitGoodbye.hasExpired()) + { + LL_WARNS() << "Wait for goodbye expired. Advancing to UNLOADED" << LL_ENDL; + setState(STATE_UNLOADED); + } + break; case STATE_UNLOADED: killSockets(); setState(STATE_DONE); - break; + break; case STATE_ERROR: // Close the socket to the launcher killSockets(); // TODO: Where do we go from here? Just exit()? setState(STATE_DONE); - break; + break; case STATE_DONE: // just sit here. - break; + break; } } while (idle_again); @@ -350,6 +361,10 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message) mPluginFile = parsed.getValue("file"); mPluginDir = parsed.getValue("dir"); } + else if (message_name == "shutdown_plugin") + { + setState(STATE_SHUTDOWNREQ); + } else if(message_name == "shm_add") { std::string name = parsed.getValue("name"); @@ -495,6 +510,10 @@ void LLPluginProcessChild::receivePluginMessage(const std::string &message) // Let the parent know it's loaded and initialized. sendMessageToParent(new_message); } + else if (message_name == "goodbye") + { + setState(STATE_UNLOADED); + } else if(message_name == "shm_remove_response") { // Don't pass this message up to the parent diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 531422e792..b916cc9528 100755..100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -80,6 +80,7 @@ private: STATE_PLUGIN_LOADED, // plugin library has been loaded STATE_PLUGIN_INITIALIZING, // plugin is processing init message STATE_RUNNING, // steady state (processing messages) + STATE_SHUTDOWNREQ, // Parent has requested a shutdown. STATE_UNLOADING, // plugin has sent shutdown_response and needs to be unloaded STATE_UNLOADED, // plugin has been unloaded STATE_ERROR, // generic bailout state @@ -101,12 +102,12 @@ private: sharedMemoryRegionsType mSharedMemoryRegions; LLTimer mHeartbeat; - F64 mSleepTime; - F64 mCPUElapsed; + F64 mSleepTime; + F64 mCPUElapsed; bool mBlockingRequest; bool mBlockingResponseReceived; std::queue<std::string> mMessageQueue; - + LLTimer mWaitGoodbye; void deliverQueuedMessages(); }; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index b5a2588e1e..0a8e58ac90 100755..100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -46,7 +46,7 @@ bool LLPluginProcessParent::sUseReadThread = false; apr_pollset_t *LLPluginProcessParent::sPollSet = NULL; bool LLPluginProcessParent::sPollsetNeedsRebuild = false; LLMutex *LLPluginProcessParent::sInstancesMutex; -std::list<LLPluginProcessParent*> LLPluginProcessParent::sInstances; +LLPluginProcessParent::mapInstances_t LLPluginProcessParent::sInstances; LLThread *LLPluginProcessParent::sReadThread = NULL; @@ -104,27 +104,12 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner): // Don't start the timer here -- start it when we actually launch the plugin process. mHeartbeat.stop(); - // Don't add to the global list until fully constructed. - { - LLMutexLock lock(sInstancesMutex); - sInstances.push_back(this); - } } LLPluginProcessParent::~LLPluginProcessParent() { LL_DEBUGS("Plugin") << "destructor" << LL_ENDL; - // Remove from the global list before beginning destruction. - { - // Make sure to get the global mutex _first_ here, to avoid a possible deadlock against LLPluginProcessParent::poll() - LLMutexLock lock(sInstancesMutex); - { - LLMutexLock lock2(&mIncomingQueueMutex); - sInstances.remove(this); - } - } - // Destroy any remaining shared memory regions sharedMemoryRegionsType::iterator iter; while((iter = mSharedMemoryRegions.begin()) != mSharedMemoryRegions.end()) @@ -139,9 +124,109 @@ LLPluginProcessParent::~LLPluginProcessParent() } LLProcess::kill(mProcess); - killSockets(); + if (!LLApp::isQuitting()) + { // If we are quitting, the network sockets will already have been destroyed. + killSockets(); + } +} + +/*static*/ +LLPluginProcessParent::ptr_t LLPluginProcessParent::create(LLPluginProcessParentOwner *owner) +{ + ptr_t that(new LLPluginProcessParent(owner)); + + // Don't add to the global list until fully constructed. + { + LLMutexLock lock(sInstancesMutex); + sInstances.insert(mapInstances_t::value_type(that.get(), that)); + } + + return that; +} + +/*static*/ +void LLPluginProcessParent::shutdown() +{ + LLMutexLock lock(sInstancesMutex); + + mapInstances_t::iterator it; + for (it = sInstances.begin(); it != sInstances.end(); ++it) + { + (*it).second->setState(STATE_GOODBYE); + (*it).second->idle(); + } + sInstances.clear(); +} + + +void LLPluginProcessParent::requestShutdown() +{ + setState(STATE_GOODBYE); + mOwner = NULL; + + if (LLApp::isQuitting()) + { // if we're quitting, run the idle once more + idle(); + removeFromProcessing(); + return; + } + + static uint32_t count = 0; + std::stringstream namestream; + + namestream << "LLPluginProcessParentListener" << ++count; + + //*HACK!*// + // After requestShutdown has been called our previous owner will no longer call + // our idle() method. Tie into the event loop here to do that until we are good + // and finished. + LL_DEBUGS("LLPluginProcessParent") << "listening on \"mainloop\"" << LL_ENDL; + mPolling = LLEventPumps::instance().obtain("mainloop") + .listen(namestream.str(), boost::bind(&LLPluginProcessParent::pollTick, this)); + +} + +bool LLPluginProcessParent::pollTick() +{ + if (isDone()) + { + ptr_t that; + { + // this grabs a copy of the smart pointer to ourselves to ensure that we do not + // get destroyed until after this method returns. + LLMutexLock lock(sInstancesMutex); + mapInstances_t::iterator it = sInstances.find(this); + if (it != sInstances.end()) + that = (*it).second; + } + + removeFromProcessing(); + return true; + } + + idle(); + return false; } +void LLPluginProcessParent::removeFromProcessing() +{ + // Remove from the global list before beginning destruction. + { + // Make sure to get the global mutex _first_ here, to avoid a possible deadlock against LLPluginProcessParent::poll() + LLMutexLock lock(sInstancesMutex); + { + LLMutexLock lock2(&mIncomingQueueMutex); + sInstances.erase(this); + } + } +} + +bool LLPluginProcessParent::wantsPolling() const +{ + return (mPollFD.client_data && (mState != STATE_DONE)); +} + + void LLPluginProcessParent::killSockets(void) { { @@ -371,48 +456,48 @@ void LLPluginProcessParent::idle(void) break; case STATE_LISTENING: - { - // Launch the plugin process. + { + // Launch the plugin process. - // Only argument to the launcher is the port number we're listening on - mProcessParams.args.add(stringize(mBoundPort)); - if (! (mProcess = LLProcess::create(mProcessParams))) - { - errorState(); - } - else - { - if(mDebug) - { - #if LL_DARWIN - // If we're set to debug, start up a gdb instance in a new terminal window and have it attach to the plugin process and continue. + // Only argument to the launcher is the port number we're listening on + mProcessParams.args.add(stringize(mBoundPort)); + if (! (mProcess = LLProcess::create(mProcessParams))) + { + errorState(); + } + else + { + if(mDebug) + { +#if LL_DARWIN + // If we're set to debug, start up a gdb instance in a new terminal window and have it attach to the plugin process and continue. - // The command we're constructing would look like this on the command line: - // osascript -e 'tell application "Terminal"' -e 'set win to do script "gdb -pid 12345"' -e 'do script "continue" in win' -e 'end tell' - - LLProcess::Params params; - params.executable = "/usr/bin/osascript"; - params.args.add("-e"); - params.args.add("tell application \"Terminal\""); - params.args.add("-e"); - params.args.add(STRINGIZE("set win to do script \"gdb -pid " - << mProcess->getProcessID() << "\"")); - params.args.add("-e"); - params.args.add("do script \"continue\" in win"); - params.args.add("-e"); - params.args.add("end tell"); - mDebugger = LLProcess::create(params); - - #endif - } + // The command we're constructing would look like this on the command line: + // osascript -e 'tell application "Terminal"' -e 'set win to do script "gdb -pid 12345"' -e 'do script "continue" in win' -e 'end tell' + + LLProcess::Params params; + params.executable = "/usr/bin/osascript"; + params.args.add("-e"); + params.args.add("tell application \"Terminal\""); + params.args.add("-e"); + params.args.add(STRINGIZE("set win to do script \"gdb -pid " + << mProcess->getProcessID() << "\"")); + params.args.add("-e"); + params.args.add("do script \"continue\" in win"); + params.args.add("-e"); + params.args.add("end tell"); + mDebugger = LLProcess::create(params); + +#endif + } - // This will allow us to time out if the process never starts. - mHeartbeat.start(); - mHeartbeat.setTimerExpirySec(mPluginLaunchTimeout); - setState(STATE_LAUNCHED); - } - } - break; + // This will allow us to time out if the process never starts. + mHeartbeat.start(); + mHeartbeat.setTimerExpirySec(mPluginLaunchTimeout); + setState(STATE_LAUNCHED); + } + } + break; case STATE_LAUNCHED: // waiting for the plugin to connect @@ -430,7 +515,7 @@ void LLPluginProcessParent::idle(void) setState(STATE_CONNECTED); } } - break; + break; case STATE_CONNECTED: // waiting for hello message from the plugin @@ -439,7 +524,7 @@ void LLPluginProcessParent::idle(void) { errorState(); } - break; + break; case STATE_HELLO: LL_DEBUGS("Plugin") << "received hello message" << LL_ENDL; @@ -453,7 +538,7 @@ void LLPluginProcessParent::idle(void) } setState(STATE_LOADING); - break; + break; case STATE_LOADING: // The load_plugin_response message will kick us from here into STATE_RUNNING @@ -461,15 +546,23 @@ void LLPluginProcessParent::idle(void) { errorState(); } - break; + break; case STATE_RUNNING: if(pluginLockedUpOrQuit()) { errorState(); } - break; + break; + case STATE_GOODBYE: + { + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "shutdown_plugin"); + sendMessage(message); + } + setState(STATE_EXITING); + break; + case STATE_EXITING: if (! LLProcess::isRunning(mProcess)) { @@ -480,7 +573,7 @@ void LLPluginProcessParent::idle(void) LL_WARNS("Plugin") << "timeout in exiting state, bailing out" << LL_ENDL; errorState(); } - break; + break; case STATE_LAUNCH_FAILURE: if(mOwner != NULL) @@ -488,7 +581,7 @@ void LLPluginProcessParent::idle(void) mOwner->pluginLaunchFailed(); } setState(STATE_CLEANUP); - break; + break; case STATE_ERROR: if(mOwner != NULL) @@ -496,19 +589,18 @@ void LLPluginProcessParent::idle(void) mOwner->pluginDied(); } setState(STATE_CLEANUP); - break; + break; case STATE_CLEANUP: LLProcess::kill(mProcess); killSockets(); setState(STATE_DONE); - break; - + dirtyPollSet(); + break; case STATE_DONE: // just sit here. - break; - + break; } } while (idle_again); @@ -651,14 +743,14 @@ void LLPluginProcessParent::updatePollset() sPollSet = NULL; } - std::list<LLPluginProcessParent*>::iterator iter; + mapInstances_t::iterator iter; int count = 0; // Count the number of instances that want to be in the pollset for(iter = sInstances.begin(); iter != sInstances.end(); iter++) { - (*iter)->mPolledInput = false; - if((*iter)->mPollFD.client_data) + (*iter).second->mPolledInput = false; + if ((*iter).second->wantsPolling()) { // This instance has a socket that needs to be polled. ++count; @@ -686,12 +778,12 @@ void LLPluginProcessParent::updatePollset() // Pollset was created, add all instances to it. for(iter = sInstances.begin(); iter != sInstances.end(); iter++) { - if((*iter)->mPollFD.client_data) + if ((*iter).second->wantsPolling()) { - status = apr_pollset_add(sPollSet, &((*iter)->mPollFD)); + status = apr_pollset_add(sPollSet, &((*iter).second->mPollFD)); if(status == APR_SUCCESS) { - (*iter)->mPolledInput = true; + (*iter).second->mPolledInput = true; } else { @@ -756,45 +848,27 @@ void LLPluginProcessParent::poll(F64 timeout) if(status == APR_SUCCESS) { // One or more of the descriptors signalled. Call them. - for(int i = 0; i < count; i++) - { - LLPluginProcessParent *self = (LLPluginProcessParent *)(descriptors[i].client_data); - // NOTE: the descriptor returned here is actually a COPY of the original (even though we create the pollset with APR_POLLSET_NOCOPY). - // This means that even if the parent has set its mPollFD.client_data to NULL, the old pointer may still there in this descriptor. - // It's even possible that the old pointer no longer points to a valid LLPluginProcessParent. - // This means that we can't safely dereference the 'self' pointer here without some extra steps... - if(self) - { - // Make sure this pointer is still in the instances list - bool valid = false; - { - LLMutexLock lock(sInstancesMutex); - for(std::list<LLPluginProcessParent*>::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) - { - if(*iter == self) - { - // Lock the instance's mutex before unlocking the global mutex. - // This avoids a possible race condition where the instance gets deleted between this check and the servicePoll() call. - self->mIncomingQueueMutex.lock(); - valid = true; - break; - } - } - } - - if(valid) - { - // The instance is still valid. - // Pull incoming messages off the socket - self->servicePoll(); - self->mIncomingQueueMutex.unlock(); - } - else - { - LL_DEBUGS("PluginPoll") << "detected deleted instance " << self << LL_ENDL; - } + for (int i = 0; i < count; i++) + { + void *thatId = descriptors[i].client_data; + + ptr_t that; + mapInstances_t::iterator it; + + { + LLMutexLock lock(sInstancesMutex); + it = sInstances.find(thatId); + if (it != sInstances.end()) + that = (*it).second; + } + + if (that) + { + that->mIncomingQueueMutex.lock(); + that->servicePoll(); + that->mIncomingQueueMutex.unlock(); + } - } } } else if(APR_STATUS_IS_TIMEUP(status)) @@ -812,6 +886,16 @@ void LLPluginProcessParent::poll(F64 timeout) LL_WARNS("PluginPoll") << "apr_pollset_poll failed with status " << status << LL_ENDL; } } + + // Remove instances in the done state from the sInstances map. + mapInstances_t::iterator itClean = sInstances.begin(); + while (itClean != sInstances.end()) + { + if ((*itClean).second->isDone()) + sInstances.erase(itClean++); + else + ++itClean; + } } void LLPluginProcessParent::servicePoll() diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 24be7eb148..df1630255c 100755..100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -30,6 +30,7 @@ #define LL_LLPLUGINPROCESSPARENT_H #include <queue> +#include <boost/enable_shared_from_this.hpp> #include "llapr.h" #include "llprocess.h" @@ -40,8 +41,9 @@ #include "lliosocket.h" #include "llthread.h" #include "llsd.h" +#include "llevents.h" -class LLPluginProcessParentOwner +class LLPluginProcessParentOwner : public boost::enable_shared_from_this < LLPluginProcessParentOwner > { public: virtual ~LLPluginProcessParentOwner(); @@ -55,8 +57,11 @@ public: class LLPluginProcessParent : public LLPluginMessagePipeOwner { LOG_CLASS(LLPluginProcessParent); + + LLPluginProcessParent(LLPluginProcessParentOwner *owner); public: - LLPluginProcessParent(LLPluginProcessParentOwner *owner); + typedef boost::shared_ptr<LLPluginProcessParent> ptr_t; + ~LLPluginProcessParent(); void init(const std::string &launcher_filename, @@ -89,7 +94,10 @@ public: void sendMessage(const LLPluginMessage &message); void receiveMessage(const LLPluginMessage &message); - + + static ptr_t create(LLPluginProcessParentOwner *owner); + void requestShutdown(); + // Inherited from LLPluginMessagePipeOwner /*virtual*/ void receiveMessageRaw(const std::string &message); /*virtual*/ void receiveMessageEarly(const LLPluginMessage &message); @@ -121,7 +129,10 @@ public: static bool canPollThreadRun() { return (sPollSet || sPollsetNeedsRebuild || sUseReadThread); }; static void setUseReadThread(bool use_read_thread); static bool getUseReadThread() { return sUseReadThread; }; + + static void shutdown(); private: + typedef std::map<void *, ptr_t> mapInstances_t; enum EState { @@ -133,6 +144,7 @@ private: STATE_HELLO, // first message from the plugin process has been received STATE_LOADING, // process has been asked to load the plugin STATE_RUNNING, // + STATE_GOODBYE, STATE_LAUNCH_FAILURE, // Failure before plugin loaded STATE_ERROR, // generic bailout state STATE_CLEANUP, // clean everything up @@ -143,6 +155,9 @@ private: EState mState; void setState(EState state); + bool wantsPolling() const; + void removeFromProcessing(); + bool pluginLockedUp(); bool pluginLockedUpOrQuit(); @@ -185,12 +200,15 @@ private: static apr_pollset_t *sPollSet; static bool sPollsetNeedsRebuild; static LLMutex *sInstancesMutex; - static std::list<LLPluginProcessParent*> sInstances; + static mapInstances_t sInstances; static void dirtyPollSet(); static void updatePollset(); void servicePoll(); static LLThread *sReadThread; - + + LLTempBoundListener mPolling; + bool pollTick(); + LLMutex mIncomingQueueMutex; std::queue<LLPluginMessage> mIncomingQueue; }; diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp index 63ff5085c6..63ff5085c6 100755..100644 --- a/indra/llplugin/llpluginsharedmemory.cpp +++ b/indra/llplugin/llpluginsharedmemory.cpp diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h index c6cd49cabb..c6cd49cabb 100755..100644 --- a/indra/llplugin/llpluginsharedmemory.h +++ b/indra/llplugin/llpluginsharedmemory.h diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 6e7fefeb21..6e7fefeb21 100755..100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt diff --git a/indra/llplugin/slplugin/slplugin-objc.h b/indra/llplugin/slplugin/slplugin-objc.h index af0ebe1af2..af0ebe1af2 100755..100644 --- a/indra/llplugin/slplugin/slplugin-objc.h +++ b/indra/llplugin/slplugin/slplugin-objc.h diff --git a/indra/llplugin/slplugin/slplugin-objc.mm b/indra/llplugin/slplugin/slplugin-objc.mm index a5ab1d95c8..a5ab1d95c8 100755..100644 --- a/indra/llplugin/slplugin/slplugin-objc.mm +++ b/indra/llplugin/slplugin/slplugin-objc.mm diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index 6c9ba0ae52..684bcf1207 100755..100644 --- a/indra/llplugin/slplugin/slplugin.cpp +++ b/indra/llplugin/slplugin/slplugin.cpp @@ -310,4 +310,3 @@ int main(int argc, char **argv) return 0; } - diff --git a/indra/llplugin/slplugin/slplugin_info.plist b/indra/llplugin/slplugin/slplugin_info.plist index c4597380e0..c4597380e0 100755..100644 --- a/indra/llplugin/slplugin/slplugin_info.plist +++ b/indra/llplugin/slplugin/slplugin_info.plist diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp index c2cb236cba..c2cb236cba 100755..100644 --- a/indra/llplugin/tests/llplugincookiestore_test.cpp +++ b/indra/llplugin/tests/llplugincookiestore_test.cpp diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index d1475cf734..75ce624a58 100755..100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -8,6 +8,7 @@ include(LLMath) include(LLMessage) include(LLXML) include(LLPhysicsExtensions) +include(LLCharacter) include_directories( ${LLCOMMON_INCLUDE_DIRS} @@ -16,6 +17,7 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 + ${LLCHARACTER_INCLUDE_DIRS} ) include_directories(SYSTEM ${LLCOMMON_SYSTEM_INCLUDE_DIRS} @@ -24,11 +26,13 @@ include_directories(SYSTEM ) set(llprimitive_SOURCE_FILES + lldaeloader.cpp llmaterialid.cpp llmaterial.cpp llmaterialtable.cpp llmediaentry.cpp llmodel.cpp + llmodelloader.cpp llprimitive.cpp llprimtexturelist.cpp lltextureanim.cpp @@ -40,16 +44,17 @@ set(llprimitive_SOURCE_FILES set(llprimitive_HEADER_FILES CMakeLists.txt - + lldaeloader.h legacy_object_types.h - lllslconstants.h llmaterial.h llmaterialid.h llmaterialtable.h llmediaentry.h llmodel.h + llmodelloader.h llprimitive.h llprimtexturelist.h + lllslconstants.h lltextureanim.h lltextureentry.h lltreeparams.h @@ -72,6 +77,7 @@ target_link_libraries(llprimitive ${LLMESSAGE_LIBRARIES} ${LLXML_LIBRARIES} ${LLPHYSICSEXTENSIONS_LIBRARIES} + ${LLCHARACTER_LIBRARIES} ) diff --git a/indra/llprimitive/legacy_object_types.h b/indra/llprimitive/legacy_object_types.h index 697ad584a5..697ad584a5 100755..100644 --- a/indra/llprimitive/legacy_object_types.h +++ b/indra/llprimitive/legacy_object_types.h diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp new file mode 100644 index 0000000000..afc88fc861 --- /dev/null +++ b/indra/llprimitive/lldaeloader.cpp @@ -0,0 +1,2473 @@ +/** + * @file lldaeloader.cpp + * @brief LLDAELoader class implementation + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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$ + */ + +#if LL_MSVC +#pragma warning (disable : 4263) +#pragma warning (disable : 4264) +#endif +#include "dae.h" +#include "dom/domAsset.h" +#include "dom/domBind_material.h" +#include "dom/domCOLLADA.h" +#include "dom/domConstants.h" +#include "dom/domController.h" +#include "dom/domEffect.h" +#include "dom/domGeometry.h" +#include "dom/domInstance_geometry.h" +#include "dom/domInstance_material.h" +#include "dom/domInstance_node.h" +#include "dom/domInstance_effect.h" +#include "dom/domMaterial.h" +#include "dom/domMatrix.h" +#include "dom/domNode.h" +#include "dom/domProfile_COMMON.h" +#include "dom/domRotate.h" +#include "dom/domScale.h" +#include "dom/domTranslate.h" +#include "dom/domVisual_scene.h" +#if LL_MSVC +#pragma warning (default : 4263) +#pragma warning (default : 4264) +#endif + +#include <boost/lexical_cast.hpp> + +#include "lldaeloader.h" +#include "llsdserialize.h" +#include "lljoint.h" + +#include "glh/glh_linear.h" +#include "llmatrix4a.h" + +std::string colladaVersion[VERSIONTYPE_COUNT+1] = +{ + "1.4.0", + "1.4.1", + "Unsupported" +}; + +static const std::string lod_suffix[LLModel::NUM_LODS] = +{ + "_LOD0", + "_LOD1", + "_LOD2", + "", + "_PHYS", +}; + +const U32 LIMIT_MATERIALS_OUTPUT = 12; + +bool get_dom_sources(const domInputLocalOffset_Array& inputs, S32& pos_offset, S32& tc_offset, S32& norm_offset, S32 &idx_stride, + domSource* &pos_source, domSource* &tc_source, domSource* &norm_source) +{ + idx_stride = 0; + + for (U32 j = 0; j < inputs.getCount(); ++j) + { + idx_stride = llmax((S32) inputs[j]->getOffset(), idx_stride); + + if (strcmp(COMMON_PROFILE_INPUT_VERTEX, inputs[j]->getSemantic()) == 0) + { //found vertex array + const domURIFragmentType& uri = inputs[j]->getSource(); + daeElementRef elem = uri.getElement(); + domVertices* vertices = (domVertices*) elem.cast(); + if ( !vertices ) + { + return false; + } + + domInputLocal_Array& v_inp = vertices->getInput_array(); + + + for (U32 k = 0; k < v_inp.getCount(); ++k) + { + if (strcmp(COMMON_PROFILE_INPUT_POSITION, v_inp[k]->getSemantic()) == 0) + { + pos_offset = inputs[j]->getOffset(); + + const domURIFragmentType& uri = v_inp[k]->getSource(); + daeElementRef elem = uri.getElement(); + pos_source = (domSource*) elem.cast(); + } + + if (strcmp(COMMON_PROFILE_INPUT_NORMAL, v_inp[k]->getSemantic()) == 0) + { + norm_offset = inputs[j]->getOffset(); + + const domURIFragmentType& uri = v_inp[k]->getSource(); + daeElementRef elem = uri.getElement(); + norm_source = (domSource*) elem.cast(); + } + } + } + + if (strcmp(COMMON_PROFILE_INPUT_NORMAL, inputs[j]->getSemantic()) == 0) + { + //found normal array for this triangle list + norm_offset = inputs[j]->getOffset(); + const domURIFragmentType& uri = inputs[j]->getSource(); + daeElementRef elem = uri.getElement(); + norm_source = (domSource*) elem.cast(); + } + else if (strcmp(COMMON_PROFILE_INPUT_TEXCOORD, inputs[j]->getSemantic()) == 0) + { //found texCoords + tc_offset = inputs[j]->getOffset(); + const domURIFragmentType& uri = inputs[j]->getSource(); + daeElementRef elem = uri.getElement(); + tc_source = (domSource*) elem.cast(); + } + } + + idx_stride += 1; + + return true; +} + +LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domTrianglesRef& tri) +{ + LLVolumeFace face; + std::vector<LLVolumeFace::VertexData> verts; + std::vector<U16> indices; + + const domInputLocalOffset_Array& inputs = tri->getInput_array(); + + S32 pos_offset = -1; + S32 tc_offset = -1; + S32 norm_offset = -1; + + domSource* pos_source = NULL; + domSource* tc_source = NULL; + domSource* norm_source = NULL; + + S32 idx_stride = 0; + + if ( !get_dom_sources(inputs, pos_offset, tc_offset, norm_offset, idx_stride, pos_source, tc_source, norm_source)) + { + return LLModel::BAD_ELEMENT; + } + + if (!pos_source || !pos_source->getFloat_array()) + { + LL_WARNS() << "Unable to process mesh without position data; invalid model; invalid model." << LL_ENDL; + return LLModel::BAD_ELEMENT; + } + + domPRef p = tri->getP(); + domListOfUInts& idx = p->getValue(); + + domListOfFloats dummy ; + domListOfFloats& v = pos_source ? pos_source->getFloat_array()->getValue() : dummy ; + domListOfFloats& tc = tc_source ? tc_source->getFloat_array()->getValue() : dummy ; + domListOfFloats& n = norm_source ? norm_source->getFloat_array()->getValue() : dummy ; + + if (pos_source) + { + if(v.getCount() == 0) + { + return LLModel::BAD_ELEMENT; + } + + face.mExtents[0].set(v[0], v[1], v[2]); + face.mExtents[1].set(v[0], v[1], v[2]); + } + + LLVolumeFace::VertexMapData::PointMap point_map; + + for (U32 i = 0; i < idx.getCount(); i += idx_stride) + { + LLVolumeFace::VertexData cv; + if (pos_source) + { + cv.setPosition(LLVector4a(v[idx[i+pos_offset]*3+0], + v[idx[i+pos_offset]*3+1], + v[idx[i+pos_offset]*3+2])); + } + + if (tc_source) + { + cv.mTexCoord.setVec(tc[idx[i+tc_offset]*2+0], + tc[idx[i+tc_offset]*2+1]); + } + + if (norm_source) + { + cv.setNormal(LLVector4a(n[idx[i+norm_offset]*3+0], + n[idx[i+norm_offset]*3+1], + n[idx[i+norm_offset]*3+2])); + } + + BOOL found = FALSE; + + LLVolumeFace::VertexMapData::PointMap::iterator point_iter; + point_iter = point_map.find(LLVector3(cv.getPosition().getF32ptr())); + + if (point_iter != point_map.end()) + { + for (U32 j = 0; j < point_iter->second.size(); ++j) + { + // We have a matching loc + // + if ((point_iter->second)[j] == cv) + { + U16 shared_index = (point_iter->second)[j].mIndex; + + // Don't share verts within the same tri, degenerate + // + if ((indices.size() % 3) && (indices[indices.size()-1] != shared_index)) + { + found = true; + indices.push_back(shared_index); + } + break; + } + } + } + + if (!found) + { + update_min_max(face.mExtents[0], face.mExtents[1], cv.getPosition()); + verts.push_back(cv); + if (verts.size() >= 65535) + { + //llerrs << "Attempted to write model exceeding 16-bit index buffer limitation." << LL_ENDL; + return LLModel::VERTEX_NUMBER_OVERFLOW ; + } + U16 index = (U16) (verts.size()-1); + indices.push_back(index); + + LLVolumeFace::VertexMapData d; + d.setPosition(cv.getPosition()); + d.mTexCoord = cv.mTexCoord; + d.setNormal(cv.getNormal()); + d.mIndex = index; + if (point_iter != point_map.end()) + { + point_iter->second.push_back(d); + } + else + { + point_map[LLVector3(d.getPosition().getF32ptr())].push_back(d); + } + } + + if (indices.size()%3 == 0 && verts.size() >= 65532) + { + std::string material; + + if (tri->getMaterial()) + { + material = std::string(tri->getMaterial()); + } + + materials.push_back(material); + face_list.push_back(face); + face_list.rbegin()->fillFromLegacyData(verts, indices); + LLVolumeFace& new_face = *face_list.rbegin(); + if (!norm_source) + { + //ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!tc_source) + { + //ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + + face = LLVolumeFace(); + point_map.clear(); + } + } + + if (!verts.empty()) + { + std::string material; + + if (tri->getMaterial()) + { + material = std::string(tri->getMaterial()); + } + + materials.push_back(material); + face_list.push_back(face); + + face_list.rbegin()->fillFromLegacyData(verts, indices); + LLVolumeFace& new_face = *face_list.rbegin(); + if (!norm_source) + { + //ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!tc_source) + { + //ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + } + + return LLModel::NO_ERRORS ; +} + +LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domPolylistRef& poly) +{ + domPRef p = poly->getP(); + domListOfUInts& idx = p->getValue(); + + if (idx.getCount() == 0) + { + return LLModel::NO_ERRORS ; + } + + const domInputLocalOffset_Array& inputs = poly->getInput_array(); + + + domListOfUInts& vcount = poly->getVcount()->getValue(); + + S32 pos_offset = -1; + S32 tc_offset = -1; + S32 norm_offset = -1; + + domSource* pos_source = NULL; + domSource* tc_source = NULL; + domSource* norm_source = NULL; + + S32 idx_stride = 0; + + if (!get_dom_sources(inputs, pos_offset, tc_offset, norm_offset, idx_stride, pos_source, tc_source, norm_source)) + { + return LLModel::BAD_ELEMENT; + } + + LLVolumeFace face; + + std::vector<U16> indices; + std::vector<LLVolumeFace::VertexData> verts; + + domListOfFloats v; + domListOfFloats tc; + domListOfFloats n; + + if (pos_source) + { + v = pos_source->getFloat_array()->getValue(); + face.mExtents[0].set(v[0], v[1], v[2]); + face.mExtents[1].set(v[0], v[1], v[2]); + } + + if (tc_source) + { + tc = tc_source->getFloat_array()->getValue(); + } + + if (norm_source) + { + n = norm_source->getFloat_array()->getValue(); + } + + LLVolumeFace::VertexMapData::PointMap point_map; + + U32 cur_idx = 0; + for (U32 i = 0; i < vcount.getCount(); ++i) + { //for each polygon + U32 first_index = 0; + U32 last_index = 0; + for (U32 j = 0; j < vcount[i]; ++j) + { //for each vertex + + LLVolumeFace::VertexData cv; + + if (pos_source) + { + cv.getPosition().set(v[idx[cur_idx+pos_offset]*3+0], + v[idx[cur_idx+pos_offset]*3+1], + v[idx[cur_idx+pos_offset]*3+2]); + if (!cv.getPosition().isFinite3()) + { + LL_WARNS() << "Found NaN while loading position data from DAE-Model, invalid model." << LL_ENDL; + return LLModel::BAD_ELEMENT; + } + } + + if (tc_source) + { + cv.mTexCoord.setVec(tc[idx[cur_idx+tc_offset]*2+0], + tc[idx[cur_idx+tc_offset]*2+1]); + } + + if (norm_source) + { + cv.getNormal().set(n[idx[cur_idx+norm_offset]*3+0], + n[idx[cur_idx+norm_offset]*3+1], + n[idx[cur_idx+norm_offset]*3+2]); + + if (!cv.getNormal().isFinite3()) + { + LL_WARNS() << "Found NaN while loading normals from DAE-Model, invalid model." << LL_ENDL; + return LLModel::BAD_ELEMENT; + } + } + + cur_idx += idx_stride; + + BOOL found = FALSE; + + LLVolumeFace::VertexMapData::PointMap::iterator point_iter; + LLVector3 pos3(cv.getPosition().getF32ptr()); + point_iter = point_map.find(pos3); + + if (point_iter != point_map.end()) + { + for (U32 k = 0; k < point_iter->second.size(); ++k) + { + if ((point_iter->second)[k] == cv) + { + found = TRUE; + U32 index = (point_iter->second)[k].mIndex; + if (j == 0) + { + first_index = index; + } + else if (j == 1) + { + last_index = index; + } + else + { + // if these are the same, we have a very, very skinny triangle (coincident verts on one or more edges) + // + llassert((first_index != last_index) && (last_index != index) && (first_index != index)); + indices.push_back(first_index); + indices.push_back(last_index); + indices.push_back(index); + last_index = index; + } + + break; + } + } + } + + if (!found) + { + update_min_max(face.mExtents[0], face.mExtents[1], cv.getPosition()); + verts.push_back(cv); + if (verts.size() >= 65535) + { + //llerrs << "Attempted to write model exceeding 16-bit index buffer limitation." << LL_ENDL; + return LLModel::VERTEX_NUMBER_OVERFLOW ; + } + U16 index = (U16) (verts.size()-1); + + if (j == 0) + { + first_index = index; + } + else if (j == 1) + { + last_index = index; + } + else + { + // detect very skinny degenerate triangles with collapsed edges + // + llassert((first_index != last_index) && (last_index != index) && (first_index != index)); + indices.push_back(first_index); + indices.push_back(last_index); + indices.push_back(index); + last_index = index; + } + + LLVolumeFace::VertexMapData d; + d.setPosition(cv.getPosition()); + d.mTexCoord = cv.mTexCoord; + d.setNormal(cv.getNormal()); + d.mIndex = index; + if (point_iter != point_map.end()) + { + point_iter->second.push_back(d); + } + else + { + point_map[pos3].push_back(d); + } + } + + if (indices.size()%3 == 0 && indices.size() >= 65532) + { + std::string material; + + if (poly->getMaterial()) + { + material = std::string(poly->getMaterial()); + } + + materials.push_back(material); + face_list.push_back(face); + face_list.rbegin()->fillFromLegacyData(verts, indices); + LLVolumeFace& new_face = *face_list.rbegin(); + if (!norm_source) + { + //ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!tc_source) + { + //ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + + face = LLVolumeFace(); + verts.clear(); + indices.clear(); + point_map.clear(); + } + } + } + + if (!verts.empty()) + { + std::string material; + + if (poly->getMaterial()) + { + material = std::string(poly->getMaterial()); + } + + materials.push_back(material); + face_list.push_back(face); + face_list.rbegin()->fillFromLegacyData(verts, indices); + + LLVolumeFace& new_face = *face_list.rbegin(); + if (!norm_source) + { + //ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!tc_source) + { + //ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + } + + return LLModel::NO_ERRORS ; +} + +LLModel::EModelStatus load_face_from_dom_polygons(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domPolygonsRef& poly) +{ + LLVolumeFace face; + std::vector<U16> indices; + std::vector<LLVolumeFace::VertexData> verts; + + const domInputLocalOffset_Array& inputs = poly->getInput_array(); + + S32 v_offset = -1; + S32 n_offset = -1; + S32 t_offset = -1; + + domListOfFloats* v = NULL; + domListOfFloats* n = NULL; + domListOfFloats* t = NULL; + + U32 stride = 0; + for (U32 i = 0; i < inputs.getCount(); ++i) + { + stride = llmax((U32) inputs[i]->getOffset()+1, stride); + + if (strcmp(COMMON_PROFILE_INPUT_VERTEX, inputs[i]->getSemantic()) == 0) + { //found vertex array + v_offset = inputs[i]->getOffset(); + + const domURIFragmentType& uri = inputs[i]->getSource(); + daeElementRef elem = uri.getElement(); + domVertices* vertices = (domVertices*) elem.cast(); + if (!vertices) + { + return LLModel::BAD_ELEMENT; + } + domInputLocal_Array& v_inp = vertices->getInput_array(); + + for (U32 k = 0; k < v_inp.getCount(); ++k) + { + if (strcmp(COMMON_PROFILE_INPUT_POSITION, v_inp[k]->getSemantic()) == 0) + { + const domURIFragmentType& uri = v_inp[k]->getSource(); + daeElementRef elem = uri.getElement(); + domSource* src = (domSource*) elem.cast(); + if (!src) + { + return LLModel::BAD_ELEMENT; + } + v = &(src->getFloat_array()->getValue()); + } + } + } + else if (strcmp(COMMON_PROFILE_INPUT_NORMAL, inputs[i]->getSemantic()) == 0) + { + n_offset = inputs[i]->getOffset(); + //found normal array for this triangle list + const domURIFragmentType& uri = inputs[i]->getSource(); + daeElementRef elem = uri.getElement(); + domSource* src = (domSource*) elem.cast(); + if (!src) + { + return LLModel::BAD_ELEMENT; + } + n = &(src->getFloat_array()->getValue()); + } + else if (strcmp(COMMON_PROFILE_INPUT_TEXCOORD, inputs[i]->getSemantic()) == 0 && inputs[i]->getSet() == 0) + { //found texCoords + t_offset = inputs[i]->getOffset(); + const domURIFragmentType& uri = inputs[i]->getSource(); + daeElementRef elem = uri.getElement(); + domSource* src = (domSource*) elem.cast(); + if (!src) + { + return LLModel::BAD_ELEMENT; + } + t = &(src->getFloat_array()->getValue()); + } + } + + domP_Array& ps = poly->getP_array(); + + //make a triangle list in <verts> + for (U32 i = 0; i < ps.getCount(); ++i) + { //for each polygon + domListOfUInts& idx = ps[i]->getValue(); + for (U32 j = 0; j < idx.getCount()/stride; ++j) + { //for each vertex + if (j > 2) + { + U32 size = verts.size(); + LLVolumeFace::VertexData v0 = verts[size-3]; + LLVolumeFace::VertexData v1 = verts[size-1]; + + verts.push_back(v0); + verts.push_back(v1); + } + + LLVolumeFace::VertexData vert; + + + if (v) + { + U32 v_idx = idx[j*stride+v_offset]*3; + v_idx = llclamp(v_idx, (U32) 0, (U32) v->getCount()); + vert.getPosition().set(v->get(v_idx), + v->get(v_idx+1), + v->get(v_idx+2)); + } + + //bounds check n and t lookups because some FBX to DAE converters + //use negative indices and empty arrays to indicate data does not exist + //for a particular channel + if (n && n->getCount() > 0) + { + U32 n_idx = idx[j*stride+n_offset]*3; + n_idx = llclamp(n_idx, (U32) 0, (U32) n->getCount()); + vert.getNormal().set(n->get(n_idx), + n->get(n_idx+1), + n->get(n_idx+2)); + } + else + { + vert.getNormal().clear(); + } + + + if (t && t->getCount() > 0) + { + U32 t_idx = idx[j*stride+t_offset]*2; + t_idx = llclamp(t_idx, (U32) 0, (U32) t->getCount()); + vert.mTexCoord.setVec(t->get(t_idx), + t->get(t_idx+1)); + } + else + { + vert.mTexCoord.clear(); + } + + + verts.push_back(vert); + } + } + + if (verts.empty()) + { + return LLModel::NO_ERRORS; + } + + face.mExtents[0] = verts[0].getPosition(); + face.mExtents[1] = verts[0].getPosition(); + + //create a map of unique vertices to indices + std::map<LLVolumeFace::VertexData, U32> vert_idx; + + U32 cur_idx = 0; + for (U32 i = 0; i < verts.size(); ++i) + { + std::map<LLVolumeFace::VertexData, U32>::iterator iter = vert_idx.find(verts[i]); + if (iter == vert_idx.end()) + { + vert_idx[verts[i]] = cur_idx++; + } + } + + //build vertex array from map + std::vector<LLVolumeFace::VertexData> new_verts; + new_verts.resize(vert_idx.size()); + + for (std::map<LLVolumeFace::VertexData, U32>::iterator iter = vert_idx.begin(); iter != vert_idx.end(); ++iter) + { + new_verts[iter->second] = iter->first; + update_min_max(face.mExtents[0], face.mExtents[1], iter->first.getPosition()); + } + + //build index array from map + indices.resize(verts.size()); + + for (U32 i = 0; i < verts.size(); ++i) + { + indices[i] = vert_idx[verts[i]]; + llassert(!i || (indices[i-1] != indices[i])); + } + + // DEBUG just build an expanded triangle list + /*for (U32 i = 0; i < verts.size(); ++i) + { + indices.push_back((U16) i); + update_min_max(face.mExtents[0], face.mExtents[1], verts[i].getPosition()); + }*/ + + if (!new_verts.empty()) + { + std::string material; + + if (poly->getMaterial()) + { + material = std::string(poly->getMaterial()); + } + + materials.push_back(material); + face_list.push_back(face); + face_list.rbegin()->fillFromLegacyData(new_verts, indices); + + LLVolumeFace& new_face = *face_list.rbegin(); + if (!n) + { + //ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!t) + { + //ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + } + + return LLModel::NO_ERRORS ; +} + +//----------------------------------------------------------------------------- +// LLDAELoader +//----------------------------------------------------------------------------- +LLDAELoader::LLDAELoader( + std::string filename, + S32 lod, + load_callback_t load_cb, + joint_lookup_func_t joint_lookup_func, + texture_load_func_t texture_load_func, + state_callback_t state_cb, + void* opaque_userdata, + JointTransformMap& jointMap, + JointSet& jointsFromNodes, + U32 modelLimit) +: LLModelLoader( + filename, + lod, + load_cb, + joint_lookup_func, + texture_load_func, + state_cb, + opaque_userdata, + jointMap, + jointsFromNodes), +mGeneratedModelLimit(modelLimit), +mForceIdNaming(false) +{ +} + +LLDAELoader::~LLDAELoader() +{ +} + +struct ModelSort +{ + bool operator()(const LLPointer< LLModel >& lhs, const LLPointer< LLModel >& rhs) + { + if (lhs->mSubmodelID < rhs->mSubmodelID) + { + return true; + } + return LLStringUtil::compareInsensitive(lhs->mLabel, rhs->mLabel) < 0; + } +}; + +bool LLDAELoader::OpenFile(const std::string& filename) +{ + //no suitable slm exists, load from the .dae file + DAE dae; + domCOLLADA* dom = dae.open(filename); + + if (!dom) + { + LL_INFOS() <<" Error with dae - traditionally indicates a corrupt file."<<LL_ENDL; + setLoadState( ERROR_PARSING ); + return false; + } + //Dom version + daeString domVersion = dae.getDomVersion(); + std::string sldom(domVersion); + LL_INFOS()<<"Collada Importer Version: "<<sldom<<LL_ENDL; + //Dae version + domVersionType docVersion = dom->getVersion(); + //0=1.4 + //1=1.4.1 + //2=Currently unsupported, however may work + if (docVersion > 1 ) + { + docVersion = VERSIONTYPE_COUNT; + } + LL_INFOS()<<"Dae version "<<colladaVersion[docVersion]<<LL_ENDL; + + + daeDatabase* db = dae.getDatabase(); + + daeInt count = db->getElementCount(NULL, COLLADA_TYPE_MESH); + + daeDocument* doc = dae.getDoc(mFilename); + if (!doc) + { + LL_WARNS() << "can't find internal doc" << LL_ENDL; + return false; + } + + daeElement* root = doc->getDomRoot(); + if (!root) + { + LL_WARNS() << "document has no root" << LL_ENDL; + return false; + } + + //Verify some basic properties of the dae + //1. Basic validity check on controller + U32 controllerCount = (int) db->getElementCount( NULL, "controller" ); + bool result = false; + for ( int i=0; i<controllerCount; ++i ) + { + domController* pController = NULL; + db->getElement( (daeElement**) &pController, i , NULL, "controller" ); + result = verifyController( pController ); + if (!result) + { + LL_INFOS() << "Could not verify controller" << LL_ENDL; + setLoadState( ERROR_PARSING ); + return true; + } + } + + + //get unit scale + mTransform.setIdentity(); + + domAsset::domUnit* unit = daeSafeCast<domAsset::domUnit>(root->getDescendant(daeElement::matchType(domAsset::domUnit::ID()))); + + if (unit) + { + F32 meter = unit->getMeter(); + mTransform.mMatrix[0][0] = meter; + mTransform.mMatrix[1][1] = meter; + mTransform.mMatrix[2][2] = meter; + } + + //get up axis rotation + LLMatrix4 rotation; + + domUpAxisType up = UPAXISTYPE_Y_UP; // default is Y_UP + domAsset::domUp_axis* up_axis = + daeSafeCast<domAsset::domUp_axis>(root->getDescendant(daeElement::matchType(domAsset::domUp_axis::ID()))); + + if (up_axis) + { + up = up_axis->getValue(); + } + + if (up == UPAXISTYPE_X_UP) + { + rotation.initRotation(0.0f, 90.0f * DEG_TO_RAD, 0.0f); + } + else if (up == UPAXISTYPE_Y_UP) + { + rotation.initRotation(90.0f * DEG_TO_RAD, 0.0f, 0.0f); + } + + rotation *= mTransform; + mTransform = rotation; + + mTransform.condition(); + + mForceIdNaming = false; + std::vector<std::string> checkNames; + for (daeInt idx = 0; idx < count; ++idx) + { + domMesh* mesh = NULL; + db->getElement((daeElement**)&mesh, idx, NULL, COLLADA_TYPE_MESH); + + if (mesh) + { + std::string name = getLodlessLabel(mesh, false); + + std::vector<std::string>::iterator it; + it = std::find(checkNames.begin(), checkNames.end(), name); + if (it != checkNames.end()) + { + LL_WARNS() << "document has duplicate names, using IDs instead" << LL_ENDL; + mForceIdNaming = true; + break; + } + else + { + checkNames.push_back(name); + } + } + } + + U32 submodel_limit = count > 0 ? mGeneratedModelLimit/count : 0; + for (daeInt idx = 0; idx < count; ++idx) + { //build map of domEntities to LLModel + domMesh* mesh = NULL; + db->getElement((daeElement**) &mesh, idx, NULL, COLLADA_TYPE_MESH); + + if (mesh) + { + + std::vector<LLModel*> models; + + loadModelsFromDomMesh(mesh, models, submodel_limit); + + std::vector<LLModel*>::iterator i; + i = models.begin(); + while (i != models.end()) + { + LLModel* mdl = *i; + if(mdl->getStatus() != LLModel::NO_ERRORS) + { + setLoadState(ERROR_MODEL + mdl->getStatus()) ; + return false; //abort + } + + if (mdl && validate_model(mdl)) + { + mModelList.push_back(mdl); + mModelsMap[mesh].push_back(mdl); + } + i++; + } + } + } + + std::sort(mModelList.begin(), mModelList.end(), ModelSort()); + + model_list::iterator model_iter = mModelList.begin(); + while (model_iter != mModelList.end()) + { + LLModel* mdl = *model_iter; + U32 material_count = mdl->mMaterialList.size(); + LL_INFOS() << "Importing " << mdl->mLabel << " model with " << material_count << " material references" << LL_ENDL; + std::vector<std::string>::iterator mat_iter = mdl->mMaterialList.begin(); + std::vector<std::string>::iterator end_iter = material_count > LIMIT_MATERIALS_OUTPUT + ? mat_iter + LIMIT_MATERIALS_OUTPUT + : mdl->mMaterialList.end(); + while (mat_iter != end_iter) + { + LL_INFOS() << mdl->mLabel << " references " << (*mat_iter) << LL_ENDL; + mat_iter++; + } + model_iter++; + } + + count = db->getElementCount(NULL, COLLADA_TYPE_SKIN); + for (daeInt idx = 0; idx < count; ++idx) + { //add skinned meshes as instances + domSkin* skin = NULL; + db->getElement((daeElement**) &skin, idx, NULL, COLLADA_TYPE_SKIN); + + if (skin) + { + domGeometry* geom = daeSafeCast<domGeometry>(skin->getSource().getElement()); + + if (geom) + { + domMesh* mesh = geom->getMesh(); + if (mesh) + { + std::vector< LLPointer< LLModel > >::iterator i = mModelsMap[mesh].begin(); + while (i != mModelsMap[mesh].end()) + { + LLPointer<LLModel> mdl = *i; + LLDAELoader::processDomModel(mdl, &dae, root, mesh, skin); + i++; + } + } + } + } + } + + LL_INFOS()<< "Collada skins processed: " << count <<LL_ENDL; + + daeElement* scene = root->getDescendant("visual_scene"); + + if (!scene) + { + LL_WARNS() << "document has no visual_scene" << LL_ENDL; + setLoadState( ERROR_PARSING ); + return true; + } + + setLoadState( DONE ); + + bool badElement = false; + + processElement( scene, badElement, &dae ); + + if ( badElement ) + { + LL_INFOS()<<"Scene could not be parsed"<<LL_ENDL; + setLoadState( ERROR_PARSING ); + } + + return true; +} + +void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, domMesh* mesh, domSkin* skin) +{ + llassert(model && dae && mesh && skin); + + if (model) + { + LLVector3 mesh_scale_vector; + LLVector3 mesh_translation_vector; + model->getNormalizedScaleTranslation(mesh_scale_vector, mesh_translation_vector); + + LLMatrix4 normalized_transformation; + normalized_transformation.setTranslation(mesh_translation_vector); + + LLMatrix4 mesh_scale; + mesh_scale.initScale(mesh_scale_vector); + mesh_scale *= normalized_transformation; + normalized_transformation = mesh_scale; + + glh::matrix4f inv_mat((F32*) normalized_transformation.mMatrix); + inv_mat = inv_mat.inverse(); + LLMatrix4 inverse_normalized_transformation(inv_mat.m); + + domSkin::domBind_shape_matrix* bind_mat = skin->getBind_shape_matrix(); + + if (bind_mat) + { //get bind shape matrix + domFloat4x4& dom_value = bind_mat->getValue(); + + LLMeshSkinInfo& skin_info = model->mSkinInfo; + + for (int i = 0; i < 4; i++) + { + for(int j = 0; j < 4; j++) + { + skin_info.mBindShapeMatrix.mMatrix[i][j] = dom_value[i + j*4]; + } + } + + LLMatrix4 trans = normalized_transformation; + trans *= skin_info.mBindShapeMatrix; + skin_info.mBindShapeMatrix = trans; + } + + + //Some collada setup for accessing the skeleton + daeElement* pElement = 0; + dae->getDatabase()->getElement( &pElement, 0, 0, "skeleton" ); + + //Try to get at the skeletal instance controller + domInstance_controller::domSkeleton* pSkeleton = daeSafeCast<domInstance_controller::domSkeleton>( pElement ); + bool missingSkeletonOrScene = false; + + //If no skeleton, do a breadth-first search to get at specific joints + bool rootNode = false; + + //Need to test for a skeleton that does not have a root node + //This occurs when your instance controller does not have an associated scene + if ( pSkeleton ) + { + daeElement* pSkeletonRootNode = pSkeleton->getValue().getElement(); + if ( pSkeletonRootNode ) + { + rootNode = true; + } + + } + if ( !pSkeleton || !rootNode ) + { + daeElement* pScene = root->getDescendant("visual_scene"); + if ( !pScene ) + { + LL_WARNS()<<"No visual scene - unable to parse bone offsets "<<LL_ENDL; + missingSkeletonOrScene = true; + } + else + { + //Get the children at this level + daeTArray< daeSmartRef<daeElement> > children = pScene->getChildren(); + S32 childCount = children.getCount(); + + //Process any children that are joints + //Not all children are joints, some code be ambient lights, cameras, geometry etc.. + for (S32 i = 0; i < childCount; ++i) + { + domNode* pNode = daeSafeCast<domNode>(children[i]); + if ( isNodeAJoint( pNode ) ) + { + processJointNode( pNode, mJointList ); + } + } + } + } + else + //Has Skeleton + { + //Get the root node of the skeleton + daeElement* pSkeletonRootNode = pSkeleton->getValue().getElement(); + if ( pSkeletonRootNode ) + { + //Once we have the root node - start acccessing it's joint components + const int jointCnt = mJointMap.size(); + JointMap :: const_iterator jointIt = mJointMap.begin(); + + //Loop over all the possible joints within the .dae - using the allowed joint list in the ctor. + for ( int i=0; i<jointCnt; ++i, ++jointIt ) + { + //Build a joint for the resolver to work with + char str[64]={0}; + sprintf(str,"./%s",(*jointIt).first.c_str() ); + //LL_WARNS()<<"Joint "<< str <<LL_ENDL; + + //Setup the resolver + daeSIDResolver resolver( pSkeletonRootNode, str ); + + //Look for the joint + domNode* pJoint = daeSafeCast<domNode>( resolver.getElement() ); + if ( pJoint ) + { + //Pull out the translate id and store it in the jointTranslations map + daeSIDResolver jointResolverA( pJoint, "./translate" ); + domTranslate* pTranslateA = daeSafeCast<domTranslate>( jointResolverA.getElement() ); + daeSIDResolver jointResolverB( pJoint, "./location" ); + domTranslate* pTranslateB = daeSafeCast<domTranslate>( jointResolverB.getElement() ); + + LLMatrix4 workingTransform; + + //Translation via SID + if ( pTranslateA ) + { + extractTranslation( pTranslateA, workingTransform ); + } + else + if ( pTranslateB ) + { + extractTranslation( pTranslateB, workingTransform ); + } + else + { + //Translation via child from element + daeElement* pTranslateElement = getChildFromElement( pJoint, "translate" ); + if ( pTranslateElement && pTranslateElement->typeID() != domTranslate::ID() ) + { + LL_WARNS()<< "The found element is not a translate node" <<LL_ENDL; + missingSkeletonOrScene = true; + } + else + if ( pTranslateElement ) + { + extractTranslationViaElement( pTranslateElement, workingTransform ); + } + else + { + extractTranslationViaSID( pJoint, workingTransform ); + } + + } + + //Store the joint transform w/respect to it's name. + mJointList[(*jointIt).second.c_str()] = workingTransform; + } + } + + //If anything failed in regards to extracting the skeleton, joints or translation id, + //mention it + if ( missingSkeletonOrScene ) + { + LL_WARNS()<< "Partial jointmap found in asset - did you mean to just have a partial map?" << LL_ENDL; + } + }//got skeleton? + } + + + domSkin::domJoints* joints = skin->getJoints(); + + domInputLocal_Array& joint_input = joints->getInput_array(); + + for (size_t i = 0; i < joint_input.getCount(); ++i) + { + domInputLocal* input = joint_input.get(i); + xsNMTOKEN semantic = input->getSemantic(); + + if (strcmp(semantic, COMMON_PROFILE_INPUT_JOINT) == 0) + { //found joint source, fill model->mJointMap and model->mSkinInfo.mJointNames + daeElement* elem = input->getSource().getElement(); + + domSource* source = daeSafeCast<domSource>(elem); + if (source) + { + + + domName_array* names_source = source->getName_array(); + + if (names_source) + { + domListOfNames &names = names_source->getValue(); + + for (size_t j = 0; j < names.getCount(); ++j) + { + std::string name(names.get(j)); + if (mJointMap.find(name) != mJointMap.end()) + { + name = mJointMap[name]; + } + model->mSkinInfo.mJointNames.push_back(name); + model->mSkinInfo.mJointMap[name] = j; + } + } + else + { + domIDREF_array* names_source = source->getIDREF_array(); + if (names_source) + { + xsIDREFS& names = names_source->getValue(); + + for (size_t j = 0; j < names.getCount(); ++j) + { + std::string name(names.get(j).getID()); + if (mJointMap.find(name) != mJointMap.end()) + { + name = mJointMap[name]; + } + model->mSkinInfo.mJointNames.push_back(name); + model->mSkinInfo.mJointMap[name] = j; + } + } + } + } + } + else if (strcmp(semantic, COMMON_PROFILE_INPUT_INV_BIND_MATRIX) == 0) + { //found inv_bind_matrix array, fill model->mInvBindMatrix + domSource* source = daeSafeCast<domSource>(input->getSource().getElement()); + if (source) + { + domFloat_array* t = source->getFloat_array(); + if (t) + { + domListOfFloats& transform = t->getValue(); + S32 count = transform.getCount()/16; + + for (S32 k = 0; k < count; ++k) + { + LLMatrix4 mat; + + for (int i = 0; i < 4; i++) + { + for(int j = 0; j < 4; j++) + { + mat.mMatrix[i][j] = transform[k*16 + i + j*4]; + } + } + + model->mSkinInfo.mInvBindMatrix.push_back(mat); + } + } + } + } + } + + //Now that we've parsed the joint array, let's determine if we have a full rig + //(which means we have all the joint sthat are required for an avatar versus + //a skinned asset attached to a node in a file that contains an entire skeleton, + //but does not use the skeleton). + buildJointToNodeMappingFromScene( root ); + critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames ); + + if ( !missingSkeletonOrScene ) + { + //Set the joint translations on the avatar - if it's a full mapping + //The joints are reset in the dtor + if ( getRigWithSceneParity() ) + { + JointMap :: const_iterator masterJointIt = mJointMap.begin(); + JointMap :: const_iterator masterJointItEnd = mJointMap.end(); + for (;masterJointIt!=masterJointItEnd;++masterJointIt ) + { + std::string lookingForJoint = (*masterJointIt).first.c_str(); + + if ( mJointList.find( lookingForJoint ) != mJointList.end() ) + { + //LL_INFOS()<<"joint "<<lookingForJoint.c_str()<<LL_ENDL; + LLMatrix4 jointTransform = mJointList[lookingForJoint]; + LLJoint* pJoint = mJointLookupFunc(lookingForJoint,mOpaqueData); + if ( pJoint ) + { + LLUUID fake_mesh_id; + fake_mesh_id.generate(); + pJoint->addAttachmentPosOverride( jointTransform.getTranslation(), fake_mesh_id, ""); + } + else + { + //Most likely an error in the asset. + LL_WARNS()<<"Tried to apply joint position from .dae, but it did not exist in the avatar rig." << LL_ENDL; + } + } + } + } + } //missingSkeletonOrScene + + //We need to construct the alternate bind matrix (which contains the new joint positions) + //in the same order as they were stored in the joint buffer. The joints associated + //with the skeleton are not stored in the same order as they are in the exported joint buffer. + //This remaps the skeletal joints to be in the same order as the joints stored in the model. + std::vector<std::string> :: const_iterator jointIt = model->mSkinInfo.mJointNames.begin(); + const int jointCnt = model->mSkinInfo.mJointNames.size(); + for ( int i=0; i<jointCnt; ++i, ++jointIt ) + { + std::string lookingForJoint = (*jointIt).c_str(); + //Look for the joint xform that we extracted from the skeleton, using the jointIt as the key + //and store it in the alternate bind matrix + if ( mJointList.find( lookingForJoint ) != mJointList.end() ) + { + LLMatrix4 jointTransform = mJointList[lookingForJoint]; + LLMatrix4 newInverse = model->mSkinInfo.mInvBindMatrix[i]; + newInverse.setTranslation( mJointList[lookingForJoint].getTranslation() ); + model->mSkinInfo.mAlternateBindMatrix.push_back( newInverse ); + } + else + { + LL_WARNS()<<"Possibly misnamed/missing joint [" <<lookingForJoint.c_str()<<" ] "<<LL_ENDL; + } + } + + //grab raw position array + + domVertices* verts = mesh->getVertices(); + if (verts) + { + domInputLocal_Array& inputs = verts->getInput_array(); + for (size_t i = 0; i < inputs.getCount() && model->mPosition.empty(); ++i) + { + if (strcmp(inputs[i]->getSemantic(), COMMON_PROFILE_INPUT_POSITION) == 0) + { + domSource* pos_source = daeSafeCast<domSource>(inputs[i]->getSource().getElement()); + if (pos_source) + { + domFloat_array* pos_array = pos_source->getFloat_array(); + if (pos_array) + { + domListOfFloats& pos = pos_array->getValue(); + + for (size_t j = 0; j < pos.getCount(); j += 3) + { + if (pos.getCount() <= j+2) + { + LL_ERRS() << "Invalid position array size." << LL_ENDL; + } + + LLVector3 v(pos[j], pos[j+1], pos[j+2]); + + //transform from COLLADA space to volume space + v = v * inverse_normalized_transformation; + + model->mPosition.push_back(v); + } + } + } + } + } + } + + //grab skin weights array + domSkin::domVertex_weights* weights = skin->getVertex_weights(); + if (weights) + { + domInputLocalOffset_Array& inputs = weights->getInput_array(); + domFloat_array* vertex_weights = NULL; + for (size_t i = 0; i < inputs.getCount(); ++i) + { + if (strcmp(inputs[i]->getSemantic(), COMMON_PROFILE_INPUT_WEIGHT) == 0) + { + domSource* weight_source = daeSafeCast<domSource>(inputs[i]->getSource().getElement()); + if (weight_source) + { + vertex_weights = weight_source->getFloat_array(); + } + } + } + + if (vertex_weights) + { + domListOfFloats& w = vertex_weights->getValue(); + domListOfUInts& vcount = weights->getVcount()->getValue(); + domListOfInts& v = weights->getV()->getValue(); + + U32 c_idx = 0; + for (size_t vc_idx = 0; vc_idx < vcount.getCount(); ++vc_idx) + { //for each vertex + daeUInt count = vcount[vc_idx]; + + //create list of weights that influence this vertex + LLModel::weight_list weight_list; + + for (daeUInt i = 0; i < count; ++i) + { //for each weight + daeInt joint_idx = v[c_idx++]; + daeInt weight_idx = v[c_idx++]; + + if (joint_idx == -1) + { + //ignore bindings to bind_shape_matrix + continue; + } + + F32 weight_value = w[weight_idx]; + + weight_list.push_back(LLModel::JointWeight(joint_idx, weight_value)); + } + + //sort by joint weight + std::sort(weight_list.begin(), weight_list.end(), LLModel::CompareWeightGreater()); + + std::vector<LLModel::JointWeight> wght; + + F32 total = 0.f; + + for (U32 i = 0; i < llmin((U32) 4, (U32) weight_list.size()); ++i) + { //take up to 4 most significant weights + if (weight_list[i].mWeight > 0.f) + { + wght.push_back( weight_list[i] ); + total += weight_list[i].mWeight; + } + } + + F32 scale = 1.f/total; + if (scale != 1.f) + { //normalize weights + for (U32 i = 0; i < wght.size(); ++i) + { + wght[i].mWeight *= scale; + } + } + + model->mSkinWeights[model->mPosition[vc_idx]] = wght; + } + } + + } + + //add instance to scene for this model + + LLMatrix4 transformation; + transformation.initScale(mesh_scale_vector); + transformation.setTranslation(mesh_translation_vector); + transformation *= mTransform; + + std::map<std::string, LLImportMaterial> materials; + for (U32 i = 0; i < model->mMaterialList.size(); ++i) + { + materials[model->mMaterialList[i]] = LLImportMaterial(); + } + mScene[transformation].push_back(LLModelInstance(model, model->mLabel, transformation, materials)); + stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); + } +} + +//----------------------------------------------------------------------------- +// buildJointToNodeMappingFromScene() +//----------------------------------------------------------------------------- +void LLDAELoader::buildJointToNodeMappingFromScene( daeElement* pRoot ) +{ + daeElement* pScene = pRoot->getDescendant("visual_scene"); + if ( pScene ) + { + daeTArray< daeSmartRef<daeElement> > children = pScene->getChildren(); + S32 childCount = children.getCount(); + for (S32 i = 0; i < childCount; ++i) + { + domNode* pNode = daeSafeCast<domNode>(children[i]); + processJointToNodeMapping( pNode ); + } + } +} +//----------------------------------------------------------------------------- +// processJointToNodeMapping() +//----------------------------------------------------------------------------- +void LLDAELoader::processJointToNodeMapping( domNode* pNode ) +{ + if ( isNodeAJoint( pNode ) ) + { + //1.Store the parent + std::string nodeName = pNode->getName(); + if ( !nodeName.empty() ) + { + mJointsFromNode.push_front( pNode->getName() ); + } + //2. Handle the kiddo's + processChildJoints( pNode ); + } + else + { + //Determine if the're any children wrt to this failed node. + //This occurs when an armature is exported and ends up being what essentially amounts to + //as the root for the visual_scene + if ( pNode ) + { + processChildJoints( pNode ); + } + else + { + LL_INFOS()<<"Node is NULL"<<LL_ENDL; + } + + } +} +//----------------------------------------------------------------------------- +// processChildJoint() +//----------------------------------------------------------------------------- +void LLDAELoader::processChildJoints( domNode* pParentNode ) +{ + daeTArray< daeSmartRef<daeElement> > childOfChild = pParentNode->getChildren(); + S32 childOfChildCount = childOfChild.getCount(); + for (S32 i = 0; i < childOfChildCount; ++i) + { + domNode* pChildNode = daeSafeCast<domNode>( childOfChild[i] ); + if ( pChildNode ) + { + processJointToNodeMapping( pChildNode ); + } + } +} + +//----------------------------------------------------------------------------- +// isNodeAJoint() +//----------------------------------------------------------------------------- +bool LLDAELoader::isNodeAJoint( domNode* pNode ) +{ + if ( !pNode || !pNode->getName() ) + { + LL_INFOS()<<"Created node is NULL or invalid"<<LL_ENDL; + return false; + } + + return LLModelLoader::isNodeAJoint(pNode->getName()); +} +//----------------------------------------------------------------------------- +// verifyCount +//----------------------------------------------------------------------------- +bool LLDAELoader::verifyCount( int expected, int result ) +{ + if ( expected != result ) + { + LL_INFOS()<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<LL_ENDL; + return false; + } + return true; +} +//----------------------------------------------------------------------------- +// verifyController +//----------------------------------------------------------------------------- +bool LLDAELoader::verifyController( domController* pController ) +{ + + bool result = true; + + domSkin* pSkin = pController->getSkin(); + + if ( pSkin ) + { + xsAnyURI & uri = pSkin->getSource(); + domElement* pElement = uri.getElement(); + + if ( !pElement ) + { + LL_INFOS()<<"Can't resolve skin source"<<LL_ENDL; + return false; + } + + daeString type_str = pElement->getTypeName(); + if ( stricmp(type_str, "geometry") == 0 ) + { + //Skin is reference directly by geometry and get the vertex count from skin + domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); + U32 vertexWeightsCount = pVertexWeights->getCount(); + domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); + domMesh* pMesh = pGeometry->getMesh(); + + if ( pMesh ) + { + //Get vertex count from geometry + domVertices* pVertices = pMesh->getVertices(); + if ( !pVertices ) + { + LL_INFOS()<<"No vertices!"<<LL_ENDL; + return false; + } + + if ( pVertices ) + { + xsAnyURI src = pVertices->getInput_array()[0]->getSource(); + domSource* pSource = (domSource*) (domElement*) src.getElement(); + U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); + result = verifyCount( verticesCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + } + } + + U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); + result = verifyCount( vcountCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + + domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); + U32 sum = 0; + for (size_t i=0; i<vcountCount; i++) + { + sum += pVertexWeights->getVcount()->getValue()[i]; + } + result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); + } + } + + return result; +} + +//----------------------------------------------------------------------------- +// extractTranslation() +//----------------------------------------------------------------------------- +void LLDAELoader::extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ) +{ + domFloat3 jointTrans = pTranslate->getValue(); + LLVector3 singleJointTranslation( jointTrans[0], jointTrans[1], jointTrans[2] ); + transform.setTranslation( singleJointTranslation ); +} +//----------------------------------------------------------------------------- +// extractTranslationViaElement() +//----------------------------------------------------------------------------- +void LLDAELoader::extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ) +{ + if ( pTranslateElement ) + { + domTranslate* pTranslateChild = dynamic_cast<domTranslate*>( pTranslateElement ); + domFloat3 translateChild = pTranslateChild->getValue(); + LLVector3 singleJointTranslation( translateChild[0], translateChild[1], translateChild[2] ); + transform.setTranslation( singleJointTranslation ); + } +} +//----------------------------------------------------------------------------- +// extractTranslationViaSID() +//----------------------------------------------------------------------------- +void LLDAELoader::extractTranslationViaSID( daeElement* pElement, LLMatrix4& transform ) +{ + if ( pElement ) + { + daeSIDResolver resolver( pElement, "./transform" ); + domMatrix* pMatrix = daeSafeCast<domMatrix>( resolver.getElement() ); + //We are only extracting out the translational component atm + LLMatrix4 workingTransform; + if ( pMatrix ) + { + domFloat4x4 domArray = pMatrix->getValue(); + for ( int i = 0; i < 4; i++ ) + { + for( int j = 0; j < 4; j++ ) + { + workingTransform.mMatrix[i][j] = domArray[i + j*4]; + } + } + LLVector3 trans = workingTransform.getTranslation(); + transform.setTranslation( trans ); + } + } + else + { + LL_WARNS()<<"Element is nonexistent - empty/unsupported node."<<LL_ENDL; + } +} +//----------------------------------------------------------------------------- +// processJointNode() +//----------------------------------------------------------------------------- +void LLDAELoader::processJointNode( domNode* pNode, JointTransformMap& jointTransforms ) +{ + if (pNode->getName() == NULL) + { + LL_WARNS() << "nameless node, can't process" << LL_ENDL; + return; + } + + //LL_WARNS()<<"ProcessJointNode# Node:" <<pNode->getName()<<LL_ENDL; + + //1. handle the incoming node - extract out translation via SID or element + + LLMatrix4 workingTransform; + + //Pull out the translate id and store it in the jointTranslations map + daeSIDResolver jointResolverA( pNode, "./translate" ); + domTranslate* pTranslateA = daeSafeCast<domTranslate>( jointResolverA.getElement() ); + daeSIDResolver jointResolverB( pNode, "./location" ); + domTranslate* pTranslateB = daeSafeCast<domTranslate>( jointResolverB.getElement() ); + + //Translation via SID was successful + if ( pTranslateA ) + { + extractTranslation( pTranslateA, workingTransform ); + } + else + if ( pTranslateB ) + { + extractTranslation( pTranslateB, workingTransform ); + } + else + { + //Translation via child from element + daeElement* pTranslateElement = getChildFromElement( pNode, "translate" ); + if ( !pTranslateElement || pTranslateElement->typeID() != domTranslate::ID() ) + { + //LL_WARNS()<< "The found element is not a translate node" <<LL_ENDL; + daeSIDResolver jointResolver( pNode, "./matrix" ); + domMatrix* pMatrix = daeSafeCast<domMatrix>( jointResolver.getElement() ); + if ( pMatrix ) + { + //LL_INFOS()<<"A matrix SID was however found!"<<LL_ENDL; + domFloat4x4 domArray = pMatrix->getValue(); + for ( int i = 0; i < 4; i++ ) + { + for( int j = 0; j < 4; j++ ) + { + workingTransform.mMatrix[i][j] = domArray[i + j*4]; + } + } + } + else + { + LL_WARNS()<< "The found element is not translate or matrix node - most likely a corrupt export!" <<LL_ENDL; + } + } + else + { + extractTranslationViaElement( pTranslateElement, workingTransform ); + } + } + + //Store the working transform relative to the nodes name. + jointTransforms[ pNode->getName() ] = workingTransform; + + //2. handle the nodes children + + //Gather and handle the incoming nodes children + daeTArray< daeSmartRef<daeElement> > childOfChild = pNode->getChildren(); + S32 childOfChildCount = childOfChild.getCount(); + + for (S32 i = 0; i < childOfChildCount; ++i) + { + domNode* pChildNode = daeSafeCast<domNode>( childOfChild[i] ); + if ( pChildNode ) + { + processJointNode( pChildNode, jointTransforms ); + } + } +} +//----------------------------------------------------------------------------- +// getChildFromElement() +//----------------------------------------------------------------------------- +daeElement* LLDAELoader::getChildFromElement( daeElement* pElement, std::string const & name ) +{ + daeElement* pChildOfElement = pElement->getChild( name.c_str() ); + if ( pChildOfElement ) + { + return pChildOfElement; + } + LL_WARNS()<< "Could not find a child [" << name << "] for the element: \"" << pElement->getAttribute("id") << "\"" << LL_ENDL; + return NULL; +} + +void LLDAELoader::processElement( daeElement* element, bool& badElement, DAE* dae ) +{ + LLMatrix4 saved_transform; + bool pushed_mat = false; + + domNode* node = daeSafeCast<domNode>(element); + if (node) + { + pushed_mat = true; + saved_transform = mTransform; + } + + domTranslate* translate = daeSafeCast<domTranslate>(element); + if (translate) + { + domFloat3 dom_value = translate->getValue(); + + LLMatrix4 translation; + translation.setTranslation(LLVector3(dom_value[0], dom_value[1], dom_value[2])); + + translation *= mTransform; + mTransform = translation; + mTransform.condition(); + } + + domRotate* rotate = daeSafeCast<domRotate>(element); + if (rotate) + { + domFloat4 dom_value = rotate->getValue(); + + LLMatrix4 rotation; + rotation.initRotTrans(dom_value[3] * DEG_TO_RAD, LLVector3(dom_value[0], dom_value[1], dom_value[2]), LLVector3(0, 0, 0)); + + rotation *= mTransform; + mTransform = rotation; + mTransform.condition(); + } + + domScale* scale = daeSafeCast<domScale>(element); + if (scale) + { + domFloat3 dom_value = scale->getValue(); + + + LLVector3 scale_vector = LLVector3(dom_value[0], dom_value[1], dom_value[2]); + scale_vector.abs(); // Set all values positive, since we don't currently support mirrored meshes + LLMatrix4 scaling; + scaling.initScale(scale_vector); + + scaling *= mTransform; + mTransform = scaling; + mTransform.condition(); + } + + domMatrix* matrix = daeSafeCast<domMatrix>(element); + if (matrix) + { + domFloat4x4 dom_value = matrix->getValue(); + + LLMatrix4 matrix_transform; + + for (int i = 0; i < 4; i++) + { + for(int j = 0; j < 4; j++) + { + matrix_transform.mMatrix[i][j] = dom_value[i + j*4]; + } + } + + matrix_transform *= mTransform; + mTransform = matrix_transform; + mTransform.condition(); + } + + domInstance_geometry* instance_geo = daeSafeCast<domInstance_geometry>(element); + if (instance_geo) + { + domGeometry* geo = daeSafeCast<domGeometry>(instance_geo->getUrl().getElement()); + if (geo) + { + domMesh* mesh = daeSafeCast<domMesh>(geo->getDescendant(daeElement::matchType(domMesh::ID()))); + if (mesh) + { + + std::vector< LLPointer< LLModel > >::iterator i = mModelsMap[mesh].begin(); + while (i != mModelsMap[mesh].end()) + { + LLModel* model = *i; + + LLMatrix4 transformation = mTransform; + + if (mTransform.determinant() < 0) + { //negative scales are not supported + LL_INFOS() << "Negative scale detected, unsupported transform. domInstance_geometry: " << getElementLabel(instance_geo) << LL_ENDL; + badElement = true; + } + + LLModelLoader::material_map materials = getMaterials(model, instance_geo, dae); + + // adjust the transformation to compensate for mesh normalization + LLVector3 mesh_scale_vector; + LLVector3 mesh_translation_vector; + model->getNormalizedScaleTranslation(mesh_scale_vector, mesh_translation_vector); + + LLMatrix4 mesh_translation; + mesh_translation.setTranslation(mesh_translation_vector); + mesh_translation *= transformation; + transformation = mesh_translation; + + LLMatrix4 mesh_scale; + mesh_scale.initScale(mesh_scale_vector); + mesh_scale *= transformation; + transformation = mesh_scale; + + if (transformation.determinant() < 0) + { //negative scales are not supported + LL_INFOS() << "Negative scale detected, unsupported post-normalization transform. domInstance_geometry: " << getElementLabel(instance_geo) << LL_ENDL; + badElement = true; + } + + std::string label; + + if (model->mLabel.empty()) + { + label = getLodlessLabel(instance_geo, mForceIdNaming); + + llassert(!label.empty()); + + if (model->mSubmodelID) + { + label += (char)((int)'a' + model->mSubmodelID); + } + + model->mLabel = label + lod_suffix[mLod]; + } + else + { + // Don't change model's name if possible, it will play havoc with scenes that already use said model. + size_t ext_pos = getSuffixPosition(model->mLabel); + if (ext_pos != -1) + { + label = model->mLabel.substr(0, ext_pos); + } + else + { + label = model->mLabel; + } + } + + mScene[transformation].push_back(LLModelInstance(model, label, transformation, materials)); + stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); + i++; + } + } + } + else + { + LL_INFOS()<<"Unable to resolve geometry URL."<<LL_ENDL; + badElement = true; + } + + } + + domInstance_node* instance_node = daeSafeCast<domInstance_node>(element); + if (instance_node) + { + daeElement* instance = instance_node->getUrl().getElement(); + if (instance) + { + processElement(instance,badElement, dae); + } + } + + //process children + daeTArray< daeSmartRef<daeElement> > children = element->getChildren(); + int childCount = children.getCount(); + for (S32 i = 0; i < childCount; i++) + { + processElement(children[i],badElement, dae); + } + + if (pushed_mat) + { //this element was a node, restore transform before processiing siblings + mTransform = saved_transform; + } +} + +std::map<std::string, LLImportMaterial> LLDAELoader::getMaterials(LLModel* model, domInstance_geometry* instance_geo, DAE* dae) +{ + std::map<std::string, LLImportMaterial> materials; + for (int i = 0; i < model->mMaterialList.size(); i++) + { + LLImportMaterial import_material; + + domInstance_material* instance_mat = NULL; + + domBind_material::domTechnique_common* technique = + daeSafeCast<domBind_material::domTechnique_common>(instance_geo->getDescendant(daeElement::matchType(domBind_material::domTechnique_common::ID()))); + + if (technique) + { + daeTArray< daeSmartRef<domInstance_material> > inst_materials = technique->getChildrenByType<domInstance_material>(); + for (int j = 0; j < inst_materials.getCount(); j++) + { + std::string symbol(inst_materials[j]->getSymbol()); + + if (symbol == model->mMaterialList[i]) // found the binding + { + instance_mat = inst_materials[j]; + break; + } + } + } + + if (instance_mat) + { + domMaterial* material = daeSafeCast<domMaterial>(instance_mat->getTarget().getElement()); + if (material) + { + domInstance_effect* instance_effect = + daeSafeCast<domInstance_effect>(material->getDescendant(daeElement::matchType(domInstance_effect::ID()))); + if (instance_effect) + { + domEffect* effect = daeSafeCast<domEffect>(instance_effect->getUrl().getElement()); + if (effect) + { + domProfile_COMMON* profile = + daeSafeCast<domProfile_COMMON>(effect->getDescendant(daeElement::matchType(domProfile_COMMON::ID()))); + if (profile) + { + import_material = profileToMaterial(profile, dae); + } + } + } + } + } + + import_material.mBinding = model->mMaterialList[i]; + materials[model->mMaterialList[i]] = import_material; + } + + return materials; +} + +LLImportMaterial LLDAELoader::profileToMaterial(domProfile_COMMON* material, DAE* dae) +{ + LLImportMaterial mat; + mat.mFullbright = FALSE; + + daeElement* diffuse = material->getDescendant("diffuse"); + if (diffuse) + { + domCommon_color_or_texture_type_complexType::domTexture* texture = + daeSafeCast<domCommon_color_or_texture_type_complexType::domTexture>(diffuse->getDescendant("texture")); + if (texture) + { + domCommon_newparam_type_Array newparams = material->getNewparam_array(); + if (newparams.getCount()) + { + + for (S32 i = 0; i < newparams.getCount(); i++) + { + domFx_surface_common* surface = newparams[i]->getSurface(); + if (surface) + { + domFx_surface_init_common* init = surface->getFx_surface_init_common(); + if (init) + { + domFx_surface_init_from_common_Array init_from = init->getInit_from_array(); + + if (init_from.getCount() > i) + { + domImage* image = daeSafeCast<domImage>(init_from[i]->getValue().getElement()); + if (image) + { + // we only support init_from now - embedded data will come later + domImage::domInit_from* init = image->getInit_from(); + if (init) + { + mat.mDiffuseMapFilename = cdom::uriToNativePath(init->getValue().str()); + mat.mDiffuseMapLabel = getElementLabel(material); + } + } + } + } + } + } + } + else if (texture->getTexture()) + { + domImage* image = NULL; + dae->getDatabase()->getElement((daeElement**) &image, 0, texture->getTexture(), COLLADA_TYPE_IMAGE); + if (image) + { + // we only support init_from now - embedded data will come later + domImage::domInit_from* init = image->getInit_from(); + if (init) + { + std::string image_path_value = cdom::uriToNativePath(init->getValue().str()); + +#if LL_WINDOWS + // Work-around DOM tendency to resort to UNC names which are only confusing for downstream... + // + std::string::iterator i = image_path_value.begin(); + while (*i == '\\') + i++; + mat.mDiffuseMapFilename.assign(i, image_path_value.end()); +#else + mat.mDiffuseMapFilename = image_path_value; +#endif + mat.mDiffuseMapLabel = getElementLabel(material); + } + } + } + } + + domCommon_color_or_texture_type_complexType::domColor* color = + daeSafeCast<domCommon_color_or_texture_type_complexType::domColor>(diffuse->getDescendant("color")); + if (color) + { + domFx_color_common domfx_color = color->getValue(); + LLColor4 value = LLColor4(domfx_color[0], domfx_color[1], domfx_color[2], domfx_color[3]); + mat.mDiffuseColor = value; + } + } + + daeElement* emission = material->getDescendant("emission"); + if (emission) + { + LLColor4 emission_color = getDaeColor(emission); + if (((emission_color[0] + emission_color[1] + emission_color[2]) / 3.0) > 0.25) + { + mat.mFullbright = TRUE; + } + } + + return mat; +} + +std::string LLDAELoader::getElementLabel(daeElement *element) +{ + return getElementLabel(element, mForceIdNaming); +} + +// try to get a decent label for this element +std::string LLDAELoader::getElementLabel(daeElement *element, bool forceIdNaming) +{ + // if we have a name attribute, use it + std::string name = element->getAttribute("name"); + if (name.length() && !forceIdNaming) + { + return name; + } + + // if we have an ID attribute, use it + if (element->getID()) + { + return std::string(element->getID()); + } + + // if we have a parent, use it + daeElement* parent = element->getParent(); + std::string index_string; + if (parent) + { + // retrieve index to distinguish items inside same parent + size_t ind = 0; + parent->getChildren().find(element, ind); + index_string = "_" + boost::lexical_cast<std::string>(ind); + + // if parent has a name or ID, use it + std::string name = parent->getAttribute("name"); + if (!name.length() || forceIdNaming) + { + name = std::string(parent->getID()); + } + + if (name.length()) + { + // make sure that index won't mix up with pre-named lod extensions + size_t ext_pos = getSuffixPosition(name); + + if (ext_pos == -1) + { + return name + index_string; + } + else + { + return name.insert(ext_pos, index_string); + } + } + } + + // try to use our type + daeString element_name = element->getElementName(); + if (element_name) + { + return std::string(element_name) + index_string; + } + + // if all else fails, use "object" + return std::string("object") + index_string; +} + +// static +size_t LLDAELoader::getSuffixPosition(std::string label) +{ + if ((label.find("_LOD") != -1) || (label.find("_PHYS") != -1)) + { + return label.rfind('_'); + } + return -1; +} + +// static +std::string LLDAELoader::getLodlessLabel(daeElement *element, bool forceIdNaming) +{ + std::string label = getElementLabel(element, forceIdNaming); + size_t ext_pos = getSuffixPosition(label); + if (ext_pos != -1) + { + return label.substr(0, ext_pos); + } + return label; +} + +LLColor4 LLDAELoader::getDaeColor(daeElement* element) +{ + LLColor4 value; + domCommon_color_or_texture_type_complexType::domColor* color = + daeSafeCast<domCommon_color_or_texture_type_complexType::domColor>(element->getDescendant("color")); + if (color) + { + domFx_color_common domfx_color = color->getValue(); + value = LLColor4(domfx_color[0], domfx_color[1], domfx_color[2], domfx_color[3]); + } + + return value; +} + +bool LLDAELoader::addVolumeFacesFromDomMesh(LLModel* pModel,domMesh* mesh) +{ + LLModel::EModelStatus status = LLModel::NO_ERRORS; + domTriangles_Array& tris = mesh->getTriangles_array(); + + for (U32 i = 0; i < tris.getCount(); ++i) + { + domTrianglesRef& tri = tris.get(i); + + status = load_face_from_dom_triangles(pModel->getVolumeFaces(), pModel->getMaterialList(), tri); + pModel->mStatus = status; + if(status != LLModel::NO_ERRORS) + { + pModel->ClearFacesAndMaterials(); + return false; + } + } + + domPolylist_Array& polys = mesh->getPolylist_array(); + for (U32 i = 0; i < polys.getCount(); ++i) + { + domPolylistRef& poly = polys.get(i); + status = load_face_from_dom_polylist(pModel->getVolumeFaces(), pModel->getMaterialList(), poly); + + if(status != LLModel::NO_ERRORS) + { + pModel->ClearFacesAndMaterials(); + return false; + } + } + + domPolygons_Array& polygons = mesh->getPolygons_array(); + + for (U32 i = 0; i < polygons.getCount(); ++i) + { + domPolygonsRef& poly = polygons.get(i); + status = load_face_from_dom_polygons(pModel->getVolumeFaces(), pModel->getMaterialList(), poly); + + if(status != LLModel::NO_ERRORS) + { + pModel->ClearFacesAndMaterials(); + return false; + } + } + + return (status == LLModel::NO_ERRORS); +} + +LLModel* LLDAELoader::loadModelFromDomMesh(domMesh *mesh) +{ + return loadModelFromDomMesh(mesh, mForceIdNaming); +} + +//static +LLModel* LLDAELoader::loadModelFromDomMesh(domMesh *mesh, bool forceIdNaming) +{ + LLVolumeParams volume_params; + volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); + LLModel* ret = new LLModel(volume_params, 0.f); + createVolumeFacesFromDomMesh(ret, mesh); + if (ret->mLabel.empty()) + { + ret->mLabel = getElementLabel(mesh, forceIdNaming); + } + return ret; +} + +//static diff version supports creating multiple models when material counts spill +// over the 8 face server-side limit +// +bool LLDAELoader::loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& models_out, U32 submodel_limit) +{ + + LLVolumeParams volume_params; + volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); + + models_out.clear(); + + LLModel* ret = new LLModel(volume_params, 0.f); + + std::string model_name = getLodlessLabel(mesh, mForceIdNaming); + ret->mLabel = model_name + lod_suffix[mLod]; + + llassert(!ret->mLabel.empty()); + + // Like a monkey, ready to be shot into space + // + ret->ClearFacesAndMaterials(); + + // Get the whole set of volume faces + // + addVolumeFacesFromDomMesh(ret, mesh); + + U32 volume_faces = ret->getNumVolumeFaces(); + + // Side-steps all manner of issues when splitting models + // and matching lower LOD materials to base models + // + ret->sortVolumeFacesByMaterialName(); + + bool normalized = false; + + int submodelID = 0; + + // remove all faces that definitely won't fit into one model and submodel limit + U32 face_limit = (submodel_limit + 1) * LL_SCULPT_MESH_MAX_FACES; + if (face_limit < volume_faces) + { + ret->setNumVolumeFaces(face_limit); + } + + LLVolume::face_list_t remainder; + do + { + // Insure we do this once with the whole gang and not per-model + // + if (!normalized && !mNoNormalize) + { + normalized = true; + ret->normalizeVolumeFaces(); + } + + ret->trimVolumeFacesToSize(LL_SCULPT_MESH_MAX_FACES, &remainder); + + if (!mNoOptimize) + { + ret->optimizeVolumeFaces(); + } + + volume_faces = remainder.size(); + + models_out.push_back(ret); + + // If we have left-over volume faces, create another model + // to absorb them... + // + if (volume_faces) + { + LLModel* next = new LLModel(volume_params, 0.f); + next->mSubmodelID = ++submodelID; + next->mLabel = model_name + (char)((int)'a' + next->mSubmodelID) + lod_suffix[mLod]; + next->getVolumeFaces() = remainder; + next->mNormalizedScale = ret->mNormalizedScale; + next->mNormalizedTranslation = ret->mNormalizedTranslation; + if ( ret->mMaterialList.size() > LL_SCULPT_MESH_MAX_FACES) + { + next->mMaterialList.assign(ret->mMaterialList.begin() + LL_SCULPT_MESH_MAX_FACES, ret->mMaterialList.end()); + } + ret = next; + } + + remainder.clear(); + + } while (volume_faces); + + return true; +} + +bool LLDAELoader::createVolumeFacesFromDomMesh(LLModel* pModel, domMesh* mesh) +{ + if (mesh) + { + pModel->ClearFacesAndMaterials(); + + addVolumeFacesFromDomMesh(pModel, mesh); + + if (pModel->getNumVolumeFaces() > 0) + { + pModel->normalizeVolumeFaces(); + pModel->optimizeVolumeFaces(); + + if (pModel->getNumVolumeFaces() > 0) + { + return true; + } + } + } + else + { + LL_WARNS() << "no mesh found" << LL_ENDL; + } + + return false; +} diff --git a/indra/llprimitive/lldaeloader.h b/indra/llprimitive/lldaeloader.h new file mode 100644 index 0000000000..3ababd3156 --- /dev/null +++ b/indra/llprimitive/lldaeloader.h @@ -0,0 +1,110 @@ +/** + * @file lldaeloader.h + * @brief LLDAELoader class definition + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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_LLDAELOADER_H +#define LL_LLDAELOADER_H + +#include "llmodelloader.h" + +class DAE; +class daeElement; +class domProfile_COMMON; +class domInstance_geometry; +class domNode; +class domTranslate; +class domController; +class domSkin; +class domMesh; + +class LLDAELoader : public LLModelLoader +{ +public: + typedef std::map<std::string, LLImportMaterial> material_map; + typedef std::map<daeElement*, std::vector<LLPointer<LLModel> > > dae_model_map; + dae_model_map mModelsMap; + + LLDAELoader( + std::string filename, + S32 lod, + LLModelLoader::load_callback_t load_cb, + LLModelLoader::joint_lookup_func_t joint_lookup_func, + LLModelLoader::texture_load_func_t texture_load_func, + LLModelLoader::state_callback_t state_cb, + void* opaque_userdata, + JointTransformMap& jointMap, + JointSet& jointsFromNodes, + U32 modelLimit); + virtual ~LLDAELoader() ; + + virtual bool OpenFile(const std::string& filename); + +protected: + + void processElement(daeElement* element, bool& badElement, DAE* dae); + void processDomModel(LLModel* model, DAE* dae, daeElement* pRoot, domMesh* mesh, domSkin* skin); + + material_map getMaterials(LLModel* model, domInstance_geometry* instance_geo, DAE* dae); + LLImportMaterial profileToMaterial(domProfile_COMMON* material, DAE* dae); + LLColor4 getDaeColor(daeElement* element); + + daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); + + bool isNodeAJoint( domNode* pNode ); + void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); + void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); + void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); + void extractTranslationViaSID( daeElement* pElement, LLMatrix4& transform ); + void buildJointToNodeMappingFromScene( daeElement* pRoot ); + void processJointToNodeMapping( domNode* pNode ); + void processChildJoints( domNode* pParentNode ); + + bool verifyCount( int expected, int result ); + + //Verify that a controller matches vertex counts + bool verifyController( domController* pController ); + + static bool addVolumeFacesFromDomMesh(LLModel* model, domMesh* mesh); + static bool createVolumeFacesFromDomMesh(LLModel* model, domMesh *mesh); + + static LLModel* loadModelFromDomMesh(domMesh* mesh, bool forceIdNaming); + LLModel* loadModelFromDomMesh(domMesh* mesh); + + // Loads a mesh breaking it into one or more models as necessary + // to get around volume face limitations while retaining >8 materials + // + bool loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& models_out, U32 submodel_limit); + + static std::string getElementLabel(daeElement *element, bool forceIdNaming); + std::string getElementLabel(daeElement *element); + static size_t getSuffixPosition(std::string label); + static std::string getLodlessLabel(daeElement *element, bool forceIdNaming = false); + +private: + U32 mGeneratedModelLimit; // Attempt to limit amount of generated submodels + bool mForceIdNaming; + +}; +#endif // LL_LLDAELLOADER_H diff --git a/indra/llprimitive/lllslconstants.h b/indra/llprimitive/lllslconstants.h index 926ce32d75..b6baf98211 100644 --- a/indra/llprimitive/lllslconstants.h +++ b/indra/llprimitive/lllslconstants.h @@ -239,4 +239,23 @@ const U32 LSL_STATUS_INTERNAL_ERROR = 1999; // Start per-function errors below, starting at 2000: const U32 LSL_STATUS_WHITELIST_FAILED = 2001; + +const S32 LSL_XP_ERROR_NONE = 0; +const S32 LSL_XP_ERROR_THROTTLED = 1; +const S32 LSL_XP_ERROR_EXPERIENCES_DISABLED = 2; +const S32 LSL_XP_ERROR_INVALID_PARAMETERS = 3; +const S32 LSL_XP_ERROR_NOT_PERMITTED = 4; +const S32 LSL_XP_ERROR_NO_EXPERIENCE = 5; +const S32 LSL_XP_ERROR_NOT_FOUND = 6; +const S32 LSL_XP_ERROR_INVALID_EXPERIENCE = 7; +const S32 LSL_XP_ERROR_EXPERIENCE_DISABLED = 8; +const S32 LSL_XP_ERROR_EXPERIENCE_SUSPENDED = 9; +const S32 LSL_XP_ERROR_UNKNOWN_ERROR = 10; +const S32 LSL_XP_ERROR_QUOTA_EXCEEDED = 11; +const S32 LSL_XP_ERROR_STORE_DISABLED = 12; +const S32 LSL_XP_ERROR_STORAGE_EXCEPTION = 13; +const S32 LSL_XP_ERROR_KEY_NOT_FOUND = 14; +const S32 LSL_XP_ERROR_RETRY_UPDATE = 15; +const S32 LSL_XP_ERROR_MATURITY_EXCEEDED = 16; + #endif diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp index 37c718b4c6..37c718b4c6 100755..100644 --- a/indra/llprimitive/llmaterialtable.cpp +++ b/indra/llprimitive/llmaterialtable.cpp diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h index a17e0103ff..a17e0103ff 100755..100644 --- a/indra/llprimitive/llmaterialtable.h +++ b/indra/llprimitive/llmaterialtable.h diff --git a/indra/llprimitive/llmediaentry.cpp b/indra/llprimitive/llmediaentry.cpp index 02aba2bd83..02aba2bd83 100755..100644 --- a/indra/llprimitive/llmediaentry.cpp +++ b/indra/llprimitive/llmediaentry.cpp diff --git a/indra/llprimitive/llmediaentry.h b/indra/llprimitive/llmediaentry.h index 33855b3fb2..33855b3fb2 100755..100644 --- a/indra/llprimitive/llmediaentry.h +++ b/indra/llprimitive/llmediaentry.h diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 1571427d51..e494c55250 100755..100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -31,18 +31,6 @@ #include "llconvexdecomposition.h" #include "llsdserialize.h" #include "llvector4a.h" -#if LL_MSVC -#pragma warning (disable : 4263) -#pragma warning (disable : 4264) -#endif -#include "dae.h" -#include "dae/daeErrorHandler.h" -#include "dom/domConstants.h" -#include "dom/domMesh.h" -#if LL_MSVC -#pragma warning (default : 4263) -#pragma warning (default : 4264) -#endif #ifdef LL_USESYSTEMLIBS # include <zlib.h> @@ -50,8 +38,6 @@ # include "zlib/zlib.h" #endif - - std::string model_names[] = { "lowest_lod", @@ -65,7 +51,7 @@ const int MODEL_NAMES_LENGTH = sizeof(model_names) / sizeof(std::string); LLModel::LLModel(LLVolumeParams& params, F32 detail) : LLVolume(params, detail), mNormalizedScale(1,1,1), mNormalizedTranslation(0,0,0) - , mPelvisOffset( 0.0f ), mStatus(NO_ERRORS) + , mPelvisOffset( 0.0f ), mStatus(NO_ERRORS), mSubmodelID(0) { mDecompID = -1; mLocalID = -1; @@ -79,923 +65,112 @@ LLModel::~LLModel() } } - -bool get_dom_sources(const domInputLocalOffset_Array& inputs, S32& pos_offset, S32& tc_offset, S32& norm_offset, S32 &idx_stride, - domSource* &pos_source, domSource* &tc_source, domSource* &norm_source) +//static +std::string LLModel::getStatusString(U32 status) { - idx_stride = 0; + const static std::string status_strings[(S32)INVALID_STATUS] = {"status_no_error", "status_vertex_number_overflow","bad_element"}; - for (U32 j = 0; j < inputs.getCount(); ++j) + if(status < INVALID_STATUS) { - idx_stride = llmax((S32) inputs[j]->getOffset(), idx_stride); - - if (strcmp(COMMON_PROFILE_INPUT_VERTEX, inputs[j]->getSemantic()) == 0) - { //found vertex array - const domURIFragmentType& uri = inputs[j]->getSource(); - daeElementRef elem = uri.getElement(); - domVertices* vertices = (domVertices*) elem.cast(); - if ( !vertices ) - { - return false; - } - - domInputLocal_Array& v_inp = vertices->getInput_array(); - - - for (U32 k = 0; k < v_inp.getCount(); ++k) - { - if (strcmp(COMMON_PROFILE_INPUT_POSITION, v_inp[k]->getSemantic()) == 0) - { - pos_offset = inputs[j]->getOffset(); - - const domURIFragmentType& uri = v_inp[k]->getSource(); - daeElementRef elem = uri.getElement(); - pos_source = (domSource*) elem.cast(); - } - - if (strcmp(COMMON_PROFILE_INPUT_NORMAL, v_inp[k]->getSemantic()) == 0) - { - norm_offset = inputs[j]->getOffset(); - - const domURIFragmentType& uri = v_inp[k]->getSource(); - daeElementRef elem = uri.getElement(); - norm_source = (domSource*) elem.cast(); - } - } - } - - if (strcmp(COMMON_PROFILE_INPUT_NORMAL, inputs[j]->getSemantic()) == 0) + if(status_strings[status] == std::string()) { - //found normal array for this triangle list - norm_offset = inputs[j]->getOffset(); - const domURIFragmentType& uri = inputs[j]->getSource(); - daeElementRef elem = uri.getElement(); - norm_source = (domSource*) elem.cast(); + //LL_ERRS() << "No valid status string for this status: " << (U32)status << LL_ENDL(); } - else if (strcmp(COMMON_PROFILE_INPUT_TEXCOORD, inputs[j]->getSemantic()) == 0) - { //found texCoords - tc_offset = inputs[j]->getOffset(); - const domURIFragmentType& uri = inputs[j]->getSource(); - daeElementRef elem = uri.getElement(); - tc_source = (domSource*) elem.cast(); - } - } - - idx_stride += 1; - - return true; -} - -LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domTrianglesRef& tri) -{ - LLVolumeFace face; - std::vector<LLVolumeFace::VertexData> verts; - std::vector<U16> indices; - - const domInputLocalOffset_Array& inputs = tri->getInput_array(); - - S32 pos_offset = -1; - S32 tc_offset = -1; - S32 norm_offset = -1; - - domSource* pos_source = NULL; - domSource* tc_source = NULL; - domSource* norm_source = NULL; - - S32 idx_stride = 0; - - if ( !get_dom_sources(inputs, pos_offset, tc_offset, norm_offset, idx_stride, pos_source, tc_source, norm_source) || !pos_source ) - { - LL_WARNS() << "Could not find dom sources for basic geo data; invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; + return status_strings[status] ; } - if (!pos_source) - { - LL_WARNS() << "Unable to process mesh without position data; invalid model; invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - domPRef p = tri->getP(); - domListOfUInts& idx = p->getValue(); - - domListOfFloats dummy ; - domListOfFloats& v = (pos_source && pos_source->getFloat_array()) ? pos_source->getFloat_array()->getValue() : dummy ; - domListOfFloats& tc = (tc_source && tc_source->getFloat_array()) ? tc_source->getFloat_array()->getValue() : dummy ; - domListOfFloats& n = (norm_source && norm_source->getFloat_array()) ? norm_source->getFloat_array()->getValue() : dummy ; + //LL_ERRS() << "Invalid model status: " << (U32)status << LL_ENDL(); - LLVolumeFace::VertexMapData::PointMap point_map; - - U32 index_count = idx.getCount(); - U32 vertex_count = (pos_source && pos_source->getFloat_array()) ? v.getCount() : 0; - U32 tc_count = (tc_source && tc_source->getFloat_array()) ? tc.getCount() : 0; - U32 norm_count = (norm_source && norm_source->getFloat_array()) ? n.getCount(): 0; + return std::string() ; +} - if (vertex_count == 0) - { - LL_WARNS() << "Unable to process mesh with empty position array; invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - face.mExtents[0].set(v[0], v[1], v[2]); - face.mExtents[1].set(v[0], v[1], v[2]); +void LLModel::offsetMesh( const LLVector3& pivotPoint ) +{ + LLVector4a pivot( pivotPoint[VX], pivotPoint[VY], pivotPoint[VZ] ); - for (U32 i = 0; i < index_count; i += idx_stride) - { - LLVolumeFace::VertexData cv; - if (pos_source) - { - // guard against model data specifiying out of range indices or verts - // - if (((i + pos_offset) > index_count) - || ((idx[i+pos_offset]*3+2) > vertex_count)) - { - LL_WARNS() << "Out of range index data; invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.setPosition(LLVector4a(v[idx[i+pos_offset]*3+0], - v[idx[i+pos_offset]*3+1], - v[idx[i+pos_offset]*3+2])); - - if (!cv.getPosition().isFinite3()) - { - LL_WARNS() << "Nan positional data, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - if (tc_source) - { - // guard against model data specifiying out of range indices or tcs - // - - if (((i + tc_offset) > index_count) - || ((idx[i+tc_offset]*2+1) > tc_count)) - { - LL_WARNS() << "Out of range TC indices." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.mTexCoord.setVec(tc[idx[i+tc_offset]*2+0], - tc[idx[i+tc_offset]*2+1]); - - if (!cv.mTexCoord.isFinite()) - { - LL_WARNS() << "Found NaN while loading tex coords from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - if (norm_source) - { - // guard against model data specifiying out of range indices or norms - // - if (((i + norm_offset) > index_count) - || ((idx[i+norm_offset]*3+2) > norm_count)) - { - LL_WARNS() << "Found out of range norm indices, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.setNormal(LLVector4a(n[idx[i+norm_offset]*3+0], - n[idx[i+norm_offset]*3+1], - n[idx[i+norm_offset]*3+2])); - - if (!cv.getNormal().isFinite3()) - { - LL_WARNS() << "Found NaN while loading normals from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - BOOL found = FALSE; - - LLVolumeFace::VertexMapData::PointMap::iterator point_iter; - point_iter = point_map.find(LLVector3(cv.getPosition().getF32ptr())); - - if (point_iter != point_map.end()) - { - for (U32 j = 0; j < point_iter->second.size(); ++j) - { - if ((point_iter->second)[j] == cv) - { - found = TRUE; - indices.push_back((point_iter->second)[j].mIndex); - break; - } - } - } - - if (!found) - { - update_min_max(face.mExtents[0], face.mExtents[1], cv.getPosition()); - verts.push_back(cv); - if (verts.size() >= 65535) - { - //LL_ERRS() << "Attempted to write model exceeding 16-bit index buffer limitation." << LL_ENDL; - return LLModel::VERTEX_NUMBER_OVERFLOW ; - } - U16 index = (U16) (verts.size()-1); - indices.push_back(index); - - LLVolumeFace::VertexMapData d; - d.setPosition(cv.getPosition()); - d.mTexCoord = cv.mTexCoord; - d.setNormal(cv.getNormal()); - d.mIndex = index; - if (point_iter != point_map.end()) - { - point_iter->second.push_back(d); - } - else - { - point_map[LLVector3(d.getPosition().getF32ptr())].push_back(d); - } - } - - if (indices.size()%3 == 0 && verts.size() >= 65532) - { - face_list.push_back(face); - face_list.rbegin()->fillFromLegacyData(verts, indices); - LLVolumeFace& new_face = *face_list.rbegin(); - if (!norm_source) - { - //ll_aligned_free_16(new_face.mNormals); - new_face.mNormals = NULL; - } - - if (!tc_source) - { - //ll_aligned_free_16(new_face.mTexCoords); - new_face.mTexCoords = NULL; - } - - face = LLVolumeFace(); - point_map.clear(); - } - } - - if (!verts.empty()) + for (std::vector<LLVolumeFace>::iterator faceIt = mVolumeFaces.begin(); faceIt != mVolumeFaces.end(); ) { - std::string material; - - if (tri->getMaterial()) - { - material = std::string(tri->getMaterial()); - } + std::vector<LLVolumeFace>:: iterator currentFaceIt = faceIt++; + LLVolumeFace& face = *currentFaceIt; + LLVector4a *pos = (LLVector4a*) face.mPositions; - materials.push_back(material); - face_list.push_back(face); - - face_list.rbegin()->fillFromLegacyData(verts, indices); - LLVolumeFace& new_face = *face_list.rbegin(); - if (!norm_source) - { - //ll_aligned_free_16(new_face.mNormals); - new_face.mNormals = NULL; - } - - if (!tc_source) + for (U32 i=0; i<face.mNumVertices; ++i ) { - //ll_aligned_free_16(new_face.mTexCoords); - new_face.mTexCoords = NULL; + pos[i].add( pivot ); } } - - return LLModel::NO_ERRORS ; } -LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domPolylistRef& poly) +void LLModel::optimizeVolumeFaces() { - domPRef p = poly->getP(); - domListOfUInts& idx = p->getValue(); - - if (idx.getCount() == 0) - { - return LLModel::NO_ERRORS ; - } - - const domInputLocalOffset_Array& inputs = poly->getInput_array(); - - - domListOfUInts& vcount = poly->getVcount()->getValue(); - - S32 pos_offset = -1; - S32 tc_offset = -1; - S32 norm_offset = -1; - - domSource* pos_source = NULL; - domSource* tc_source = NULL; - domSource* norm_source = NULL; - - S32 idx_stride = 0; - - if (!get_dom_sources(inputs, pos_offset, tc_offset, norm_offset, idx_stride, pos_source, tc_source, norm_source)) - { - LL_WARNS() << "Could not get DOM sources for basic geo data, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - LLVolumeFace face; - - std::vector<U16> indices; - std::vector<LLVolumeFace::VertexData> verts; - - domListOfFloats v; - domListOfFloats tc; - domListOfFloats n; - - if (pos_source) - { - v = pos_source->getFloat_array()->getValue(); - face.mExtents[0].set(v[0], v[1], v[2]); - face.mExtents[1].set(v[0], v[1], v[2]); - } - - if (tc_source) - { - tc = tc_source->getFloat_array()->getValue(); - } - - if (norm_source) - { - n = norm_source->getFloat_array()->getValue(); - } - - LLVolumeFace::VertexMapData::PointMap point_map; - - U32 index_count = idx.getCount(); - U32 vertex_count = pos_source ? v.getCount() : 0; - U32 tc_count = tc_source ? tc.getCount() : 0; - U32 norm_count = norm_source ? n.getCount() : 0; - - U32 cur_idx = 0; - for (U32 i = 0; i < vcount.getCount(); ++i) - { //for each polygon - U32 first_index = 0; - U32 last_index = 0; - for (U32 j = 0; j < vcount[i]; ++j) - { //for each vertex - - LLVolumeFace::VertexData cv; - - if (pos_source) - { - // guard against model data specifiying out of range indices or verts - // - if (((cur_idx + pos_offset) > index_count) - || ((idx[cur_idx+pos_offset]*3+2) > vertex_count)) - { - LL_WARNS() << "Out of range position indices, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.getPosition().set(v[idx[cur_idx+pos_offset]*3+0], - v[idx[cur_idx+pos_offset]*3+1], - v[idx[cur_idx+pos_offset]*3+2]); - - if (!cv.getPosition().isFinite3()) - { - LL_WARNS() << "Found NaN while loading positions from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - } - - if (tc_source) - { - // guard against model data specifiying out of range indices or tcs - // - if (((cur_idx + tc_offset) > index_count) - || ((idx[cur_idx+tc_offset]*2+1) > tc_count)) - { - LL_WARNS() << "Out of range TC indices, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.mTexCoord.setVec(tc[idx[cur_idx+tc_offset]*2+0], - tc[idx[cur_idx+tc_offset]*2+1]); - - if (!cv.mTexCoord.isFinite()) - { - LL_WARNS() << "Found NaN while loading tex coords from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - if (norm_source) - { - // guard against model data specifiying out of range indices or norms - // - if (((cur_idx + norm_offset) > index_count) - || ((idx[cur_idx+norm_offset]*3+2) > norm_count)) - { - LL_WARNS() << "Out of range norm indices, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - - cv.getNormal().set(n[idx[cur_idx+norm_offset]*3+0], - n[idx[cur_idx+norm_offset]*3+1], - n[idx[cur_idx+norm_offset]*3+2]); - - if (!cv.getNormal().isFinite3()) - { - LL_WARNS() << "Found NaN while loading normals from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - cur_idx += idx_stride; - - BOOL found = FALSE; - - LLVolumeFace::VertexMapData::PointMap::iterator point_iter; - LLVector3 pos3(cv.getPosition().getF32ptr()); - point_iter = point_map.find(pos3); - - if (point_iter != point_map.end()) - { - for (U32 k = 0; k < point_iter->second.size(); ++k) - { - if ((point_iter->second)[k] == cv) - { - found = TRUE; - U32 index = (point_iter->second)[k].mIndex; - if (j == 0) - { - first_index = index; - } - else if (j == 1) - { - last_index = index; - } - else - { - indices.push_back(first_index); - indices.push_back(last_index); - indices.push_back(index); - last_index = index; - } - - break; - } - } - } - - if (!found) - { - update_min_max(face.mExtents[0], face.mExtents[1], cv.getPosition()); - verts.push_back(cv); - if (verts.size() >= 65535) - { - //LL_ERRS() << "Attempted to write model exceeding 16-bit index buffer limitation." << LL_ENDL; - return LLModel::VERTEX_NUMBER_OVERFLOW ; - } - U16 index = (U16) (verts.size()-1); - - if (j == 0) - { - first_index = index; - } - else if (j == 1) - { - last_index = index; - } - else - { - indices.push_back(first_index); - indices.push_back(last_index); - indices.push_back(index); - last_index = index; - } - - LLVolumeFace::VertexMapData d; - d.setPosition(cv.getPosition()); - d.mTexCoord = cv.mTexCoord; - d.setNormal(cv.getNormal()); - d.mIndex = index; - if (point_iter != point_map.end()) - { - point_iter->second.push_back(d); - } - else - { - point_map[pos3].push_back(d); - } - } - - if (indices.size()%3 == 0 && indices.size() >= 65532) - { - face_list.push_back(face); - face_list.rbegin()->fillFromLegacyData(verts, indices); - LLVolumeFace& new_face = *face_list.rbegin(); - if (!norm_source) - { - //ll_aligned_free_16(new_face.mNormals); - new_face.mNormals = NULL; - } - - if (!tc_source) - { - //ll_aligned_free_16(new_face.mTexCoords); - new_face.mTexCoords = NULL; - } - - face = LLVolumeFace(); - verts.clear(); - indices.clear(); - point_map.clear(); - } - } - } - - if (!verts.empty()) + for (U32 i = 0; i < getNumVolumeFaces(); ++i) { - std::string material; - - if (poly->getMaterial()) - { - material = std::string(poly->getMaterial()); - } - - materials.push_back(material); - face_list.push_back(face); - face_list.rbegin()->fillFromLegacyData(verts, indices); - - LLVolumeFace& new_face = *face_list.rbegin(); - if (!norm_source) - { - //ll_aligned_free_16(new_face.mNormals); - new_face.mNormals = NULL; - } - - if (!tc_source) - { - //ll_aligned_free_16(new_face.mTexCoords); - new_face.mTexCoords = NULL; - } + mVolumeFaces[i].optimize(); } - - return LLModel::NO_ERRORS ; } -LLModel::EModelStatus load_face_from_dom_polygons(std::vector<LLVolumeFace>& face_list, std::vector<std::string>& materials, domPolygonsRef& poly) +struct MaterialBinding { - LLVolumeFace face; - std::vector<U16> indices; - std::vector<LLVolumeFace::VertexData> verts; - - const domInputLocalOffset_Array& inputs = poly->getInput_array(); - - S32 v_offset = -1; - S32 n_offset = -1; - S32 t_offset = -1; - - domListOfFloats* v = NULL; - domListOfFloats* n = NULL; - domListOfFloats* t = NULL; - - U32 stride = 0; - for (U32 i = 0; i < inputs.getCount(); ++i) - { - stride = llmax((U32) inputs[i]->getOffset()+1, stride); - - if (strcmp(COMMON_PROFILE_INPUT_VERTEX, inputs[i]->getSemantic()) == 0) - { //found vertex array - v_offset = inputs[i]->getOffset(); - - const domURIFragmentType& uri = inputs[i]->getSource(); - daeElementRef elem = uri.getElement(); - domVertices* vertices = (domVertices*) elem.cast(); - if (!vertices) - { - LL_WARNS() << "Could not find vertex source, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - domInputLocal_Array& v_inp = vertices->getInput_array(); - - for (U32 k = 0; k < v_inp.getCount(); ++k) - { - if (strcmp(COMMON_PROFILE_INPUT_POSITION, v_inp[k]->getSemantic()) == 0) - { - const domURIFragmentType& uri = v_inp[k]->getSource(); - daeElementRef elem = uri.getElement(); - domSource* src = (domSource*) elem.cast(); - if (!src) - { - LL_WARNS() << "Could not find DOM source, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - v = &(src->getFloat_array()->getValue()); - } - } - } - else if (strcmp(COMMON_PROFILE_INPUT_NORMAL, inputs[i]->getSemantic()) == 0) - { - n_offset = inputs[i]->getOffset(); - //found normal array for this triangle list - const domURIFragmentType& uri = inputs[i]->getSource(); - daeElementRef elem = uri.getElement(); - domSource* src = (domSource*) elem.cast(); - if (!src) - { - LL_WARNS() << "Could not find DOM source, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - n = &(src->getFloat_array()->getValue()); - } - else if (strcmp(COMMON_PROFILE_INPUT_TEXCOORD, inputs[i]->getSemantic()) == 0 && inputs[i]->getSet() == 0) - { //found texCoords - t_offset = inputs[i]->getOffset(); - const domURIFragmentType& uri = inputs[i]->getSource(); - daeElementRef elem = uri.getElement(); - domSource* src = (domSource*) elem.cast(); - if (!src) - { - LL_WARNS() << "Could not find DOM source, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - t = &(src->getFloat_array()->getValue()); - } - } - - domP_Array& ps = poly->getP_array(); - - //make a triangle list in <verts> - for (U32 i = 0; i < ps.getCount(); ++i) - { //for each polygon - domListOfUInts& idx = ps[i]->getValue(); - for (U32 j = 0; j < idx.getCount()/stride; ++j) - { //for each vertex - if (j > 2) - { - U32 size = verts.size(); - LLVolumeFace::VertexData v0 = verts[size-3]; - LLVolumeFace::VertexData v1 = verts[size-1]; - - verts.push_back(v0); - verts.push_back(v1); - } - - LLVolumeFace::VertexData vert; - - - if (v) - { - U32 v_idx = idx[j*stride+v_offset]*3; - v_idx = llclamp(v_idx, (U32) 0, (U32) v->getCount()); - vert.getPosition().set(v->get(v_idx), - v->get(v_idx+1), - v->get(v_idx+2)); - - if (!vert.getPosition().isFinite3()) - { - LL_WARNS() << "Found NaN while loading position data from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - - //bounds check n and t lookups because some FBX to DAE converters - //use negative indices and empty arrays to indicate data does not exist - //for a particular channel - if (n && n->getCount() > 0) - { - U32 n_idx = idx[j*stride+n_offset]*3; - n_idx = llclamp(n_idx, (U32) 0, (U32) n->getCount()); - vert.getNormal().set(n->get(n_idx), - n->get(n_idx+1), - n->get(n_idx+2)); - - if (!vert.getNormal().isFinite3()) - { - LL_WARNS() << "Found NaN while loading normals from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - else - { - vert.getNormal().clear(); - } - - - if (t && t->getCount() > 0) - { - U32 t_idx = idx[j*stride+t_offset]*2; - t_idx = llclamp(t_idx, (U32) 0, (U32) t->getCount()); - vert.mTexCoord.setVec(t->get(t_idx), - t->get(t_idx+1)); - - if (!vert.mTexCoord.isFinite()) - { - LL_WARNS() << "Found NaN while loading tex coords from DAE-Model, invalid model." << LL_ENDL; - return LLModel::BAD_ELEMENT; - } - } - else - { - vert.mTexCoord.clear(); - } - - - verts.push_back(vert); - } - } - - if (verts.empty()) - { - return LLModel::NO_ERRORS; - } - - face.mExtents[0] = verts[0].getPosition(); - face.mExtents[1] = verts[0].getPosition(); - - //create a map of unique vertices to indices - std::map<LLVolumeFace::VertexData, U32> vert_idx; - - U32 cur_idx = 0; - for (U32 i = 0; i < verts.size(); ++i) - { - std::map<LLVolumeFace::VertexData, U32>::iterator iter = vert_idx.find(verts[i]); - if (iter == vert_idx.end()) - { - vert_idx[verts[i]] = cur_idx++; - } - } - - //build vertex array from map - std::vector<LLVolumeFace::VertexData> new_verts; - new_verts.resize(vert_idx.size()); - - for (std::map<LLVolumeFace::VertexData, U32>::iterator iter = vert_idx.begin(); iter != vert_idx.end(); ++iter) - { - new_verts[iter->second] = iter->first; - update_min_max(face.mExtents[0], face.mExtents[1], iter->first.getPosition()); - } - - //build index array from map - indices.resize(verts.size()); - - for (U32 i = 0; i < verts.size(); ++i) - { - indices[i] = vert_idx[verts[i]]; - } - - // DEBUG just build an expanded triangle list - /*for (U32 i = 0; i < verts.size(); ++i) - { - indices.push_back((U16) i); - update_min_max(face.mExtents[0], face.mExtents[1], verts[i].getPosition()); - }*/ - - if (!new_verts.empty()) - { - std::string material; - - if (poly->getMaterial()) - { - material = std::string(poly->getMaterial()); - } - - materials.push_back(material); - face_list.push_back(face); - face_list.rbegin()->fillFromLegacyData(new_verts, indices); - - LLVolumeFace& new_face = *face_list.rbegin(); - if (!n) - { - //ll_aligned_free_16(new_face.mNormals); - new_face.mNormals = NULL; - } - - if (!t) - { - //ll_aligned_free_16(new_face.mTexCoords); - new_face.mTexCoords = NULL; - } - } - - return LLModel::NO_ERRORS ; -} + int index; + std::string matName; +}; -//static -std::string LLModel::getStatusString(U32 status) +struct MaterialSort { - const static std::string status_strings[(S32)INVALID_STATUS] = {"status_no_error", "status_vertex_number_overflow","bad_element"}; - - if(status < INVALID_STATUS) + bool operator()(const MaterialBinding& lhs, const MaterialBinding& rhs) { - if(status_strings[status] == std::string()) - { - LL_ERRS() << "No valid status string for this status: " << (U32)status << LL_ENDL ; - } - return status_strings[status] ; + return LLStringUtil::compareInsensitive(lhs.matName, rhs.matName) < 0; } +}; - LL_ERRS() << "Invalid model status: " << (U32)status << LL_ENDL ; - - return std::string() ; -} - -void LLModel::addVolumeFacesFromDomMesh(domMesh* mesh) +void LLModel::sortVolumeFacesByMaterialName() { - domTriangles_Array& tris = mesh->getTriangles_array(); - - for (U32 i = 0; i < tris.getCount(); ++i) - { - domTrianglesRef& tri = tris.get(i); + std::vector<MaterialBinding> bindings; + bindings.resize(mVolumeFaces.size()); - mStatus = load_face_from_dom_triangles(mVolumeFaces, mMaterialList, tri); - - if(mStatus != NO_ERRORS) + for (int i = 0; i < bindings.size(); i++) + { + bindings[i].index = i; + if(i < mMaterialList.size()) { - mVolumeFaces.clear() ; - mMaterialList.clear() ; - return ; //abort + bindings[i].matName = mMaterialList[i]; } } + std::sort(bindings.begin(), bindings.end(), MaterialSort()); + std::vector< LLVolumeFace > new_faces; - domPolylist_Array& polys = mesh->getPolylist_array(); - for (U32 i = 0; i < polys.getCount(); ++i) + // remap the faces to be in the same order the mats now are... + // + new_faces.resize(bindings.size()); + for (int i = 0; i < bindings.size(); i++) { - domPolylistRef& poly = polys.get(i); - mStatus = load_face_from_dom_polylist(mVolumeFaces, mMaterialList, poly); - - if(mStatus != NO_ERRORS) + new_faces[i] = mVolumeFaces[bindings[i].index]; + if(i < mMaterialList.size()) { - mVolumeFaces.clear() ; - mMaterialList.clear() ; - return ; //abort + mMaterialList[i] = bindings[i].matName; } } - - domPolygons_Array& polygons = mesh->getPolygons_array(); - - for (U32 i = 0; i < polygons.getCount(); ++i) - { - domPolygonsRef& poly = polygons.get(i); - mStatus = load_face_from_dom_polygons(mVolumeFaces, mMaterialList, poly); - if(mStatus != NO_ERRORS) - { - mVolumeFaces.clear() ; - mMaterialList.clear() ; - return ; //abort - } - } - + mVolumeFaces = new_faces; } -BOOL LLModel::createVolumeFacesFromDomMesh(domMesh* mesh) +void LLModel::trimVolumeFacesToSize(U32 new_count, LLVolume::face_list_t* remainder) { - if (mesh) - { - mVolumeFaces.clear(); - mMaterialList.clear(); + llassert(new_count <= LL_SCULPT_MESH_MAX_FACES); - addVolumeFacesFromDomMesh(mesh); - - if (getNumVolumeFaces() > 0) - { - normalizeVolumeFaces(); - optimizeVolumeFaces(); - - if (getNumVolumeFaces() > 0) - { - return TRUE; - } - } - } - else - { - LL_WARNS() << "no mesh found" << LL_ENDL; - } - - return FALSE; -} - -void LLModel::offsetMesh( const LLVector3& pivotPoint ) -{ - LLVector4a pivot( pivotPoint[VX], pivotPoint[VY], pivotPoint[VZ] ); - - for (std::vector<LLVolumeFace>::iterator faceIt = mVolumeFaces.begin(); faceIt != mVolumeFaces.end(); ) + if (new_count && (getNumVolumeFaces() > new_count)) { - std::vector<LLVolumeFace>:: iterator currentFaceIt = faceIt++; - LLVolumeFace& face = *currentFaceIt; - LLVector4a *pos = (LLVector4a*) face.mPositions; - - for (U32 i=0; i<face.mNumVertices; ++i ) + // Copy out remaining volume faces for alternative handling, if provided + // + if (remainder) { - pos[i].add( pivot ); - } - } -} + (*remainder).assign(mVolumeFaces.begin() + new_count, mVolumeFaces.end()); + } -void LLModel::optimizeVolumeFaces() -{ - for (U32 i = 0; i < getNumVolumeFaces(); ++i) - { - mVolumeFaces[i].optimize(); + // Trim down to the final set of volume faces (now stuffed to the gills!) + // + mVolumeFaces.resize(new_count); } } @@ -1009,11 +184,6 @@ void LLModel::optimizeVolumeFaces() // within the unit cube. void LLModel::normalizeVolumeFaces() { - - // ensure we don't have too many faces - if (mVolumeFaces.size() > LL_SCULPT_MESH_MAX_FACES) - mVolumeFaces.resize(LL_SCULPT_MESH_MAX_FACES); - if (!mVolumeFaces.empty()) { LLVector4a min, max; @@ -1480,68 +650,10 @@ void LLModel::generateNormals(F32 angle_cutoff) } } -//static -std::string LLModel::getElementLabel(daeElement *element) -{ // try to get a decent label for this element - // if we have a name attribute, use it - std::string name = element->getAttribute("name"); - if (name.length()) - { - return name; - } - - // if we have an ID attribute, use it - if (element->getID()) - { - return std::string(element->getID()); - } - - // if we have a parent, use it - daeElement* parent = element->getParent(); - if (parent) - { - // if parent has a name, use it - std::string name = parent->getAttribute("name"); - if (name.length()) - { - return name; - } - - // if parent has an ID, use it - if (parent->getID()) - { - return std::string(parent->getID()); - } - } - - // try to use our type - daeString element_name = element->getElementName(); - if (element_name) - { - return std::string(element_name); - } - - // if all else fails, use "object" - return std::string("object"); -} - -//static -LLModel* LLModel::loadModelFromDomMesh(domMesh *mesh) -{ - LLVolumeParams volume_params; - volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); - LLModel* ret = new LLModel(volume_params, 0.f); - ret->createVolumeFacesFromDomMesh(mesh); - ret->mLabel = getElementLabel(mesh); - return ret; -} std::string LLModel::getName() const { - if (!mRequestedLabel.empty()) - return mRequestedLabel; - else - return mLabel; + return mRequestedLabel.empty() ? mLabel : mRequestedLabel; } //static @@ -1556,7 +668,8 @@ LLSD LLModel::writeModel( BOOL upload_skin, BOOL upload_joints, BOOL nowrite, - BOOL as_slm) + BOOL as_slm, + int submodel_id) { LLSD mdl; @@ -1585,6 +698,14 @@ LLSD LLModel::writeModel( model[LLModel::LOD_PHYSICS] = NULL; } } + else if (submodel_id) + { + const LLModel::Decomposition fake_decomp; + mdl["secondary"] = true; + mdl["submodel_id"] = submodel_id; + mdl["physics_convex"] = fake_decomp.asLLSD(); + model[LLModel::LOD_PHYSICS] = NULL; + } if (as_slm) { //save material list names @@ -1596,7 +717,7 @@ LLSD LLModel::writeModel( for (U32 idx = 0; idx < MODEL_NAMES_LENGTH; ++idx) { - if (model[idx] && model[idx]->getNumVolumeFaces() > 0) + if (model[idx] && (model[idx]->getNumVolumeFaces() > 0) && model[idx]->getVolumeFace(0).mPositions != NULL) { LLVector3 min_pos = LLVector3(model[idx]->getVolumeFace(0).mPositions[0].getF32ptr()); LLVector3 max_pos = min_pos; @@ -1829,6 +950,11 @@ LLSD LLModel::writeModelToStream(std::ostream& ostr, LLSD& mdl, BOOL nowrite, BO } } + if (mdl.has("submodel_id")) + { //write out submodel id + header["submodel_id"] = (LLSD::Integer)mdl["submodel_id"]; + } + std::string out[MODEL_NAMES_LENGTH]; for (S32 i = 0; i < MODEL_NAMES_LENGTH; i++) @@ -2012,7 +1138,9 @@ bool LLModel::loadModel(std::istream& is) } } - static const std::string nm[] = + mSubmodelID = header.has("submodel_id") ? header["submodel_id"].asInteger() : false; + + static const std::string lod_name[] = { "lowest_lod", "low_lod", @@ -2025,8 +1153,8 @@ bool LLModel::loadModel(std::istream& is) S32 lod = llclamp((S32) mDetail, 0, MODEL_LODS); - if (header[nm[lod]]["offset"].asInteger() == -1 || - header[nm[lod]]["size"].asInteger() == 0 ) + if (header[lod_name[lod]]["offset"].asInteger() == -1 || + header[lod_name[lod]]["size"].asInteger() == 0 ) { //cannot load requested LOD LL_WARNS() << "LoD data is invalid!" << LL_ENDL; return false; @@ -2035,23 +1163,23 @@ bool LLModel::loadModel(std::istream& is) bool has_skin = header["skin"]["offset"].asInteger() >=0 && header["skin"]["size"].asInteger() > 0; - if (lod == LLModel::LOD_HIGH) + if ((lod == LLModel::LOD_HIGH) && !mSubmodelID) { //try to load skin info and decomp info std::ios::pos_type cur_pos = is.tellg(); loadSkinInfo(header, is); is.seekg(cur_pos); } - if (lod == LLModel::LOD_HIGH || lod == LLModel::LOD_PHYSICS) + if ((lod == LLModel::LOD_HIGH || lod == LLModel::LOD_PHYSICS) && !mSubmodelID) { std::ios::pos_type cur_pos = is.tellg(); loadDecomposition(header, is); is.seekg(cur_pos); } - is.seekg(header[nm[lod]]["offset"].asInteger(), std::ios_base::cur); + is.seekg(header[lod_name[lod]]["offset"].asInteger(), std::ios_base::cur); - if (unpackVolumeFaces(is, header[nm[lod]]["size"].asInteger())) + if (unpackVolumeFaces(is, header[lod_name[lod]]["size"].asInteger())) { if (has_skin) { @@ -2117,8 +1245,10 @@ bool LLModel::isMaterialListSubset( LLModel* ref ) break; } } + if (!foundRef) { + LL_INFOS() << "Could not find material " << mMaterialList[src] << " in reference model " << ref->mLabel << LL_ENDL; return false; } } @@ -2169,41 +1299,42 @@ bool LLModel::matchMaterialOrder(LLModel* ref, int& refFaceCnt, int& modelFaceCn for (U32 i = 0; i < mMaterialList.size(); i++) { index_map[ref->mMaterialList[i]] = i; - if (!reorder) - { //if any material name does not match reference, we need to reorder - reorder = ref->mMaterialList[i] != mMaterialList[i]; - } + //if any material name does not match reference, we need to reorder + reorder |= ref->mMaterialList[i] != mMaterialList[i]; base_mat.insert(ref->mMaterialList[i]); cur_mat.insert(mMaterialList[i]); } - if (reorder && - base_mat == cur_mat) //don't reorder if material name sets don't match + if (reorder && (base_mat == cur_mat)) //don't reorder if material name sets don't match { std::vector<LLVolumeFace> new_face_list; - new_face_list.resize(mVolumeFaces.size()); + new_face_list.resize(mMaterialList.size()); std::vector<std::string> new_material_list; - new_material_list.resize(mVolumeFaces.size()); + new_material_list.resize(mMaterialList.size()); //rebuild face list so materials have the same order //as the reference model for (U32 i = 0; i < mMaterialList.size(); ++i) { U32 ref_idx = index_map[mMaterialList[i]]; - new_face_list[ref_idx] = mVolumeFaces[i]; + if (i < mVolumeFaces.size()) + { + new_face_list[ref_idx] = mVolumeFaces[i]; + } new_material_list[ref_idx] = mMaterialList[i]; } llassert(new_material_list == ref->mMaterialList); mVolumeFaces = new_face_list; - } - //override material list with reference model ordering - mMaterialList = ref->mMaterialList; + //override material list with reference model ordering + mMaterialList = ref->mMaterialList; + } + return true; } @@ -2234,7 +1365,7 @@ bool LLModel::loadDecomposition(LLSD& header, std::istream& is) S32 offset = header["physics_convex"]["offset"].asInteger(); S32 size = header["physics_convex"]["size"].asInteger(); - if (offset >= 0 && size > 0) + if (offset >= 0 && size > 0 && !mSubmodelID) { is.seekg(offset, std::ios_base::cur); @@ -2642,3 +1773,227 @@ void LLModel::Decomposition::merge(const LLModel::Decomposition* rhs) } } +bool ll_is_degenerate(const LLVector4a& a, const LLVector4a& b, const LLVector4a& c, F32 tolerance) +{ + // small area check + { + LLVector4a edge1; edge1.setSub( a, b ); + LLVector4a edge2; edge2.setSub( a, c ); + ////////////////////////////////////////////////////////////////////////// + /// Linden Modified + ////////////////////////////////////////////////////////////////////////// + + // If no one edge is more than 10x longer than any other edge, we weaken + // the tolerance by a factor of 1e-4f. + + LLVector4a edge3; edge3.setSub( c, b ); + const F32 len1sq = edge1.dot3(edge1).getF32(); + const F32 len2sq = edge2.dot3(edge2).getF32(); + const F32 len3sq = edge3.dot3(edge3).getF32(); + bool abOK = (len1sq <= 100.f * len2sq) && (len1sq <= 100.f * len3sq); + bool acOK = (len2sq <= 100.f * len1sq) && (len1sq <= 100.f * len3sq); + bool cbOK = (len3sq <= 100.f * len1sq) && (len1sq <= 100.f * len2sq); + if ( abOK && acOK && cbOK ) + { + tolerance *= 1e-4f; + } + + ////////////////////////////////////////////////////////////////////////// + /// End Modified + ////////////////////////////////////////////////////////////////////////// + + LLVector4a cross; cross.setCross3( edge1, edge2 ); + + LLVector4a edge1b; edge1b.setSub( b, a ); + LLVector4a edge2b; edge2b.setSub( b, c ); + LLVector4a crossb; crossb.setCross3( edge1b, edge2b ); + + if ( ( cross.dot3(cross).getF32() < tolerance ) || ( crossb.dot3(crossb).getF32() < tolerance )) + { + return true; + } + } + + // point triangle distance check + { + LLVector4a Q; Q.setSub(a, b); + LLVector4a R; R.setSub(c, b); + + const F32 QQ = dot3fpu(Q, Q); + const F32 RR = dot3fpu(R, R); + const F32 QR = dot3fpu(R, Q); + + volatile F32 QQRR = QQ * RR; + volatile F32 QRQR = QR * QR; + F32 Det = (QQRR - QRQR); + + if( Det == 0.0f ) + { + return true; + } + } + + return false; +} + +bool validate_face(const LLVolumeFace& face) +{ + for (U32 i = 0; i < face.mNumIndices; ++i) + { + if (face.mIndices[i] >= face.mNumVertices) + { + LL_WARNS() << "Face has invalid index." << LL_ENDL; + return false; + } + } + + if (face.mNumIndices % 3 != 0 || face.mNumIndices == 0) + { + LL_WARNS() << "Face has invalid number of indices." << LL_ENDL; + return false; + } + + /*const LLVector4a scale(0.5f); + + for (U32 i = 0; i < face.mNumIndices; i+=3) + { + U16 idx1 = face.mIndices[i]; + U16 idx2 = face.mIndices[i+1]; + U16 idx3 = face.mIndices[i+2]; + + LLVector4a v1; v1.setMul(face.mPositions[idx1], scale); + LLVector4a v2; v2.setMul(face.mPositions[idx2], scale); + LLVector4a v3; v3.setMul(face.mPositions[idx3], scale); + + if (ll_is_degenerate(v1,v2,v3)) + { + llwarns << "Degenerate face found!" << LL_ENDL; + return false; + } + }*/ + + return true; +} + +bool validate_model(const LLModel* mdl) +{ + if (mdl->getNumVolumeFaces() == 0) + { + LL_WARNS() << "Model has no faces!" << LL_ENDL; + return false; + } + + for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) + { + if (mdl->getVolumeFace(i).mNumVertices == 0) + { + LL_WARNS() << "Face has no vertices." << LL_ENDL; + return false; + } + + if (mdl->getVolumeFace(i).mNumIndices == 0) + { + LL_WARNS() << "Face has no indices." << LL_ENDL; + return false; + } + + if (!validate_face(mdl->getVolumeFace(i))) + { + return false; + } + } + + return true; +} + +LLModelInstance::LLModelInstance(LLSD& data) + : LLModelInstanceBase() +{ + mLocalMeshID = data["mesh_id"].asInteger(); + mLabel = data["label"].asString(); + mTransform.setValue(data["transform"]); + + for (U32 i = 0; i < data["material"].size(); ++i) + { + LLImportMaterial mat(data["material"][i]); + mMaterial[mat.mBinding] = mat; + } +} + + +LLSD LLModelInstance::asLLSD() +{ + LLSD ret; + + ret["mesh_id"] = mModel->mLocalID; + ret["label"] = mLabel; + ret["transform"] = mTransform.getValue(); + + U32 i = 0; + for (std::map<std::string, LLImportMaterial>::iterator iter = mMaterial.begin(); iter != mMaterial.end(); ++iter) + { + ret["material"][i++] = iter->second.asLLSD(); + } + + return ret; +} + + +LLImportMaterial::~LLImportMaterial() +{ +} + +LLImportMaterial::LLImportMaterial(LLSD& data) +{ + mDiffuseMapFilename = data["diffuse"]["filename"].asString(); + mDiffuseMapLabel = data["diffuse"]["label"].asString(); + mDiffuseColor.setValue(data["diffuse"]["color"]); + mFullbright = data["fullbright"].asBoolean(); + mBinding = data["binding"].asString(); +} + + +LLSD LLImportMaterial::asLLSD() +{ + LLSD ret; + + ret["diffuse"]["filename"] = mDiffuseMapFilename; + ret["diffuse"]["label"] = mDiffuseMapLabel; + ret["diffuse"]["color"] = mDiffuseColor.getValue(); + ret["fullbright"] = mFullbright; + ret["binding"] = mBinding; + + return ret; +} + +bool LLImportMaterial::operator<(const LLImportMaterial &rhs) const +{ + + if (mDiffuseMapID != rhs.mDiffuseMapID) + { + return mDiffuseMapID < rhs.mDiffuseMapID; + } + + if (mDiffuseMapFilename != rhs.mDiffuseMapFilename) + { + return mDiffuseMapFilename < rhs.mDiffuseMapFilename; + } + + if (mDiffuseMapLabel != rhs.mDiffuseMapLabel) + { + return mDiffuseMapLabel < rhs.mDiffuseMapLabel; + } + + if (mDiffuseColor != rhs.mDiffuseColor) + { + return mDiffuseColor < rhs.mDiffuseColor; + } + + if (mBinding != rhs.mBinding) + { + return mBinding < rhs.mBinding; + } + + return mFullbright < rhs.mFullbright; +} + diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index aaafc55258..ae602c09df 100755..100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -31,6 +31,7 @@ #include "llvolume.h" #include "v4math.h" #include "m4math.h" +#include <queue> class daeElement; class domMesh; @@ -138,15 +139,16 @@ public: BOOL upload_skin, BOOL upload_joints, BOOL nowrite = FALSE, - BOOL as_slm = FALSE); + BOOL as_slm = FALSE, + int submodel_id = 0); static LLSD writeModelToStream( std::ostream& ostr, LLSD& mdl, BOOL nowrite = FALSE, BOOL as_slm = FALSE); + + void ClearFacesAndMaterials() { mVolumeFaces.clear(); mMaterialList.clear(); } - static LLModel* loadModelFromDomMesh(domMesh* mesh); - static std::string getElementLabel(daeElement* element); std::string getName() const; std::string getMetric() const {return mMetric;} EModelStatus getStatus() const {return mStatus;} @@ -169,20 +171,25 @@ public: void addFace(const LLVolumeFace& face); + void sortVolumeFacesByMaterialName(); void normalizeVolumeFaces(); + void trimVolumeFacesToSize(U32 new_count = LL_SCULPT_MESH_MAX_FACES, LLVolume::face_list_t* remainder = NULL); void optimizeVolumeFaces(); void offsetMesh( const LLVector3& pivotPoint ); void getNormalizedScaleTranslation(LLVector3& scale_out, LLVector3& translation_out); LLVector3 getTransformedCenter(const LLMatrix4& mat); - + //reorder face list based on mMaterialList in this and reference so //order matches that of reference (material ordering touchup) bool matchMaterialOrder(LLModel* ref, int& refFaceCnt, int& modelFaceCnt ); bool isMaterialListSubset( LLModel* ref ); bool needToAddFaces( LLModel* ref, int& refFaceCnt, int& modelFaceCnt ); - - std::vector<std::string> mMaterialList; + typedef std::vector<std::string> material_list; + + material_list mMaterialList; + + material_list& getMaterialList() { return mMaterialList; } //data used for skin weights class JointWeight @@ -275,9 +282,115 @@ public: Decomposition mPhysics; EModelStatus mStatus ; + + int mSubmodelID; +}; + +typedef std::vector<LLPointer<LLModel> > model_list; +typedef std::queue<LLPointer<LLModel> > model_queue; + +class LLModelMaterialBase +{ +public: + std::string mDiffuseMapFilename; + std::string mDiffuseMapLabel; + std::string mBinding; + LLColor4 mDiffuseColor; + bool mFullbright; + + LLModelMaterialBase() + : mFullbright(false) + { + mDiffuseColor.set(1,1,1,1); + } +}; + +class LLImportMaterial : public LLModelMaterialBase +{ +public: + friend class LLMeshUploadThread; + friend class LLModelPreview; + + bool operator<(const LLImportMaterial ¶ms) const; + + LLImportMaterial() : LLModelMaterialBase() + { + mDiffuseColor.set(1,1,1,1); + } + + LLImportMaterial(LLSD& data); + virtual ~LLImportMaterial(); + + LLSD asLLSD(); + + const LLUUID& getDiffuseMap() const { return mDiffuseMapID; } + void setDiffuseMap(const LLUUID& texId) { mDiffuseMapID = texId; } + protected: - void addVolumeFacesFromDomMesh(domMesh* mesh); - virtual BOOL createVolumeFacesFromDomMesh(domMesh *mesh); + + LLUUID mDiffuseMapID; + void* mOpaqueData; // allow refs to viewer/platform-specific structs for each material + // currently only stores an LLPointer< LLViewerFetchedTexture > > to + // maintain refs to textures associated with each material for free + // ref counting. }; +typedef std::map<std::string, LLImportMaterial> material_map; + +class LLModelInstanceBase +{ +public: + LLPointer<LLModel> mModel; + LLPointer<LLModel> mLOD[5]; + LLUUID mMeshID; + + LLMatrix4 mTransform; + material_map mMaterial; + + LLModelInstanceBase(LLModel* model, LLMatrix4& transform, material_map& materials) + : mModel(model), mTransform(transform), mMaterial(materials) + { + } + + LLModelInstanceBase() + : mModel(NULL) + { + } +}; + +typedef std::vector<LLModelInstanceBase> model_instance_list; + +class LLModelInstance : public LLModelInstanceBase +{ +public: + std::string mLabel; + LLUUID mMeshID; + S32 mLocalMeshID; + + LLModelInstance(LLModel* model, const std::string& label, LLMatrix4& transform, material_map& materials) + : LLModelInstanceBase(model, transform, materials), mLabel(label) + { + mLocalMeshID = -1; + } + + LLModelInstance(LLSD& data); + + LLSD asLLSD(); +}; + +#define LL_DEGENERACY_TOLERANCE 1e-7f + +inline F32 dot3fpu(const LLVector4a& a, const LLVector4a& b) +{ + volatile F32 p0 = a[0] * b[0]; + volatile F32 p1 = a[1] * b[1]; + volatile F32 p2 = a[2] * b[2]; + return p0 + p1 + p2; +} + +bool ll_is_degenerate(const LLVector4a& a, const LLVector4a& b, const LLVector4a& c, F32 tolerance = LL_DEGENERACY_TOLERANCE); + +bool validate_face(const LLVolumeFace& face); +bool validate_model(const LLModel* mdl); + #endif //LL_LLMODEL_H diff --git a/indra/llprimitive/llmodelloader.cpp b/indra/llprimitive/llmodelloader.cpp new file mode 100644 index 0000000000..f86eceb98d --- /dev/null +++ b/indra/llprimitive/llmodelloader.cpp @@ -0,0 +1,644 @@ +/** + * @file llmodelloader.cpp + * @brief LLModelLoader class implementation + * + * $LicenseInfo:firstyear=2004&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 "llmodelloader.h" +#include "llsdserialize.h" +#include "lljoint.h" +#include "llcallbacklist.h" + +#include "glh/glh_linear.h" +#include "llmatrix4a.h" +#include <boost/bind.hpp> + +std::list<LLModelLoader*> LLModelLoader::sActiveLoaderList; + +void stretch_extents(LLModel* model, LLMatrix4a& mat, LLVector4a& min, LLVector4a& max, BOOL& first_transform) +{ + LLVector4a box[] = + { + LLVector4a(-1, 1,-1), + LLVector4a(-1, 1, 1), + LLVector4a(-1,-1,-1), + LLVector4a(-1,-1, 1), + LLVector4a( 1, 1,-1), + LLVector4a( 1, 1, 1), + LLVector4a( 1,-1,-1), + LLVector4a( 1,-1, 1), + }; + + for (S32 j = 0; j < model->getNumVolumeFaces(); ++j) + { + const LLVolumeFace& face = model->getVolumeFace(j); + + LLVector4a center; + center.setAdd(face.mExtents[0], face.mExtents[1]); + center.mul(0.5f); + LLVector4a size; + size.setSub(face.mExtents[1],face.mExtents[0]); + size.mul(0.5f); + + for (U32 i = 0; i < 8; i++) + { + LLVector4a t; + t.setMul(size, box[i]); + t.add(center); + + LLVector4a v; + + mat.affineTransform(t, v); + + if (first_transform) + { + first_transform = FALSE; + min = max = v; + } + else + { + update_min_max(min, max, v); + } + } + } +} + +void stretch_extents(LLModel* model, LLMatrix4& mat, LLVector3& min, LLVector3& max, BOOL& first_transform) +{ + LLVector4a mina, maxa; + LLMatrix4a mata; + + mata.loadu(mat); + mina.load3(min.mV); + maxa.load3(max.mV); + + stretch_extents(model, mata, mina, maxa, first_transform); + + min.set(mina.getF32ptr()); + max.set(maxa.getF32ptr()); +} + +//----------------------------------------------------------------------------- +// LLModelLoader +//----------------------------------------------------------------------------- +LLModelLoader::LLModelLoader( + std::string filename, + S32 lod, + load_callback_t load_cb, + joint_lookup_func_t joint_lookup_func, + texture_load_func_t texture_load_func, + state_callback_t state_cb, + void* opaque_userdata, + JointTransformMap& jointMap, + JointSet& jointsFromNodes ) +: mJointList( jointMap ) +, mJointsFromNode( jointsFromNodes ) +, LLThread("Model Loader") +, mFilename(filename) +, mLod(lod) +, mTrySLM(false) +, mFirstTransform(TRUE) +, mNumOfFetchingTextures(0) +, mLoadCallback(load_cb) +, mJointLookupFunc(joint_lookup_func) +, mTextureLoadFunc(texture_load_func) +, mStateCallback(state_cb) +, mOpaqueData(opaque_userdata) +, mRigParityWithScene(false) +, mRigValidJointUpload(false) +, mLegacyRigValid(false) +, mNoNormalize(false) +, mNoOptimize(false) +, mCacheOnlyHitIfRigged(false) +{ + mJointMap["mPelvis"] = "mPelvis"; + mJointMap["mTorso"] = "mTorso"; + mJointMap["mChest"] = "mChest"; + mJointMap["mNeck"] = "mNeck"; + mJointMap["mHead"] = "mHead"; + mJointMap["mSkull"] = "mSkull"; + mJointMap["mEyeRight"] = "mEyeRight"; + mJointMap["mEyeLeft"] = "mEyeLeft"; + mJointMap["mCollarLeft"] = "mCollarLeft"; + mJointMap["mShoulderLeft"] = "mShoulderLeft"; + mJointMap["mElbowLeft"] = "mElbowLeft"; + mJointMap["mWristLeft"] = "mWristLeft"; + mJointMap["mCollarRight"] = "mCollarRight"; + mJointMap["mShoulderRight"] = "mShoulderRight"; + mJointMap["mElbowRight"] = "mElbowRight"; + mJointMap["mWristRight"] = "mWristRight"; + mJointMap["mHipRight"] = "mHipRight"; + mJointMap["mKneeRight"] = "mKneeRight"; + mJointMap["mAnkleRight"] = "mAnkleRight"; + mJointMap["mFootRight"] = "mFootRight"; + mJointMap["mToeRight"] = "mToeRight"; + mJointMap["mHipLeft"] = "mHipLeft"; + mJointMap["mKneeLeft"] = "mKneeLeft"; + mJointMap["mAnkleLeft"] = "mAnkleLeft"; + mJointMap["mFootLeft"] = "mFootLeft"; + mJointMap["mToeLeft"] = "mToeLeft"; + + mJointMap["avatar_mPelvis"] = "mPelvis"; + mJointMap["avatar_mTorso"] = "mTorso"; + mJointMap["avatar_mChest"] = "mChest"; + mJointMap["avatar_mNeck"] = "mNeck"; + mJointMap["avatar_mHead"] = "mHead"; + mJointMap["avatar_mSkull"] = "mSkull"; + mJointMap["avatar_mEyeRight"] = "mEyeRight"; + mJointMap["avatar_mEyeLeft"] = "mEyeLeft"; + mJointMap["avatar_mCollarLeft"] = "mCollarLeft"; + mJointMap["avatar_mShoulderLeft"] = "mShoulderLeft"; + mJointMap["avatar_mElbowLeft"] = "mElbowLeft"; + mJointMap["avatar_mWristLeft"] = "mWristLeft"; + mJointMap["avatar_mCollarRight"] = "mCollarRight"; + mJointMap["avatar_mShoulderRight"] = "mShoulderRight"; + mJointMap["avatar_mElbowRight"] = "mElbowRight"; + mJointMap["avatar_mWristRight"] = "mWristRight"; + mJointMap["avatar_mHipRight"] = "mHipRight"; + mJointMap["avatar_mKneeRight"] = "mKneeRight"; + mJointMap["avatar_mAnkleRight"] = "mAnkleRight"; + mJointMap["avatar_mFootRight"] = "mFootRight"; + mJointMap["avatar_mToeRight"] = "mToeRight"; + mJointMap["avatar_mHipLeft"] = "mHipLeft"; + mJointMap["avatar_mKneeLeft"] = "mKneeLeft"; + mJointMap["avatar_mAnkleLeft"] = "mAnkleLeft"; + mJointMap["avatar_mFootLeft"] = "mFootLeft"; + mJointMap["avatar_mToeLeft"] = "mToeLeft"; + + + mJointMap["hip"] = "mPelvis"; + mJointMap["abdomen"] = "mTorso"; + mJointMap["chest"] = "mChest"; + mJointMap["neck"] = "mNeck"; + mJointMap["head"] = "mHead"; + mJointMap["figureHair"] = "mSkull"; + mJointMap["lCollar"] = "mCollarLeft"; + mJointMap["lShldr"] = "mShoulderLeft"; + mJointMap["lForeArm"] = "mElbowLeft"; + mJointMap["lHand"] = "mWristLeft"; + mJointMap["rCollar"] = "mCollarRight"; + mJointMap["rShldr"] = "mShoulderRight"; + mJointMap["rForeArm"] = "mElbowRight"; + mJointMap["rHand"] = "mWristRight"; + mJointMap["rThigh"] = "mHipRight"; + mJointMap["rShin"] = "mKneeRight"; + mJointMap["rFoot"] = "mFootRight"; + mJointMap["lThigh"] = "mHipLeft"; + mJointMap["lShin"] = "mKneeLeft"; + mJointMap["lFoot"] = "mFootLeft"; + + //move into joint mapper class + //1. joints for joint offset verification + mMasterJointList.push_front("mPelvis"); + mMasterJointList.push_front("mTorso"); + mMasterJointList.push_front("mChest"); + mMasterJointList.push_front("mNeck"); + mMasterJointList.push_front("mHead"); + mMasterJointList.push_front("mCollarLeft"); + mMasterJointList.push_front("mShoulderLeft"); + mMasterJointList.push_front("mElbowLeft"); + mMasterJointList.push_front("mWristLeft"); + mMasterJointList.push_front("mCollarRight"); + mMasterJointList.push_front("mShoulderRight"); + mMasterJointList.push_front("mElbowRight"); + mMasterJointList.push_front("mWristRight"); + mMasterJointList.push_front("mHipRight"); + mMasterJointList.push_front("mKneeRight"); + mMasterJointList.push_front("mFootRight"); + mMasterJointList.push_front("mHipLeft"); + mMasterJointList.push_front("mKneeLeft"); + mMasterJointList.push_front("mFootLeft"); + + //2. legacy joint list - used to verify rigs that will not be using joint offsets + mMasterLegacyJointList.push_front("mPelvis"); + mMasterLegacyJointList.push_front("mTorso"); + mMasterLegacyJointList.push_front("mChest"); + mMasterLegacyJointList.push_front("mNeck"); + mMasterLegacyJointList.push_front("mHead"); + mMasterLegacyJointList.push_front("mHipRight"); + mMasterLegacyJointList.push_front("mKneeRight"); + mMasterLegacyJointList.push_front("mFootRight"); + mMasterLegacyJointList.push_front("mHipLeft"); + mMasterLegacyJointList.push_front("mKneeLeft"); + mMasterLegacyJointList.push_front("mFootLeft"); + + assert_main_thread(); + sActiveLoaderList.push_back(this) ; +} + +LLModelLoader::~LLModelLoader() +{ + assert_main_thread(); + sActiveLoaderList.remove(this); +} + +void LLModelLoader::run() +{ + doLoadModel(); + doOnIdleOneTime(boost::bind(&LLModelLoader::loadModelCallback,this)); +} + +bool LLModelLoader::doLoadModel() +{ + //first, look for a .slm file of the same name that was modified later + //than the .dae + + if (mTrySLM) + { + std::string filename = mFilename; + + std::string::size_type i = filename.rfind("."); + if (i != std::string::npos) + { + filename.replace(i, filename.size()-1, ".slm"); + llstat slm_status; + if (LLFile::stat(filename, &slm_status) == 0) + { //slm file exists + llstat dae_status; + if (LLFile::stat(mFilename, &dae_status) != 0 || + dae_status.st_mtime < slm_status.st_mtime) + { + if (loadFromSLM(filename)) + { //slm successfully loaded, if this fails, fall through and + //try loading from dae + + mLod = -1; //successfully loading from an slm implicitly sets all + //LoDs + return true; + } + } + } + } + } + + return OpenFile(mFilename); +} + +void LLModelLoader::setLoadState(U32 state) +{ + mStateCallback(state, mOpaqueData); +} + +bool LLModelLoader::loadFromSLM(const std::string& filename) +{ + //only need to populate mScene with data from slm + llstat stat; + + if (LLFile::stat(filename, &stat)) + { //file does not exist + return false; + } + + S32 file_size = (S32) stat.st_size; + + llifstream ifstream(filename.c_str(), std::ifstream::in | std::ifstream::binary); + LLSD data; + LLSDSerialize::fromBinary(data, ifstream, file_size); + ifstream.close(); + + //build model list for each LoD + model_list model[LLModel::NUM_LODS]; + + if (data["version"].asInteger() != SLM_SUPPORTED_VERSION) + { //unsupported version + return false; + } + + LLSD& mesh = data["mesh"]; + + LLVolumeParams volume_params; + volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); + + for (S32 lod = 0; lod < LLModel::NUM_LODS; ++lod) + { + for (U32 i = 0; i < mesh.size(); ++i) + { + std::stringstream str(mesh[i].asString()); + LLPointer<LLModel> loaded_model = new LLModel(volume_params, (F32) lod); + if (loaded_model->loadModel(str)) + { + loaded_model->mLocalID = i; + model[lod].push_back(loaded_model); + + if (lod == LLModel::LOD_HIGH) + { + if (!loaded_model->mSkinInfo.mJointNames.empty()) + { + //check to see if rig is valid + critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames ); + } + else if (mCacheOnlyHitIfRigged) + { + return false; + } + } + } + } + } + + if (model[LLModel::LOD_HIGH].empty()) + { //failed to load high lod + return false; + } + + //load instance list + model_instance_list instance_list; + + LLSD& instance = data["instance"]; + + for (U32 i = 0; i < instance.size(); ++i) + { + //deserialize instance list + instance_list.push_back(LLModelInstance(instance[i])); + + //match up model instance pointers + S32 idx = instance_list[i].mLocalMeshID; + std::string instance_label = instance_list[i].mLabel; + + for (U32 lod = 0; lod < LLModel::NUM_LODS; ++lod) + { + if (!model[lod].empty()) + { + if (idx >= model[lod].size()) + { + if (model[lod].size()) + { + instance_list[i].mLOD[lod] = model[lod][0]; + } + else + { + instance_list[i].mLOD[lod] = NULL; + } + continue; + } + + if (model[lod][idx] + && model[lod][idx]->mLabel.empty() + && !instance_label.empty()) + { + // restore model names + std::string name = instance_label; + switch (lod) + { + case LLModel::LOD_IMPOSTOR: name += "_LOD0"; break; + case LLModel::LOD_LOW: name += "_LOD1"; break; + case LLModel::LOD_MEDIUM: name += "_LOD2"; break; + case LLModel::LOD_PHYSICS: name += "_PHYS"; break; + case LLModel::LOD_HIGH: break; + } + model[lod][idx]->mLabel = name; + } + + instance_list[i].mLOD[lod] = model[lod][idx]; + } + } + + if (!instance_list[i].mModel) + instance_list[i].mModel = model[LLModel::LOD_HIGH][idx]; + } + + // Set name for UI to use + std::string name = data["name"]; + if (!name.empty()) + { + model[LLModel::LOD_HIGH][0]->mRequestedLabel = name; + } + + + //convert instance_list to mScene + mFirstTransform = TRUE; + for (U32 i = 0; i < instance_list.size(); ++i) + { + LLModelInstance& cur_instance = instance_list[i]; + mScene[cur_instance.mTransform].push_back(cur_instance); + stretch_extents(cur_instance.mModel, cur_instance.mTransform, mExtents[0], mExtents[1], mFirstTransform); + } + + setLoadState( DONE ); + + return true; +} + +//static +bool LLModelLoader::isAlive(LLModelLoader* loader) +{ + if(!loader) + { + return false ; + } + + std::list<LLModelLoader*>::iterator iter = sActiveLoaderList.begin() ; + for(; iter != sActiveLoaderList.end() && (*iter) != loader; ++iter) ; + + return *iter == loader ; +} + +void LLModelLoader::loadModelCallback() +{ + mLoadCallback(mScene,mModelList,mLod, mOpaqueData); + + while (!isStopped()) + { //wait until this thread is stopped before deleting self + apr_sleep(100); + } + + //double check if "this" is valid before deleting it, in case it is aborted during running. + if(!isAlive(this)) + { + return ; + } + + delete this; +} + +//----------------------------------------------------------------------------- +// critiqueRigForUploadApplicability() +//----------------------------------------------------------------------------- +void LLModelLoader::critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ) +{ + critiqueJointToNodeMappingFromScene(); + + //Determines the following use cases for a rig: + //1. It is suitable for upload with skin weights & joint positions, or + //2. It is suitable for upload as standard av with just skin weights + + bool isJointPositionUploadOK = isRigSuitableForJointPositionUpload( jointListFromAsset ); + bool isRigLegacyOK = isRigLegacy( jointListFromAsset ); + + //It's OK that both could end up being true, both default to false + if ( isJointPositionUploadOK ) + { + setRigValidForJointPositionUpload( true ); + } + + if ( isRigLegacyOK) + { + setLegacyRigValid( true ); + } + +} +//----------------------------------------------------------------------------- +// critiqueJointToNodeMappingFromScene() +//----------------------------------------------------------------------------- +void LLModelLoader::critiqueJointToNodeMappingFromScene( void ) +{ + //Do the actual nodes back the joint listing from the dae? + //if yes then this is a fully rigged asset, otherwise it's just a partial rig + + JointSet::iterator jointsFromNodeIt = mJointsFromNode.begin(); + JointSet::iterator jointsFromNodeEndIt = mJointsFromNode.end(); + bool result = true; + + if ( !mJointsFromNode.empty() ) + { + for ( ;jointsFromNodeIt!=jointsFromNodeEndIt;++jointsFromNodeIt ) + { + std::string name = *jointsFromNodeIt; + if ( mJointTransformMap.find( name ) != mJointTransformMap.end() ) + { + continue; + } + else + { + LL_INFOS() <<"critiqueJointToNodeMappingFromScene is missing a: " << name << LL_ENDL; + result = false; + } + } + } + else + { + result = false; + } + + //Determines the following use cases for a rig: + //1. Full av rig w/1-1 mapping from the scene and joint array + //2. Partial rig but w/o parity between the scene and joint array + if ( result ) + { + setRigWithSceneParity( true ); + } +} +//----------------------------------------------------------------------------- +// isRigLegacy() +//----------------------------------------------------------------------------- +bool LLModelLoader::isRigLegacy( const std::vector<std::string> &jointListFromAsset ) +{ + //No joints in asset + if ( jointListFromAsset.size() == 0 ) + { + return false; + } + + bool result = false; + + JointSet :: const_iterator masterJointIt = mMasterLegacyJointList.begin(); + JointSet :: const_iterator masterJointEndIt = mMasterLegacyJointList.end(); + + std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin(); + std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end(); + + for ( ;masterJointIt!=masterJointEndIt;++masterJointIt ) + { + result = false; + modelJointIt = jointListFromAsset.begin(); + + for ( ;modelJointIt!=modelJointItEnd; ++modelJointIt ) + { + if ( *masterJointIt == *modelJointIt ) + { + result = true; + break; + } + } + if ( !result ) + { + LL_INFOS() <<" Asset did not contain the joint (if you're u/l a fully rigged asset w/joint positions - it is required)." << *masterJointIt<< LL_ENDL; + break; + } + } + return result; +} +//----------------------------------------------------------------------------- +// isRigSuitableForJointPositionUpload() +//----------------------------------------------------------------------------- +bool LLModelLoader::isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ) +{ + bool result = false; + + JointSet :: const_iterator masterJointIt = mMasterJointList.begin(); + JointSet :: const_iterator masterJointEndIt = mMasterJointList.end(); + + std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin(); + std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end(); + + for ( ;masterJointIt!=masterJointEndIt;++masterJointIt ) + { + result = false; + modelJointIt = jointListFromAsset.begin(); + + for ( ;modelJointIt!=modelJointItEnd; ++modelJointIt ) + { + if ( *masterJointIt == *modelJointIt ) + { + result = true; + break; + } + } + if ( !result ) + { + LL_INFOS() <<" Asset did not contain the joint (if you're u/l a fully rigged asset w/joint positions - it is required)." << *masterJointIt<< LL_ENDL; + break; + } + } + return result; +} + + +//called in the main thread +void LLModelLoader::loadTextures() +{ + BOOL is_paused = isPaused() ; + pause() ; //pause the loader + + for(scene::iterator iter = mScene.begin(); iter != mScene.end(); ++iter) + { + for(U32 i = 0 ; i < iter->second.size(); i++) + { + for(std::map<std::string, LLImportMaterial>::iterator j = iter->second[i].mMaterial.begin(); + j != iter->second[i].mMaterial.end(); ++j) + { + LLImportMaterial& material = j->second; + + if(!material.mDiffuseMapFilename.empty()) + { + mNumOfFetchingTextures += mTextureLoadFunc(material, mOpaqueData); + } + } + } + } + + if(!is_paused) + { + unpause() ; + } +} diff --git a/indra/llprimitive/llmodelloader.h b/indra/llprimitive/llmodelloader.h new file mode 100644 index 0000000000..bb4d06dca3 --- /dev/null +++ b/indra/llprimitive/llmodelloader.h @@ -0,0 +1,212 @@ +/** + * @file llmodelloader.h + * @brief LLModelLoader class definition + * + * $LicenseInfo:firstyear=2004&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_LLMODELLOADER_H +#define LL_LLMODELLOADER_H + +#include "llmodel.h" +#include "llthread.h" +#include <boost/function.hpp> +#include <list> + +class LLJoint; + +typedef std::map<std::string, LLMatrix4> JointTransformMap; +typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; +typedef std::map<std::string, std::string> JointMap; +typedef std::deque<std::string> JointSet; + +const S32 SLM_SUPPORTED_VERSION = 3; +const S32 NUM_LOD = 4; + +class LLModelLoader : public LLThread +{ +public: + + typedef std::map<std::string, LLImportMaterial> material_map; + typedef std::vector<LLPointer<LLModel > > model_list; + typedef std::vector<LLModelInstance> model_instance_list; + typedef std::map<LLMatrix4, model_instance_list > scene; + + // Callback with loaded model data and loaded LoD + // + typedef boost::function<void (scene&,model_list&,S32,void*) > load_callback_t; + + // Function to provide joint lookup by name + // (within preview avi skeleton, for example) + // + typedef boost::function<LLJoint* (const std::string&,void*) > joint_lookup_func_t; + + // Func to load and associate material with all it's textures, + // returned value is the number of textures loaded + // intentionally non-const so func can modify material to + // store platform-specific data + // + typedef boost::function<U32 (LLImportMaterial&,void*) > texture_load_func_t; + + // Callback to inform client of state changes + // during loading process (errors will be reported + // as state changes here as well) + // + typedef boost::function<void (U32,void*) > state_callback_t; + + typedef enum + { + STARTING = 0, + READING_FILE, + CREATING_FACES, + GENERATING_VERTEX_BUFFERS, + GENERATING_LOD, + DONE, + ERROR_PARSING, //basically loading failed + ERROR_MATERIALS, + ERROR_PASSWORD_REQUIRED, + ERROR_NEED_MORE_MEMORY, + ERROR_INVALID_FILE, + ERROR_LOADER_SETUP, + ERROR_INVALID_PARAMETERS, + ERROR_OUT_OF_RANGE, + ERROR_FILE_VERSION_INVALID, + ERROR_MODEL // this error should always be last in this list, error code is passed as ERROR_MODEL+error_code + } eLoadState; + + U32 mState; + std::string mFilename; + + S32 mLod; + + LLMatrix4 mTransform; + BOOL mFirstTransform; + LLVector3 mExtents[2]; + + bool mTrySLM; + bool mCacheOnlyHitIfRigged; // ignore cached SLM if it does not contain rig info (and we want rig info) + + model_list mModelList; + scene mScene; + + typedef std::queue<LLPointer<LLModel> > model_queue; + + //queue of models that need a physics rep + model_queue mPhysicsQ; + + //map of avatar joints as named in COLLADA assets to internal joint names + JointMap mJointMap; + JointTransformMap& mJointList; + JointSet& mJointsFromNode; + + LLModelLoader( + std::string filename, + S32 lod, + LLModelLoader::load_callback_t load_cb, + LLModelLoader::joint_lookup_func_t joint_lookup_func, + LLModelLoader::texture_load_func_t texture_load_func, + LLModelLoader::state_callback_t state_cb, + void* opaque_userdata, + JointTransformMap& jointMap, + JointSet& jointsFromNodes); + virtual ~LLModelLoader() ; + + virtual void setNoNormalize() { mNoNormalize = true; } + virtual void setNoOptimize() { mNoOptimize = true; } + + virtual void run(); + + // Will try SLM or derived class OpenFile as appropriate + // + virtual bool doLoadModel(); + + // Derived classes need to provide their parsing of files here + // + virtual bool OpenFile(const std::string& filename) = 0; + + bool loadFromSLM(const std::string& filename); + + void loadModelCallback(); + void loadTextures() ; //called in the main thread. + void setLoadState(U32 state); + + + + S32 mNumOfFetchingTextures ; //updated in the main thread + bool areTexturesReady() { return !mNumOfFetchingTextures; } //called in the main thread. + + bool verifyCount( int expected, int result ); + + //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) + void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); + void critiqueJointToNodeMappingFromScene( void ); + + //Determines if a rig is a legacy from the joint list + bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); + + //Determines if a rig is suitable for upload + bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); + + void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } + const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } + + const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } + void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } + + const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } + void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } + + //----------------------------------------------------------------------------- + // isNodeAJoint() + //----------------------------------------------------------------------------- + bool isNodeAJoint(const char* name) + { + return mJointMap.find(name) != mJointMap.end(); + } + +protected: + + LLModelLoader::load_callback_t mLoadCallback; + LLModelLoader::joint_lookup_func_t mJointLookupFunc; + LLModelLoader::texture_load_func_t mTextureLoadFunc; + LLModelLoader::state_callback_t mStateCallback; + void* mOpaqueData; + + bool mRigParityWithScene; + bool mRigValidJointUpload; + bool mLegacyRigValid; + + bool mNoNormalize; + bool mNoOptimize; + + JointSet mMasterJointList; + JointSet mMasterLegacyJointList; + JointTransformMap mJointTransformMap; + + static std::list<LLModelLoader*> sActiveLoaderList; + static bool isAlive(LLModelLoader* loader) ; +}; +class LLMatrix4a; +void stretch_extents(LLModel* model, LLMatrix4a& mat, LLVector4a& min, LLVector4a& max, BOOL& first_transform); +void stretch_extents(LLModel* model, LLMatrix4& mat, LLVector3& min, LLVector3& max, BOOL& first_transform); + +#endif // LL_LLMODELLOADER_H diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index 29747cb09c..186716609c 100755..100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -1869,9 +1869,12 @@ BOOL LLSculptParams::pack(LLDataPacker &dp) const BOOL LLSculptParams::unpack(LLDataPacker &dp) { - dp.unpackUUID(mSculptTexture, "texture"); - dp.unpackU8(mSculptType, "type"); - + U8 type; + LLUUID id; + dp.unpackUUID(id, "texture"); + dp.unpackU8(type, "type"); + + setSculptTexture(id, type); return TRUE; } @@ -1896,8 +1899,7 @@ bool LLSculptParams::operator==(const LLNetworkData& data) const void LLSculptParams::copy(const LLNetworkData& data) { const LLSculptParams *param = (LLSculptParams*)&data; - mSculptTexture = param->mSculptTexture; - mSculptType = param->mSculptType; + setSculptTexture(param->mSculptTexture, param->mSculptType); } @@ -1915,20 +1917,38 @@ LLSD LLSculptParams::asLLSD() const bool LLSculptParams::fromLLSD(LLSD& sd) { const char *w; - w = "texture"; + U8 type; + w = "type"; if (sd.has(w)) { - setSculptTexture( sd[w] ); - } else goto fail; - w = "type"; + type = sd[w].asInteger(); + } + else return false; + + w = "texture"; if (sd.has(w)) { - setSculptType( (U8)sd[w].asInteger() ); - } else goto fail; - + setSculptTexture(sd[w], type); + } + else return false; + return true; - fail: - return false; +} + +void LLSculptParams::setSculptTexture(const LLUUID& texture_id, U8 sculpt_type) +{ + U8 type = sculpt_type & LL_SCULPT_TYPE_MASK; + U8 flags = sculpt_type & LL_SCULPT_FLAG_MASK; + if (sculpt_type != (type | flags) || type > LL_SCULPT_TYPE_MAX) + { + mSculptTexture.set(SCULPT_DEFAULT_TEXTURE); + mSculptType = LL_SCULPT_TYPE_SPHERE; + } + else + { + mSculptTexture = texture_id; + mSculptType = sculpt_type; + } } //============================================================================ diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h index 1bf83e36b4..19d9d52817 100755..100644 --- a/indra/llprimitive/llprimitive.h +++ b/indra/llprimitive/llprimitive.h @@ -259,9 +259,8 @@ public: operator LLSD() const { return asLLSD(); } bool fromLLSD(LLSD& sd); - void setSculptTexture(const LLUUID& id) { mSculptTexture = id; } + void setSculptTexture(const LLUUID& texture_id, U8 sculpt_type); LLUUID getSculptTexture() const { return mSculptTexture; } - void setSculptType(U8 type) { mSculptType = type; } U8 getSculptType() const { return mSculptType; } }; diff --git a/indra/llprimitive/llprimlinkinfo.h b/indra/llprimitive/llprimlinkinfo.h index bee25975f1..bee25975f1 100755..100644 --- a/indra/llprimitive/llprimlinkinfo.h +++ b/indra/llprimitive/llprimlinkinfo.h diff --git a/indra/llprimitive/llprimtexturelist.cpp b/indra/llprimitive/llprimtexturelist.cpp index f4f08248b8..f4f08248b8 100755..100644 --- a/indra/llprimitive/llprimtexturelist.cpp +++ b/indra/llprimitive/llprimtexturelist.cpp diff --git a/indra/llprimitive/llprimtexturelist.h b/indra/llprimitive/llprimtexturelist.h index 49c636e40f..49c636e40f 100755..100644 --- a/indra/llprimitive/llprimtexturelist.h +++ b/indra/llprimitive/llprimtexturelist.h diff --git a/indra/llprimitive/lltextureanim.cpp b/indra/llprimitive/lltextureanim.cpp index 031a315d62..031a315d62 100755..100644 --- a/indra/llprimitive/lltextureanim.cpp +++ b/indra/llprimitive/lltextureanim.cpp diff --git a/indra/llprimitive/lltextureanim.h b/indra/llprimitive/lltextureanim.h index f0d9f9df5c..f0d9f9df5c 100755..100644 --- a/indra/llprimitive/lltextureanim.h +++ b/indra/llprimitive/lltextureanim.h diff --git a/indra/llprimitive/lltextureentry.cpp b/indra/llprimitive/lltextureentry.cpp index 284dfc15f4..284dfc15f4 100755..100644 --- a/indra/llprimitive/lltextureentry.cpp +++ b/indra/llprimitive/lltextureentry.cpp diff --git a/indra/llprimitive/lltextureentry.h b/indra/llprimitive/lltextureentry.h index 19edcaa27d..a40c3988f2 100755..100644 --- a/indra/llprimitive/lltextureentry.h +++ b/indra/llprimitive/lltextureentry.h @@ -89,6 +89,10 @@ public: bool operator==(const LLTextureEntry &rhs) const; bool operator!=(const LLTextureEntry &rhs) const; + + // Added to allow use with std::map + // + bool operator <(const LLTextureEntry &rhs) const; LLSD asLLSD() const; void asLLSD(LLSD& sd) const; diff --git a/indra/llprimitive/lltree_common.h b/indra/llprimitive/lltree_common.h index df00ff1591..df00ff1591 100755..100644 --- a/indra/llprimitive/lltree_common.h +++ b/indra/llprimitive/lltree_common.h diff --git a/indra/llprimitive/lltreeparams.cpp b/indra/llprimitive/lltreeparams.cpp index 19a6db20ae..19a6db20ae 100755..100644 --- a/indra/llprimitive/lltreeparams.cpp +++ b/indra/llprimitive/lltreeparams.cpp diff --git a/indra/llprimitive/lltreeparams.h b/indra/llprimitive/lltreeparams.h index 6e2b47c0e9..6e2b47c0e9 100755..100644 --- a/indra/llprimitive/lltreeparams.h +++ b/indra/llprimitive/lltreeparams.h diff --git a/indra/llprimitive/llvolumemessage.cpp b/indra/llprimitive/llvolumemessage.cpp index 8d47a7147f..8d47a7147f 100755..100644 --- a/indra/llprimitive/llvolumemessage.cpp +++ b/indra/llprimitive/llvolumemessage.cpp diff --git a/indra/llprimitive/llvolumemessage.h b/indra/llprimitive/llvolumemessage.h index f59ee79c60..f59ee79c60 100755..100644 --- a/indra/llprimitive/llvolumemessage.h +++ b/indra/llprimitive/llvolumemessage.h diff --git a/indra/llprimitive/material_codes.cpp b/indra/llprimitive/material_codes.cpp index 2ea47eec36..2ea47eec36 100755..100644 --- a/indra/llprimitive/material_codes.cpp +++ b/indra/llprimitive/material_codes.cpp diff --git a/indra/llprimitive/material_codes.h b/indra/llprimitive/material_codes.h index 84a6f2edd2..84a6f2edd2 100755..100644 --- a/indra/llprimitive/material_codes.h +++ b/indra/llprimitive/material_codes.h diff --git a/indra/llprimitive/object_flags.h b/indra/llprimitive/object_flags.h index 88eaeb034a..88eaeb034a 100755..100644 --- a/indra/llprimitive/object_flags.h +++ b/indra/llprimitive/object_flags.h diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp index b072ce3964..b072ce3964 100755..100644 --- a/indra/llprimitive/tests/llmediaentry_test.cpp +++ b/indra/llprimitive/tests/llmediaentry_test.cpp diff --git a/indra/llprimitive/tests/llmessagesystem_stub.cpp b/indra/llprimitive/tests/llmessagesystem_stub.cpp index 04e70945c4..04e70945c4 100755..100644 --- a/indra/llprimitive/tests/llmessagesystem_stub.cpp +++ b/indra/llprimitive/tests/llmessagesystem_stub.cpp diff --git a/indra/llprimitive/tests/llprimitive_test.cpp b/indra/llprimitive/tests/llprimitive_test.cpp index 0d60c7cd15..0d60c7cd15 100755..100644 --- a/indra/llprimitive/tests/llprimitive_test.cpp +++ b/indra/llprimitive/tests/llprimitive_test.cpp diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index 331f988382..331f988382 100755..100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp index af4e3fdda0..af4e3fdda0 100755..100644 --- a/indra/llrender/llcubemap.cpp +++ b/indra/llrender/llcubemap.cpp diff --git a/indra/llrender/llcubemap.h b/indra/llrender/llcubemap.h index ee2c41e026..ee2c41e026 100755..100644 --- a/indra/llrender/llcubemap.h +++ b/indra/llrender/llcubemap.h diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp index f128636ab2..f128636ab2 100755..100644 --- a/indra/llrender/llfontbitmapcache.cpp +++ b/indra/llrender/llfontbitmapcache.cpp diff --git a/indra/llrender/llfontbitmapcache.h b/indra/llrender/llfontbitmapcache.h index 75df3a94a7..75df3a94a7 100755..100644 --- a/indra/llrender/llfontbitmapcache.h +++ b/indra/llrender/llfontbitmapcache.h diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index de26d19efc..de26d19efc 100755..100644 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp diff --git a/indra/llrender/llfontfreetype.h b/indra/llrender/llfontfreetype.h index a5ece42b88..a5ece42b88 100755..100644 --- a/indra/llrender/llfontfreetype.h +++ b/indra/llrender/llfontfreetype.h diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 53ca080d66..53ca080d66 100755..100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index 0988e99deb..0988e99deb 100755..100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h diff --git a/indra/llrender/llfontregistry.cpp b/indra/llrender/llfontregistry.cpp index d003687415..d003687415 100755..100644 --- a/indra/llrender/llfontregistry.cpp +++ b/indra/llrender/llfontregistry.cpp diff --git a/indra/llrender/llfontregistry.h b/indra/llrender/llfontregistry.h index 177eb6c8a5..177eb6c8a5 100755..100644 --- a/indra/llrender/llfontregistry.h +++ b/indra/llrender/llfontregistry.h diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index e24d3bb5ba..e24d3bb5ba 100755..100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 75e5fe86ec..75e5fe86ec 100755..100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h diff --git a/indra/llrender/llgldbg.cpp b/indra/llrender/llgldbg.cpp index 0f1d4ae742..0f1d4ae742 100755..100644 --- a/indra/llrender/llgldbg.cpp +++ b/indra/llrender/llgldbg.cpp diff --git a/indra/llrender/llgldbg.h b/indra/llrender/llgldbg.h index 963579cb82..963579cb82 100755..100644 --- a/indra/llrender/llgldbg.h +++ b/indra/llrender/llgldbg.h diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index a95872e883..a95872e883 100755..100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 3ceed95248..0f260674ed 100755..100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -702,37 +702,138 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type) BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms) { - BOOL res = TRUE; - - mTotalUniformSize = 0; - mActiveTextureChannels = 0; - mUniform.clear(); - mUniformMap.clear(); - mUniformNameMap.clear(); - mTexture.clear(); - mValue.clear(); - //initialize arrays - U32 numUniforms = (uniforms == NULL) ? 0 : uniforms->size(); - mUniform.resize(numUniforms + LLShaderMgr::instance()->mReservedUniforms.size(), -1); - mTexture.resize(numUniforms + LLShaderMgr::instance()->mReservedUniforms.size(), -1); - - bind(); - - //get the number of active uniforms - GLint activeCount; - glGetObjectParameterivARB(mProgramObject, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &activeCount); - - for (S32 i = 0; i < activeCount; i++) - { - mapUniform(i, uniforms); - } - - unbind(); - - LL_DEBUGS("ShaderLoading") << "Total Uniform Size: " << mTotalUniformSize << LL_ENDL; - return res; + BOOL res = TRUE; + + mTotalUniformSize = 0; + mActiveTextureChannels = 0; + mUniform.clear(); + mUniformMap.clear(); + mUniformNameMap.clear(); + mTexture.clear(); + mValue.clear(); + //initialize arrays + U32 numUniforms = (uniforms == NULL) ? 0 : uniforms->size(); + mUniform.resize(numUniforms + LLShaderMgr::instance()->mReservedUniforms.size(), -1); + mTexture.resize(numUniforms + LLShaderMgr::instance()->mReservedUniforms.size(), -1); + + bind(); + + //get the number of active uniforms + GLint activeCount; + glGetObjectParameterivARB(mProgramObject, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &activeCount); + + //........................................................................................................................................ + //........................................................................................ + + /* + EXPLANATION: + This is part of code is temporary because as the final result the mapUniform() should be rewrited. + But it's a huge a volume of work which is need to be a more carefully performed for avoid possible + regression's (i.e. it should be formalized a separate ticket in JIRA). + + RESON: + The reason of this code is that SL engine is very sensitive to fact that "diffuseMap" should be appear + first as uniform parameter which is should get 0-"texture channel" index (see mapUniformTextureChannel() and mActiveTextureChannels) + it influence to which is texture matrix will be updated during rendering. + + But, order of indexe's of uniform variables is not defined and GLSL compiler can change it as want + , even if the "diffuseMap" will be appear and use first in shader code. + + As example where this situation appear see: "Deferred Material Shader 28/29/30/31" + And tickets: MAINT-4165, MAINT-4839, MAINT-3568 + */ + + + S32 diffuseMap = glGetUniformLocationARB(mProgramObject, "diffuseMap"); + S32 bumpMap = glGetUniformLocationARB(mProgramObject, "bumpMap"); + S32 environmentMap = glGetUniformLocationARB(mProgramObject, "environmentMap"); + + std::set<S32> skip_index; + + if (-1 != diffuseMap && (-1 != bumpMap || -1 != environmentMap)) + { + GLenum type; + GLsizei length; + GLint size = -1; + char name[1024]; + + diffuseMap = bumpMap = environmentMap = -1; + + for (S32 i = 0; i < activeCount; i++) + { + name[0] = '\0'; + + glGetActiveUniformARB(mProgramObject, i, 1024, &length, &size, &type, (GLcharARB *)name); + + if (-1 == diffuseMap && std::string(name) == "diffuseMap") + { + diffuseMap = i; + continue; + } + + if (-1 == bumpMap && std::string(name) == "bumpMap") + { + bumpMap = i; + continue; + } + + if (-1 == environmentMap && std::string(name) == "environmentMap") + { + environmentMap = i; + continue; + } + } + + bool bumpLessDiff = bumpMap < diffuseMap && -1 != bumpMap; + bool envLessDiff = environmentMap < diffuseMap && -1 != environmentMap; + + if (bumpLessDiff && envLessDiff) + { + mapUniform(diffuseMap, uniforms); + mapUniform(bumpMap, uniforms); + mapUniform(environmentMap, uniforms); + + skip_index.insert(diffuseMap); + skip_index.insert(bumpMap); + skip_index.insert(environmentMap); + } + else if (bumpLessDiff) + { + mapUniform(diffuseMap, uniforms); + mapUniform(bumpMap, uniforms); + + skip_index.insert(diffuseMap); + skip_index.insert(bumpMap); + } + else if (envLessDiff) + { + mapUniform(diffuseMap, uniforms); + mapUniform(environmentMap, uniforms); + + skip_index.insert(diffuseMap); + skip_index.insert(environmentMap); + } + } + + //........................................................................................ + + for (S32 i = 0; i < activeCount; i++) + { + //........................................................................................ + if (skip_index.end() != skip_index.find(i)) continue; + //........................................................................................ + + mapUniform(i, uniforms); + } + //........................................................................................................................................ + + unbind(); + + LL_DEBUGS("ShaderLoading") << "Total Uniform Size: " << mTotalUniformSize << LL_ENDL; + return res; } + BOOL LLGLSLShader::link(BOOL suppress_errors) { BOOL success = LLShaderMgr::instance()->linkProgramObject(mProgramObject, suppress_errors); diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h index 5abddf274b..5abddf274b 100755..100644 --- a/indra/llrender/llglslshader.h +++ b/indra/llrender/llglslshader.h diff --git a/indra/llrender/llglstates.h b/indra/llrender/llglstates.h index 0e2c3bcb44..0e2c3bcb44 100755..100644 --- a/indra/llrender/llglstates.h +++ b/indra/llrender/llglstates.h diff --git a/indra/llrender/llgltypes.h b/indra/llrender/llgltypes.h index 6c217ef727..6c217ef727 100755..100644 --- a/indra/llrender/llgltypes.h +++ b/indra/llrender/llgltypes.h diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index ebed454271..ebed454271 100755..100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 21982eab1d..21982eab1d 100755..100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index b6ea5aa7f1..b6ea5aa7f1 100755..100644 --- a/indra/llrender/llpostprocess.cpp +++ b/indra/llrender/llpostprocess.cpp diff --git a/indra/llrender/llpostprocess.h b/indra/llrender/llpostprocess.h index ce17b6693d..ce17b6693d 100755..100644 --- a/indra/llrender/llpostprocess.h +++ b/indra/llrender/llpostprocess.h diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 1ca6e99ecf..69420dd0bb 100755..100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -104,10 +104,10 @@ LLTexUnit::LLTexUnit(S32 index) mCurrColorSrc1(TBS_TEX_COLOR), mCurrColorSrc2(TBS_PREV_COLOR), mCurrAlphaSrc1(TBS_TEX_ALPHA), mCurrAlphaSrc2(TBS_PREV_ALPHA), mCurrColorScale(1), mCurrAlphaScale(1), mCurrTexture(0), - mHasMipMaps(false) + mHasMipMaps(false), + mIndex(index) { llassert_always(index < (S32)LL_NUM_TEXTURE_LAYERS); - mIndex = index; } //static @@ -227,33 +227,34 @@ bool LLTexUnit::bind(LLTexture* texture, bool for_rendering, bool forceBind) stop_glerror(); if (mIndex >= 0) { - gGL.flush(); + gGL.flush(); + + LLImageGL* gl_tex = NULL ; - LLImageGL* gl_tex = NULL ; if (texture != NULL && (gl_tex = texture->getGLTexture())) - { - if (gl_tex->getTexName()) //if texture exists - { - //in audit, replace the selected texture by the default one. - if ((mCurrTexture != gl_tex->getTexName()) || forceBind) - { - activate(); - enable(gl_tex->getTarget()); - mCurrTexture = gl_tex->getTexName(); - glBindTexture(sGLTextureType[gl_tex->getTarget()], mCurrTexture); - if(gl_tex->updateBindStats(gl_tex->mTextureMemory)) - { - texture->setActive() ; - texture->updateBindStatsForTester() ; - } - mHasMipMaps = gl_tex->mHasMipMaps; - if (gl_tex->mTexOptionsDirty) { - gl_tex->mTexOptionsDirty = false; - setTextureAddressMode(gl_tex->mAddressMode); - setTextureFilteringOption(gl_tex->mFilterOption); - } - } + if (gl_tex->getTexName()) //if texture exists + { + //in audit, replace the selected texture by the default one. + if ((mCurrTexture != gl_tex->getTexName()) || forceBind) + { + activate(); + enable(gl_tex->getTarget()); + mCurrTexture = gl_tex->getTexName(); + glBindTexture(sGLTextureType[gl_tex->getTarget()], mCurrTexture); + if(gl_tex->updateBindStats(gl_tex->mTextureMemory)) + { + texture->setActive() ; + texture->updateBindStatsForTester() ; + } + mHasMipMaps = gl_tex->mHasMipMaps; + if (gl_tex->mTexOptionsDirty) + { + gl_tex->mTexOptionsDirty = false; + setTextureAddressMode(gl_tex->mAddressMode); + setTextureFilteringOption(gl_tex->mFilterOption); + } + } } else { diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 42b02a8159..a67fb8da52 100755..100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -198,7 +198,7 @@ public: void setHasMipMaps(bool hasMips) { mHasMipMaps = hasMips; } protected: - S32 mIndex; + const S32 mIndex; U32 mCurrTexture; eTextureType mCurrTexType; eTextureBlendType mCurrBlendType; diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp index ca72964832..ca72964832 100755..100644 --- a/indra/llrender/llrendernavprim.cpp +++ b/indra/llrender/llrendernavprim.cpp diff --git a/indra/llrender/llrendernavprim.h b/indra/llrender/llrendernavprim.h index a3a5dfec3a..a3a5dfec3a 100755..100644 --- a/indra/llrender/llrendernavprim.h +++ b/indra/llrender/llrendernavprim.h diff --git a/indra/llrender/llrendersphere.cpp b/indra/llrender/llrendersphere.cpp index 26bfe036e8..26bfe036e8 100755..100644 --- a/indra/llrender/llrendersphere.cpp +++ b/indra/llrender/llrendersphere.cpp diff --git a/indra/llrender/llrendersphere.h b/indra/llrender/llrendersphere.h index f8e9e86e7f..f8e9e86e7f 100755..100644 --- a/indra/llrender/llrendersphere.h +++ b/indra/llrender/llrendersphere.h diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index cd484b4fe9..cd484b4fe9 100755..100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h index 6dc84d978d..6dc84d978d 100755..100644 --- a/indra/llrender/llrendertarget.h +++ b/indra/llrender/llrendertarget.h diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index b2be3cc3b6..b2be3cc3b6 100755..100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 394b38f832..394b38f832 100755..100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h diff --git a/indra/llrender/lltexture.cpp b/indra/llrender/lltexture.cpp index 90fbcec2be..90fbcec2be 100755..100644 --- a/indra/llrender/lltexture.cpp +++ b/indra/llrender/lltexture.cpp diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h index 9fca8b8cd3..9fca8b8cd3 100755..100644 --- a/indra/llrender/lltexture.h +++ b/indra/llrender/lltexture.h diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 0fae600a90..0fae600a90 100755..100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index c05fd01595..c05fd01595 100755..100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index 52738aeb6f..52738aeb6f 100755..100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 623f570cef..623f570cef 100755..100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h index 1fe64c472e..1fe64c472e 100755..100644 --- a/indra/llui/llaccordionctrl.h +++ b/indra/llui/llaccordionctrl.h diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 53720a6044..53720a6044 100755..100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index 7a78700e0f..7a78700e0f 100755..100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp index 42726de0ad..42726de0ad 100755..100644 --- a/indra/llui/llbadge.cpp +++ b/indra/llui/llbadge.cpp diff --git a/indra/llui/llbadge.h b/indra/llui/llbadge.h index 4b21a71aaa..4b21a71aaa 100755..100644 --- a/indra/llui/llbadge.h +++ b/indra/llui/llbadge.h diff --git a/indra/llui/llbadgeholder.cpp b/indra/llui/llbadgeholder.cpp index 1f786f36ae..1f786f36ae 100755..100644 --- a/indra/llui/llbadgeholder.cpp +++ b/indra/llui/llbadgeholder.cpp diff --git a/indra/llui/llbadgeholder.h b/indra/llui/llbadgeholder.h index 2538eaae91..2538eaae91 100755..100644 --- a/indra/llui/llbadgeholder.h +++ b/indra/llui/llbadgeholder.h diff --git a/indra/llui/llbadgeowner.cpp b/indra/llui/llbadgeowner.cpp index 55e64bb940..55e64bb940 100755..100644 --- a/indra/llui/llbadgeowner.cpp +++ b/indra/llui/llbadgeowner.cpp diff --git a/indra/llui/llbadgeowner.h b/indra/llui/llbadgeowner.h index 53c2de95c8..53c2de95c8 100755..100644 --- a/indra/llui/llbadgeowner.h +++ b/indra/llui/llbadgeowner.h diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 8c7df45884..8c7df45884 100755..100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 7b4719866d..7b4719866d 100755..100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h diff --git a/indra/llui/llcallbackmap.h b/indra/llui/llcallbackmap.h index 0a10877c09..0a10877c09 100755..100644 --- a/indra/llui/llcallbackmap.h +++ b/indra/llui/llcallbackmap.h diff --git a/indra/llui/llchat.h b/indra/llui/llchat.h index f5b242fdfc..f5b242fdfc 100755..100644 --- a/indra/llui/llchat.h +++ b/indra/llui/llchat.h diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp index dac001afab..dac001afab 100755..100644 --- a/indra/llui/llchatentry.cpp +++ b/indra/llui/llchatentry.cpp diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h index 3f13691a30..3f13691a30 100755..100644 --- a/indra/llui/llchatentry.h +++ b/indra/llui/llchatentry.h diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp index eee6339caf..eee6339caf 100755..100644 --- a/indra/llui/llcheckboxctrl.cpp +++ b/indra/llui/llcheckboxctrl.cpp diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h index 5ce45b2135..5ce45b2135 100755..100644 --- a/indra/llui/llcheckboxctrl.h +++ b/indra/llui/llcheckboxctrl.h diff --git a/indra/llui/llclipboard.cpp b/indra/llui/llclipboard.cpp index 1d18cb2bb0..1d18cb2bb0 100755..100644 --- a/indra/llui/llclipboard.cpp +++ b/indra/llui/llclipboard.cpp diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h index 58d80e2687..58d80e2687 100755..100644 --- a/indra/llui/llclipboard.h +++ b/indra/llui/llclipboard.h diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index b32aea5ffa..559895da1a 100755..100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -443,6 +443,7 @@ void LLComboBox::onFocusLost() { mTextEntry->selectAll(); } + mButton->setForcePressedState(false); LLUICtrl::onFocusLost(); } diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index c9b1212b70..c9b1212b70 100755..100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp index 74ef8dd0c3..3e159365e5 100755..100644 --- a/indra/llui/llcommandmanager.cpp +++ b/indra/llui/llcommandmanager.cpp @@ -131,6 +131,25 @@ LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId) return command_match; } +LLCommand * LLCommandManager::getCommand(const std::string& name) +{ + LLCommand * command_match = NULL; + + CommandVector::const_iterator it = mCommands.begin(); + + while (it != mCommands.end()) + { + if ((*it)->name() == name) + { + command_match = *it; + break; + } + it++; + } + + return command_match; +} + void LLCommandManager::addCommand(LLCommand * command) { LLCommandId command_id = command->id(); diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h index ff5a8a3257..f2f2145953 100755..100644 --- a/indra/llui/llcommandmanager.h +++ b/indra/llui/llcommandmanager.h @@ -190,6 +190,7 @@ public: U32 commandCount() const; LLCommand * getCommand(U32 commandIndex); LLCommand * getCommand(const LLCommandId& commandId); + LLCommand * getCommand(const std::string& name); static bool load(); diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 26ae31cac6..26ae31cac6 100755..100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h index 5ff05698b0..5ff05698b0 100755..100644 --- a/indra/llui/llconsole.h +++ b/indra/llui/llconsole.h diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp index 727fbe850e..727fbe850e 100755..100644 --- a/indra/llui/llcontainerview.cpp +++ b/indra/llui/llcontainerview.cpp diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h index ac92b19977..ac92b19977 100755..100644 --- a/indra/llui/llcontainerview.h +++ b/indra/llui/llcontainerview.h diff --git a/indra/llui/llctrlselectioninterface.cpp b/indra/llui/llctrlselectioninterface.cpp index 7e886aff48..7e886aff48 100755..100644 --- a/indra/llui/llctrlselectioninterface.cpp +++ b/indra/llui/llctrlselectioninterface.cpp diff --git a/indra/llui/llctrlselectioninterface.h b/indra/llui/llctrlselectioninterface.h index a7b089c8f9..a7b089c8f9 100755..100644 --- a/indra/llui/llctrlselectioninterface.h +++ b/indra/llui/llctrlselectioninterface.h diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index 3396213f1c..c937d190c6 100755..100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -153,7 +153,7 @@ void LLDockableFloater::setVisible(BOOL visible) mDockControl.get()->repositionDockable(); } - if (visible) + if (visible && !isMinimized()) { LLFloater::setFrontmost(getAutoFocus()); } diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 89c9852f4a..89c9852f4a 100755..100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index bd42497cb6..bd42497cb6 100755..100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index 98a9c7236d..98a9c7236d 100755..100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index 48bf5bb80f..48bf5bb80f 100755..100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h index e095e577b1..e095e577b1 100755..100644 --- a/indra/llui/lldraghandle.h +++ b/indra/llui/lldraghandle.h diff --git a/indra/llui/lleditmenuhandler.cpp b/indra/llui/lleditmenuhandler.cpp index d48237e377..d48237e377 100755..100644 --- a/indra/llui/lleditmenuhandler.cpp +++ b/indra/llui/lleditmenuhandler.cpp diff --git a/indra/llui/lleditmenuhandler.h b/indra/llui/lleditmenuhandler.h index 0932f094ef..0932f094ef 100755..100644 --- a/indra/llui/lleditmenuhandler.h +++ b/indra/llui/lleditmenuhandler.h diff --git a/indra/llui/llf32uictrl.cpp b/indra/llui/llf32uictrl.cpp index d186f085b4..d186f085b4 100755..100644 --- a/indra/llui/llf32uictrl.cpp +++ b/indra/llui/llf32uictrl.cpp diff --git a/indra/llui/llf32uictrl.h b/indra/llui/llf32uictrl.h index 6e648f9102..6e648f9102 100755..100644 --- a/indra/llui/llf32uictrl.h +++ b/indra/llui/llf32uictrl.h diff --git a/indra/llui/llfiltereditor.cpp b/indra/llui/llfiltereditor.cpp index d62874d793..d62874d793 100755..100644 --- a/indra/llui/llfiltereditor.cpp +++ b/indra/llui/llfiltereditor.cpp diff --git a/indra/llui/llfiltereditor.h b/indra/llui/llfiltereditor.h index 3a05bc05a1..3a05bc05a1 100755..100644 --- a/indra/llui/llfiltereditor.h +++ b/indra/llui/llfiltereditor.h diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp index 6d9c429b08..6d9c429b08 100755..100644 --- a/indra/llui/llflashtimer.cpp +++ b/indra/llui/llflashtimer.cpp diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h index db8d49f009..db8d49f009 100755..100644 --- a/indra/llui/llflashtimer.h +++ b/indra/llui/llflashtimer.h diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 299f5e42d4..299f5e42d4 100755..100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 92bf429031..92bf429031 100755..100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 14f75a2352..14f75a2352 100755..100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index ef7c6180d2..ef7c6180d2 100755..100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 9ef290abc0..9ef290abc0 100755..100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index e3b17dcb4f..e3b17dcb4f 100755..100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h diff --git a/indra/llui/llfloaterreglistener.cpp b/indra/llui/llfloaterreglistener.cpp index 7525b8cab3..7525b8cab3 100755..100644 --- a/indra/llui/llfloaterreglistener.cpp +++ b/indra/llui/llfloaterreglistener.cpp diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h index 24311a2dfa..24311a2dfa 100755..100644 --- a/indra/llui/llfloaterreglistener.h +++ b/indra/llui/llfloaterreglistener.h diff --git a/indra/llui/llflyoutbutton.cpp b/indra/llui/llflyoutbutton.cpp index 4b3a0a5d21..4b3a0a5d21 100755..100644 --- a/indra/llui/llflyoutbutton.cpp +++ b/indra/llui/llflyoutbutton.cpp diff --git a/indra/llui/llflyoutbutton.h b/indra/llui/llflyoutbutton.h index 36998eba2e..36998eba2e 100755..100644 --- a/indra/llui/llflyoutbutton.h +++ b/indra/llui/llflyoutbutton.h diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp index 547f0bd398..1a51b96fdf 100755..100644 --- a/indra/llui/llfocusmgr.cpp +++ b/indra/llui/llfocusmgr.cpp @@ -47,11 +47,29 @@ BOOL LLFocusableElement::handleKey(KEY key, MASK mask, BOOL called_from_parent) } // virtual +BOOL LLFocusableElement::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) +{ + return FALSE; +} + +// virtual BOOL LLFocusableElement::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent) { return FALSE; } +// virtual +bool LLFocusableElement::wantsKeyUpKeyDown() const +{ + return false; +} + +//virtual +bool LLFocusableElement::wantsReturnKey() const +{ + return false; +} + // virtual LLFocusableElement::~LLFocusableElement() { diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h index afd2a8ce06..0e3d7d8e59 100755..100644 --- a/indra/llui/llfocusmgr.h +++ b/indra/llui/llfocusmgr.h @@ -57,8 +57,17 @@ public: // These were brought up the hierarchy from LLView so that we don't have to use dynamic_cast when dealing with keyboard focus. virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + virtual BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent); virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); + /** + * If true this LLFocusableElement wants to receive KEYUP and KEYDOWN messages + * even for normal character strokes. + * Default implementation returns false. + */ + virtual bool wantsKeyUpKeyDown() const; + virtual bool wantsReturnKey() const; + virtual void onTopLost(); // called when registered as top ctrl and user clicks elsewhere protected: virtual void onFocusReceived(); diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index f60129e601..3282c5f726 100755..100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -170,7 +170,8 @@ LLFolderView::LLFolderView(const Params& p) mDraggingOverItem(NULL), mStatusTextBox(NULL), mShowItemLinkOverlays(p.show_item_link_overlays), - mViewModel(p.view_model) + mViewModel(p.view_model), + mGroupedItemModel(p.grouped_item_model) { claimMem(mViewModel); LLPanel* panel = p.parent_panel; @@ -729,7 +730,7 @@ void LLFolderView::removeSelectedItems() // structures. std::vector<LLFolderViewItem*> items; S32 count = mSelectedItems.size(); - if(count == 0) return; + if(count <= 0) return; LLFolderViewItem* item = NULL; selected_items_t::iterator item_it; for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it) @@ -946,7 +947,6 @@ void LLFolderView::cut() if (listener) { listener->cutToClipboard(); - listener->removeItem(); } } @@ -1810,7 +1810,6 @@ void LLFolderView::updateMenuOptions(LLMenuGL* menu) } // Successively filter out invalid options - U32 multi_select_flag = (mSelectedItems.size() > 1 ? ITEM_IN_MULTI_SELECTION : 0x0); U32 flags = multi_select_flag | FIRST_SELECTED_ITEM; for (selected_items_t::iterator item_itor = mSelectedItems.begin(); @@ -1822,6 +1821,14 @@ void LLFolderView::updateMenuOptions(LLMenuGL* menu) flags = multi_select_flag; } + // This adds a check for restrictions based on the entire + // selection set - for example, any one wearable may not push you + // over the limit, but all wearables together still might. + if (getFolderViewGroupedItemModel()) + { + getFolderViewGroupedItemModel()->groupFilterContextMenu(mSelectedItems,*menu); + } + addNoOptions(menu); } diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h index 08e0a6220a..114dd7bd2f 100755..100644 --- a/indra/llui/llfolderview.h +++ b/indra/llui/llfolderview.h @@ -45,6 +45,7 @@ #include "llscrollcontainer.h" class LLFolderViewModelInterface; +class LLFolderViewGroupedItemModel; class LLFolderViewFolder; class LLFolderViewItem; class LLFolderViewFilter; @@ -93,6 +94,7 @@ public: use_ellipses, show_item_link_overlays; Mandatory<LLFolderViewModelInterface*> view_model; + Optional<LLFolderViewGroupedItemModel*> grouped_item_model; Mandatory<std::string> options_menu; @@ -100,7 +102,7 @@ public: }; friend class LLFolderViewScrollContainer; - typedef std::deque<LLFolderViewItem*> selected_items_t; + typedef folder_view_item_deque selected_items_t; LLFolderView(const Params&); virtual ~LLFolderView( void ); @@ -113,6 +115,9 @@ public: LLFolderViewModelInterface* getFolderViewModel() { return mViewModel; } const LLFolderViewModelInterface* getFolderViewModel() const { return mViewModel; } + LLFolderViewGroupedItemModel* getFolderViewGroupedItemModel() { return mGroupedItemModel; } + const LLFolderViewGroupedItemModel* getFolderViewGroupedItemModel() const { return mGroupedItemModel; } + typedef boost::signals2::signal<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)> signal_t; void setSelectCallback(const signal_t::slot_type& cb) { mSelectSignal.connect(cb); } void setReshapeCallback(const signal_t::slot_type& cb) { mReshapeSignal.connect(cb); } @@ -300,6 +305,7 @@ protected: LLHandle<LLPanel> mParentPanel; LLFolderViewModelInterface* mViewModel; + LLFolderViewGroupedItemModel* mGroupedItemModel; /** * Is used to determine if we need to cut text In LLFolderViewItem to avoid horizontal scroll. diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 747b472ac2..3def0386e1 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -104,7 +104,8 @@ LLFolderViewItem::Params::Params() item_height("item_height"), item_top_pad("item_top_pad"), creation_date(), - allow_open("allow_open", true), + allow_wear("allow_wear", true), + allow_drop("allow_drop", true), font_color("font_color"), font_highlight_color("font_highlight_color"), left_pad("left_pad", 0), @@ -128,6 +129,7 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p) mSelectPending(FALSE), mLabelStyle( LLFontGL::NORMAL ), mHasVisibleChildren(FALSE), + mIsFolderComplete(true), mLocalIndentation(p.folder_indentation), mIndentation(0), mItemHeight(p.item_height), @@ -137,7 +139,8 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p) mRoot(p.root), mViewModelItem(p.listener), mIsMouseOverTitle(false), - mAllowOpen(p.allow_open), + mAllowWear(p.allow_wear), + mAllowDrop(p.allow_drop), mFontColor(p.font_color), mFontHighlightColor(p.font_highlight_color), mLeftPad(p.left_pad), @@ -471,7 +474,7 @@ void LLFolderViewItem::buildContextMenu(LLMenuGL& menu, U32 flags) void LLFolderViewItem::openItem( void ) { - if (mAllowOpen) + if (mAllowWear || !getViewModelItem()->isItemWearable()) { getViewModelItem()->openItem(); } @@ -672,7 +675,7 @@ void LLFolderViewItem::drawOpenFolderArrow(const Params& default_params, const L // const S32 TOP_PAD = default_params.item_top_pad; - if (hasVisibleChildren()) + if (hasVisibleChildren() || !isFolderComplete()) { LLUIImage* arrow_image = default_params.folder_arrow_image; gl_draw_scaled_rotated_image( @@ -932,6 +935,8 @@ LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ): mLastArrangeGeneration( -1 ), mLastCalculatedWidth(0) { + // folder might have children that are not loaded yet. Mark it as incomplete until chance to check it. + mIsFolderComplete = false; } void LLFolderViewFolder::updateLabelRotation() @@ -1014,6 +1019,12 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) mHasVisibleChildren = found; } + if (!mIsFolderComplete) + { + mIsFolderComplete = getFolderViewModel()->isFolderComplete(this); + } + + // calculate height as a single item (without any children), and reshapes rectangle to match LLFolderViewItem::arrange( width, height ); @@ -1337,7 +1348,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo { return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1356,7 +1367,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1378,7 +1389,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1397,7 +1408,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1461,31 +1472,37 @@ void LLFolderViewFolder::extendSelectionTo(LLFolderViewItem* new_selection) LLFolderView* root = getRoot(); - for (std::vector<LLFolderViewItem*>::iterator it = items_to_select_forward.begin(), end_it = items_to_select_forward.end(); + BOOL selection_reverse = new_selection->isSelected(); //indication that some elements are being deselected + + // array always go from 'will be selected' to ' will be unselected', iterate + // in opposite direction to simplify identification of 'point of origin' in + // case it is in the list we are working with + for (std::vector<LLFolderViewItem*>::reverse_iterator it = items_to_select_forward.rbegin(), end_it = items_to_select_forward.rend(); it != end_it; ++it) { LLFolderViewItem* item = *it; - if (item->isSelected()) + BOOL selected = item->isSelected(); + if (!selection_reverse && selected) { - root->removeFromSelectionList(item); + // it is our 'point of origin' where we shift/expand from + // don't deselect it + selection_reverse = TRUE; } else { - item->selectItem(); + root->changeSelection(item, !selected); } - root->addToSelectionList(item); } - if (new_selection->isSelected()) - { - root->removeFromSelectionList(new_selection); - } - else + if (selection_reverse) { - new_selection->selectItem(); + // at some point we reversed selection, first element should be deselected + root->changeSelection(last_selected_item_from_cur, FALSE); } - root->addToSelectionList(new_selection); + + // element we expand to should always be selected + root->changeSelection(new_selection, TRUE); } @@ -1494,12 +1511,14 @@ void LLFolderViewFolder::destroyView() while (!mItems.empty()) { LLFolderViewItem *itemp = mItems.back(); + mItems.pop_back(); itemp->destroyView(); // LLFolderViewItem::destroyView() removes entry from mItems } while (!mFolders.empty()) { LLFolderViewFolder *folderp = mFolders.back(); + mFolders.pop_back(); folderp->destroyView(); // LLFolderVievFolder::destroyView() removes entry from mFolders } @@ -1673,7 +1692,9 @@ void LLFolderViewFolder::setOpenArrangeRecursively(BOOL openitem, ERecurseType r mIsOpen = openitem; if(!was_open && openitem) { - getViewModelItem()->openItem(); + getViewModelItem()->openItem(); + // openItem() will request content, it won't be incomplete + mIsFolderComplete = true; } else if(was_open && !openitem) { @@ -1797,9 +1818,16 @@ BOOL LLFolderViewFolder::handleDragAndDropToThisFolder(MASK mask, EAcceptance* accept, std::string& tooltip_msg) { + if (!mAllowDrop) + { + *accept = ACCEPT_NO; + tooltip_msg = LLTrans::getString("TooltipOutboxCannotDropOnRoot"); + return TRUE; + } + BOOL accepted = getViewModelItem()->dragOrDrop(mask,drop,cargo_type,cargo_data, tooltip_msg); - - if (accepted) + + if (accepted) { mDragAndDropTarget = TRUE; *accept = ACCEPT_YES_MULTI; diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index 0cd20a0f2d..0322c8836d 100644 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -59,7 +59,8 @@ public: item_top_pad; Optional<time_t> creation_date; - Optional<bool> allow_open; + Optional<bool> allow_wear; + Optional<bool> allow_drop; Optional<LLUIColor> font_color; Optional<LLUIColor> font_highlight_color; @@ -114,10 +115,12 @@ protected: F32 mControlLabelRotation; LLFolderView* mRoot; bool mHasVisibleChildren, + mIsFolderComplete, // indicates that some children were not loaded/added yet mIsCurSelection, mDragAndDropTarget, mIsMouseOverTitle, - mAllowOpen, + mAllowWear, + mAllowDrop, mSelectPending; LLUIColor mFontColor; @@ -210,6 +213,9 @@ public: BOOL hasVisibleChildren() { return mHasVisibleChildren; } + // true if object can't have children + BOOL isFolderComplete() { return mIsFolderComplete; } + // Call through to the viewed object and return true if it can be // removed. Returns true if it's removed. //virtual BOOL removeRecursively(BOOL single_item); @@ -454,5 +460,12 @@ public: template<typename SORT_FUNC> void sortItems(const SORT_FUNC& func) { mItems.sort(func); } }; +typedef std::deque<LLFolderViewItem*> folder_view_item_deque; + +class LLFolderViewGroupedItemModel: public LLRefCount +{ +public: + virtual void groupFilterContextMenu(folder_view_item_deque& selected_items, LLMenuGL& menu) = 0; +}; #endif // LLFOLDERVIEWITEM_H diff --git a/indra/llui/llfolderviewmodel.cpp b/indra/llui/llfolderviewmodel.cpp index 3363dc5316..3363dc5316 100755..100644 --- a/indra/llui/llfolderviewmodel.cpp +++ b/indra/llui/llfolderviewmodel.cpp diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h index f6550eae42..a395af537a 100755..100644 --- a/indra/llui/llfolderviewmodel.h +++ b/indra/llui/llfolderviewmodel.h @@ -122,6 +122,7 @@ public: virtual void filter() = 0; virtual bool contentsReady() = 0; + virtual bool isFolderComplete(class LLFolderViewFolder*) = 0; virtual void setFolderView(LLFolderView* folder_view) = 0; virtual LLFolderViewFilter& getFilter() = 0; virtual const LLFolderViewFilter& getFilter() const = 0; @@ -156,6 +157,8 @@ public: virtual void openItem( void ) = 0; virtual void closeItem( void ) = 0; virtual void selectItem(void) = 0; + + virtual BOOL isItemWearable() const { return FALSE; } virtual BOOL isItemRenameable() const = 0; virtual BOOL renameItem(const std::string& new_name) = 0; @@ -169,7 +172,7 @@ public: virtual BOOL isItemCopyable() const = 0; virtual BOOL copyToClipboard() const = 0; - virtual BOOL cutToClipboard() const = 0; + virtual BOOL cutToClipboard() = 0; virtual BOOL isClipboardPasteable() const = 0; virtual void pasteFromClipboard() = 0; @@ -442,6 +445,7 @@ public: // By default, we assume the content is available. If a network fetch mechanism is implemented for the model, // this method needs to be overloaded and return the relevant fetch status. virtual bool contentsReady() { return true; } + virtual bool isFolderComplete(LLFolderViewFolder* folder) { return true; } struct ViewModelCompare { diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h index f5364f4863..f5364f4863 100755..100644 --- a/indra/llui/llfunctorregistry.h +++ b/indra/llui/llfunctorregistry.h diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h index 1726347a78..1726347a78 100755..100644 --- a/indra/llui/llhelp.h +++ b/indra/llui/llhelp.h diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 58b66f60ca..58b66f60ca 100755..100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h index 8b1092df46..8b1092df46 100755..100644 --- a/indra/llui/lliconctrl.h +++ b/indra/llui/lliconctrl.h diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index 6750ee482a..fc4a007d9e 100755..100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -296,7 +296,7 @@ void LLKeywords::processTokensGroup(const LLSD& tokens, const std::string& group } color_group = getColorGroup(group); - LL_INFOS("SyntaxLSL") << "Group: '" << group << "', using color: '" << color_group << "'" << LL_ENDL; + LL_DEBUGS("SyntaxLSL") << "Group: '" << group << "', using color: '" << color_group << "'" << LL_ENDL; if (tokens.isMap()) { @@ -331,7 +331,14 @@ void LLKeywords::processTokensGroup(const LLSD& tokens, const std::string& group switch (token_type) { case LLKeywordToken::TT_CONSTANT: - color_group = getColorGroup(group + "-" + getAttribute("type")); + if (getAttribute("type").length() > 0) + { + color_group = getColorGroup(group + "-" + getAttribute("type")); + } + else + { + color_group = getColorGroup(group); + } tooltip = "Type: " + getAttribute("type") + ", Value: " + getAttribute("value"); break; case LLKeywordToken::TT_EVENT: diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h index 18e2ed06c5..18e2ed06c5 100755..100644 --- a/indra/llui/llkeywords.h +++ b/indra/llui/llkeywords.h diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 69246a2f57..69246a2f57 100755..100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index a245ebe1b9..a245ebe1b9 100755..100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h diff --git a/indra/llui/lllazyvalue.h b/indra/llui/lllazyvalue.h index 0fc95d9efa..0fc95d9efa 100755..100644 --- a/indra/llui/lllazyvalue.h +++ b/indra/llui/lllazyvalue.h diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index a08cf91a69..a08cf91a69 100755..100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h index c6d472f59b..c6d472f59b 100755..100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp index 1ede5b706f..1ede5b706f 100755..100644 --- a/indra/llui/llloadingindicator.cpp +++ b/indra/llui/llloadingindicator.cpp diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h index ffcb329f42..ffcb329f42 100755..100644 --- a/indra/llui/llloadingindicator.h +++ b/indra/llui/llloadingindicator.h diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp index f3a526faeb..f3a526faeb 100755..100644 --- a/indra/llui/lllocalcliprect.cpp +++ b/indra/llui/lllocalcliprect.cpp diff --git a/indra/llui/lllocalcliprect.h b/indra/llui/lllocalcliprect.h index eeeaf2adb6..eeeaf2adb6 100755..100644 --- a/indra/llui/lllocalcliprect.h +++ b/indra/llui/lllocalcliprect.h diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp index 303afcda15..303afcda15 100755..100644 --- a/indra/llui/llmenubutton.cpp +++ b/indra/llui/llmenubutton.cpp diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 67ec1983b3..67ec1983b3 100755..100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 7cdbcb0621..848367f8a8 100755..100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -225,7 +225,6 @@ BOOL LLMenuItemGL::handleAcceleratorKey(KEY key, MASK mask) BOOL LLMenuItemGL::handleHover(S32 x, S32 y, MASK mask) { - setHover(TRUE); getWindow()->setCursor(UI_CURSOR_ARROW); return TRUE; } @@ -236,6 +235,18 @@ BOOL LLMenuItemGL::handleRightMouseDown(S32 x, S32 y, MASK mask) return LLUICtrl::handleRightMouseDown(x,y,mask); } +void LLMenuItemGL::onMouseEnter(S32 x, S32 y, MASK mask) +{ + setHover(TRUE); + LLUICtrl::onMouseEnter(x,y,mask); +} + +void LLMenuItemGL::onMouseLeave(S32 x, S32 y, MASK mask) +{ + setHover(FALSE); + LLUICtrl::onMouseLeave(x,y,mask); +} + //virtual BOOL LLMenuItemGL::handleRightMouseUp(S32 x, S32 y, MASK mask) { @@ -533,9 +544,6 @@ void LLMenuItemGL::draw( void ) gl_line_2d(x_begin, (MENU_ITEM_PADDING / 2) + 1, x_end, (MENU_ITEM_PADDING / 2) + 1); } } - - // clear got hover every frame - setHover(FALSE); } BOOL LLMenuItemGL::setLabelArg( const std::string& key, const LLStringExplicit& text ) @@ -1043,7 +1051,7 @@ void LLMenuItemBranchGL::onCommit( void ) // keyboard navigation automatically propagates highlight to sub-menu // to facilitate fast menu control via jump keys - if (LLMenuGL::getKeyboardMode() && getBranch()&& !getBranch()->getHighlightedItem()) + if (LLMenuGL::getKeyboardMode() && getBranch() && !getBranch()->getHighlightedItem()) { getBranch()->highlightNextItem(NULL); } @@ -1456,7 +1464,16 @@ BOOL LLMenuItemBranchDownGL::handleMouseDown( S32 x, S32 y, MASK mask ) { // switch to mouse control mode LLMenuGL::setKeyboardMode(FALSE); - onCommit(); + + if (getVisible() && isOpen()) + { + LLMenuGL::sMenuContainer->hideMenus(); + } + else + { + onCommit(); + } + make_ui_sound("UISndClick"); return TRUE; } @@ -1588,10 +1605,6 @@ void LLMenuItemBranchDownGL::draw( void ) gl_line_2d(x_begin, LABEL_BOTTOM_PAD_PIXELS, x_end, LABEL_BOTTOM_PAD_PIXELS); } } - - // reset every frame so that we only show highlight - // when we get hover events on that frame - setHover(FALSE); } @@ -3381,6 +3394,11 @@ BOOL LLMenuBarGL::handleMouseDown(S32 x, S32 y, MASK mask) return LLMenuGL::handleMouseDown(x, y, mask); } +BOOL LLMenuBarGL::handleDoubleClick(S32 x, S32 y, MASK mask) +{ + return LLMenuGL::handleMouseDown(x, y, mask); +} + void LLMenuBarGL::draw() { LLMenuItemGL* itemp = getHighlightedItem(); @@ -3625,8 +3643,24 @@ BOOL LLMenuHolderGL::handleMouseDown( S32 x, S32 y, MASK mask ) BOOL handled = LLView::childrenHandleMouseDown(x, y, mask) != NULL; if (!handled) { - // clicked off of menu, hide them all - hideMenus(); + LLMenuGL* visible_menu = (LLMenuGL*)getVisibleMenu(); + LLMenuItemGL* parent_menu = visible_menu ? visible_menu->getParentMenuItem() : NULL; + if (parent_menu && parent_menu->getVisible()) + { + // don't hide menu if parent was hit + LLRect parent_rect; + parent_menu->localRectToOtherView(parent_menu->getLocalRect(), &parent_rect, this); + if (!parent_rect.pointInRect(x, y)) + { + // clicked off of menu and parent, hide them all + hideMenus(); + } + } + else + { + // no visible parent, clicked off of menu, hide them all + hideMenus(); + } } return handled; } diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index ae9b169691..628dedb906 100755..100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -158,6 +158,10 @@ public: virtual BOOL handleMouseDown( S32 x, S32 y, MASK mask ); virtual BOOL handleMouseUp( S32 x, S32 y, MASK mask ); virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); + + virtual void onMouseEnter(S32 x, S32 y, MASK mask); + virtual void onMouseLeave(S32 x, S32 y, MASK mask); + virtual void draw( void ); BOOL getHover() const { return mGotHover; } @@ -753,6 +757,7 @@ public: /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); /*virtual*/ BOOL handleJumpKey(KEY key); /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); /*virtual*/ void draw(); /*virtual*/ BOOL jumpKeysActive(); diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp index 8cf88ad5eb..8cf88ad5eb 100755..100644 --- a/indra/llui/llmodaldialog.cpp +++ b/indra/llui/llmodaldialog.cpp diff --git a/indra/llui/llmodaldialog.h b/indra/llui/llmodaldialog.h index f81273b96a..f81273b96a 100755..100644 --- a/indra/llui/llmodaldialog.h +++ b/indra/llui/llmodaldialog.h diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index d1a597511e..d1a597511e 100755..100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h index c106a62527..c106a62527 100755..100644 --- a/indra/llui/llmultifloater.h +++ b/indra/llui/llmultifloater.h diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index 0aa3e17075..0aa3e17075 100755..100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h index 2b422e89c9..2b422e89c9 100755..100644 --- a/indra/llui/llmultislider.h +++ b/indra/llui/llmultislider.h diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index c460a08afc..c460a08afc 100755..100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h index b6a3542376..b6a3542376 100755..100644 --- a/indra/llui/llmultisliderctrl.h +++ b/indra/llui/llmultisliderctrl.h diff --git a/indra/llui/llnotificationptr.h b/indra/llui/llnotificationptr.h index acc047527f..acc047527f 100755..100644 --- a/indra/llui/llnotificationptr.h +++ b/indra/llui/llnotificationptr.h diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index de14391d1f..77e7d375c8 100755..100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -678,7 +678,7 @@ void LLNotification::respond(const LLSD& response) // and then call it functor(asLLSD(), response); } - else + else if (mCombinedNotifications.empty()) { // no registered responder return; @@ -700,6 +700,14 @@ void LLNotification::respond(const LLSD& response) } } + for (std::vector<LLNotificationPtr>::const_iterator it = mCombinedNotifications.begin(); it != mCombinedNotifications.end(); ++it) + { + if ((*it)) + { + (*it)->respond(response); + } + } + update(); } @@ -1322,6 +1330,28 @@ bool LLNotifications::failedUniquenessTest(const LLSD& payload) } } break; + case LLNotification::COMBINE_WITH_NEW: + // Add to the existing unique notification with the data from this particular instance... + // This guarantees that duplicate notifications will be collapsed to the one + // most recently triggered + for (LLNotificationMap::iterator existing_it = mUniqueNotifications.find(pNotif->getName()); + existing_it != mUniqueNotifications.end(); + ++existing_it) + { + LLNotificationPtr existing_notification = existing_it->second; + if (pNotif != existing_notification + && pNotif->isEquivalentTo(existing_notification)) + { + // copy the notifications from the newest instance into the oldest + existing_notification->mCombinedNotifications.push_back(pNotif); + existing_notification->mCombinedNotifications.insert(existing_notification->mCombinedNotifications.end(), + pNotif->mCombinedNotifications.begin(), pNotif->mCombinedNotifications.end()); + + // pop up again + existing_notification->update(); + } + } + break; case LLNotification::KEEP_OLD: break; case LLNotification::CANCEL_OLD: @@ -1685,6 +1715,30 @@ void LLNotifications::cancelByName(const std::string& name) } } +void LLNotifications::cancelByOwner(const LLUUID ownerId) +{ + 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 && pNotif->getPayload().get("owner_id").asUUID() == ownerId) + { + 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 3cf432f330..010e6caba2 100755..100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -414,6 +414,9 @@ private: using the same mechanism. */ bool mTemporaryResponder; + + // keep track of other notifications combined with COMBINE_WITH_NEW + std::vector<LLNotificationPtr> mCombinedNotifications; void init(const std::string& template_name, const LLSD& form_elements); @@ -560,6 +563,7 @@ public: typedef enum e_combine_behavior { REPLACE_WITH_NEW, + COMBINE_WITH_NEW, KEEP_OLD, CANCEL_OLD @@ -920,6 +924,7 @@ public: void add(const LLNotificationPtr pNotif); void cancel(LLNotificationPtr pNotif); void cancelByName(const std::string& name); + void cancelByOwner(const LLUUID ownerId); void update(const LLNotificationPtr pNotif); LLNotificationPtr find(LLUUID uuid); diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp index cc791c26d1..cc791c26d1 100755..100644 --- a/indra/llui/llnotificationsutil.cpp +++ b/indra/llui/llnotificationsutil.cpp diff --git a/indra/llui/llnotificationsutil.h b/indra/llui/llnotificationsutil.h index 9f29087b4a..9f29087b4a 100755..100644 --- a/indra/llui/llnotificationsutil.h +++ b/indra/llui/llnotificationsutil.h diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h index 0315ddbea8..c23fc53763 100755..100644 --- a/indra/llui/llnotificationtemplate.h +++ b/indra/llui/llnotificationtemplate.h @@ -43,6 +43,7 @@ struct LLNotificationTemplate static void declareValues() { declare("replace_with_new", LLNotification::REPLACE_WITH_NEW); + declare("combine_with_new", LLNotification::COMBINE_WITH_NEW); declare("keep_old", LLNotification::KEEP_OLD); declare("cancel_old", LLNotification::CANCEL_OLD); } diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h index 78788a275c..78788a275c 100755..100644 --- a/indra/llui/llnotificationvisibilityrule.h +++ b/indra/llui/llnotificationvisibilityrule.h diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index ee90574161..ee90574161 100755..100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index c2185f24de..c2185f24de 100755..100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h diff --git a/indra/llui/llprogressbar.cpp b/indra/llui/llprogressbar.cpp index 209796565c..209796565c 100755..100644 --- a/indra/llui/llprogressbar.cpp +++ b/indra/llui/llprogressbar.cpp diff --git a/indra/llui/llprogressbar.h b/indra/llui/llprogressbar.h index a8ec83ea00..a8ec83ea00 100755..100644 --- a/indra/llui/llprogressbar.h +++ b/indra/llui/llprogressbar.h diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp index b53bb16d97..b53bb16d97 100755..100644 --- a/indra/llui/llradiogroup.cpp +++ b/indra/llui/llradiogroup.cpp diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h index 8bd5698538..8bd5698538 100755..100644 --- a/indra/llui/llradiogroup.h +++ b/indra/llui/llradiogroup.h diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp index 115c4e23be..115c4e23be 100755..100644 --- a/indra/llui/llresizebar.cpp +++ b/indra/llui/llresizebar.cpp diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h index 20a2406484..20a2406484 100755..100644 --- a/indra/llui/llresizebar.h +++ b/indra/llui/llresizebar.h diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index 24794305ac..24794305ac 100755..100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h index 7541b9e6c0..7541b9e6c0 100755..100644 --- a/indra/llui/llresizehandle.h +++ b/indra/llui/llresizehandle.h diff --git a/indra/llui/llresmgr.cpp b/indra/llui/llresmgr.cpp index 6e924c1f19..6e924c1f19 100755..100644 --- a/indra/llui/llresmgr.cpp +++ b/indra/llui/llresmgr.cpp diff --git a/indra/llui/llresmgr.h b/indra/llui/llresmgr.h index a652dcd2c0..a652dcd2c0 100755..100644 --- a/indra/llui/llresmgr.h +++ b/indra/llui/llresmgr.h diff --git a/indra/llui/llrngwriter.cpp b/indra/llui/llrngwriter.cpp index e4a31d6a79..e4a31d6a79 100755..100644 --- a/indra/llui/llrngwriter.cpp +++ b/indra/llui/llrngwriter.cpp diff --git a/indra/llui/llrngwriter.h b/indra/llui/llrngwriter.h index c33aa28613..c33aa28613 100755..100644 --- a/indra/llui/llrngwriter.h +++ b/indra/llui/llrngwriter.h diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp index 76134144a0..76134144a0 100755..100644 --- a/indra/llui/llscrollbar.cpp +++ b/indra/llui/llscrollbar.cpp diff --git a/indra/llui/llscrollbar.h b/indra/llui/llscrollbar.h index e2bf52c14b..e2bf52c14b 100755..100644 --- a/indra/llui/llscrollbar.h +++ b/indra/llui/llscrollbar.h diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index f70eebc594..f70eebc594 100755..100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h index f64cf43a8e..f64cf43a8e 100755..100644 --- a/indra/llui/llscrollcontainer.h +++ b/indra/llui/llscrollcontainer.h diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp index b6f2eb8ba2..b6f2eb8ba2 100755..100644 --- a/indra/llui/llscrollingpanellist.cpp +++ b/indra/llui/llscrollingpanellist.cpp diff --git a/indra/llui/llscrollingpanellist.h b/indra/llui/llscrollingpanellist.h index e8df176ec3..e8df176ec3 100755..100644 --- a/indra/llui/llscrollingpanellist.h +++ b/indra/llui/llscrollingpanellist.h diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp index 8000efad0e..8000efad0e 100755..100644 --- a/indra/llui/llscrolllistcell.cpp +++ b/indra/llui/llscrolllistcell.cpp diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h index d625ebddcc..d625ebddcc 100755..100644 --- a/indra/llui/llscrolllistcell.h +++ b/indra/llui/llscrolllistcell.h diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index cc9ff7a487..cc9ff7a487 100755..100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h index b4d4a6d05e..b4d4a6d05e 100755..100644 --- a/indra/llui/llscrolllistcolumn.h +++ b/indra/llui/llscrolllistcolumn.h diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index db8fdc46b7..db8fdc46b7 100755..100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 6325a79cd5..6325a79cd5 100755..100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp index df22c88afb..df22c88afb 100755..100644 --- a/indra/llui/llscrolllistitem.cpp +++ b/indra/llui/llscrolllistitem.cpp diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index 13655b5873..13655b5873 100755..100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h diff --git a/indra/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp index ea96fc573d..1fdd05a11c 100755..100644 --- a/indra/llui/llsearcheditor.cpp +++ b/indra/llui/llsearcheditor.cpp @@ -29,6 +29,7 @@ #include "linden_common.h" #include "llsearcheditor.h" +#include "llkeyboard.h" LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p) : LLUICtrl(p), @@ -166,4 +167,16 @@ void LLSearchEditor::handleKeystroke() { mKeystrokeCallback(this, getValue()); } + + KEY key = gKeyboard->currentKey(); + if (key == KEY_LEFT || + key == KEY_RIGHT) + { + return; + } + + if (mTextChangedCallback) + { + mTextChangedCallback(this, getValue()); + } } diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h index c2d7916938..3b12868225 100755..100644 --- a/indra/llui/llsearcheditor.h +++ b/indra/llui/llsearcheditor.h @@ -82,12 +82,14 @@ public: virtual void setFocus( BOOL b ); void setKeystrokeCallback( commit_callback_t cb ) { mKeystrokeCallback = cb; } + void setTextChangedCallback( commit_callback_t cb ) { mTextChangedCallback = cb; } protected: void onClearButtonClick(const LLSD& data); virtual void handleKeystroke(); commit_callback_t mKeystrokeCallback; + commit_callback_t mTextChangedCallback; LLLineEditor* mSearchEditor; LLButton* mSearchButton; LLButton* mClearButton; diff --git a/indra/llui/llslider.cpp b/indra/llui/llslider.cpp index ebbb951ee6..ebbb951ee6 100755..100644 --- a/indra/llui/llslider.cpp +++ b/indra/llui/llslider.cpp diff --git a/indra/llui/llslider.h b/indra/llui/llslider.h index 3b492d8182..3b492d8182 100755..100644 --- a/indra/llui/llslider.h +++ b/indra/llui/llslider.h diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp index 0056cb6dc4..0056cb6dc4 100755..100644 --- a/indra/llui/llsliderctrl.cpp +++ b/indra/llui/llsliderctrl.cpp diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h index 67cca9ef04..67cca9ef04 100755..100644 --- a/indra/llui/llsliderctrl.h +++ b/indra/llui/llsliderctrl.h diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp index 0db4281059..0db4281059 100755..100644 --- a/indra/llui/llspellcheck.cpp +++ b/indra/llui/llspellcheck.cpp diff --git a/indra/llui/llspellcheck.h b/indra/llui/llspellcheck.h index 4ab80195ea..4ab80195ea 100755..100644 --- a/indra/llui/llspellcheck.h +++ b/indra/llui/llspellcheck.h diff --git a/indra/llui/llspellcheckmenuhandler.h b/indra/llui/llspellcheckmenuhandler.h index d5c95bad39..d5c95bad39 100755..100644 --- a/indra/llui/llspellcheckmenuhandler.h +++ b/indra/llui/llspellcheckmenuhandler.h diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp index 8b1ba406c8..8b1ba406c8 100755..100644 --- a/indra/llui/llspinctrl.cpp +++ b/indra/llui/llspinctrl.cpp diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h index e34add879d..e34add879d 100755..100644 --- a/indra/llui/llspinctrl.h +++ b/indra/llui/llspinctrl.h diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp index 35f5330a3f..35f5330a3f 100755..100644 --- a/indra/llui/llstatbar.cpp +++ b/indra/llui/llstatbar.cpp diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h index 1ff4c67fc5..1ff4c67fc5 100755..100644 --- a/indra/llui/llstatbar.h +++ b/indra/llui/llstatbar.h diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp index 3fe314e77a..3fe314e77a 100755..100644 --- a/indra/llui/llstatgraph.cpp +++ b/indra/llui/llstatgraph.cpp diff --git a/indra/llui/llstatgraph.h b/indra/llui/llstatgraph.h index f381e92a4d..f381e92a4d 100755..100644 --- a/indra/llui/llstatgraph.h +++ b/indra/llui/llstatgraph.h diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp index eda2d6047f..eda2d6047f 100755..100644 --- a/indra/llui/llstatview.cpp +++ b/indra/llui/llstatview.cpp diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h index bc78d3b5fd..bc78d3b5fd 100755..100644 --- a/indra/llui/llstatview.h +++ b/indra/llui/llstatview.h diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp index bb731f4f7e..bb731f4f7e 100755..100644 --- a/indra/llui/llstyle.cpp +++ b/indra/llui/llstyle.cpp diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h index 9f1eba79d8..9f1eba79d8 100755..100644 --- a/indra/llui/llstyle.h +++ b/indra/llui/llstyle.h diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 6f858cdeb3..701a06a085 100755..100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1775,6 +1775,11 @@ void LLTabContainer::onNextBtn( const LLSD& data ) scrollNext(); } mScrolled = FALSE; + + if(mCurrentTabIdx < mTabList.size()-1) + { + selectNextTab(); + } } void LLTabContainer::onNextBtnHeld( const LLSD& data ) @@ -1783,6 +1788,11 @@ void LLTabContainer::onNextBtnHeld( const LLSD& data ) { mScrollTimer.reset(); scrollNext(); + + if(mCurrentTabIdx < mTabList.size()-1) + { + selectNextTab(); + } mScrolled = TRUE; } } @@ -1794,6 +1804,11 @@ void LLTabContainer::onPrevBtn( const LLSD& data ) scrollPrev(); } mScrolled = FALSE; + + if(mCurrentTabIdx > 0) + { + selectPrevTab(); + } } void LLTabContainer::onJumpFirstBtn( const LLSD& data ) @@ -1812,6 +1827,11 @@ void LLTabContainer::onPrevBtnHeld( const LLSD& data ) { mScrollTimer.reset(); scrollPrev(); + + if(mCurrentTabIdx > 0) + { + selectPrevTab(); + } mScrolled = TRUE; } } @@ -2094,3 +2114,8 @@ void LLTabContainer::commitHoveredButton(S32 x, S32 y) } } } + +S32 LLTabContainer::getTotalTabWidth() const +{ + return mTotalTabWidth; +} diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 57862fc626..057809dc42 100755..100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -182,7 +182,8 @@ public: LLPanel* getPanelByIndex(S32 index); S32 getIndexForPanel(LLPanel* panel); S32 getPanelIndexByTitle(const std::string& title); - LLPanel* getPanelByName(const std::string& name); + LLPanel* getPanelByName(const std::string& name); + S32 getTotalTabWidth() const; void setCurrentTabName(const std::string& name); void selectFirstTab(); @@ -287,7 +288,7 @@ private: S32 mMaxTabWidth; S32 mTotalTabWidth; - S32 mTabHeight; + S32 mTabHeight; // Padding under the text labels of tab buttons S32 mLabelPadBottom; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 602a703450..bf660849c4 100755..100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -37,6 +37,7 @@ #include "lltextparser.h" #include "lltextutil.h" #include "lltooltip.h" +#include "lltrans.h" #include "lluictrl.h" #include "llurlaction.h" #include "llurlregistry.h" @@ -2060,27 +2061,33 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para // add icon before url if need LLTextUtil::processUrlMatch(&match, this, isContentTrusted() || match.isTrusted()); + if ((isContentTrusted() || match.isTrusted()) && !match.getIcon().empty() ) + { + setLastSegmentToolTip(LLTrans::getString("TooltipSLIcon")); + } // output the styled Url appendAndHighlightTextImpl(match.getLabel(), part, link_params, match.underlineOnHoverOnly()); + bool tooltip_required = !match.getTooltip().empty(); + + // set the tooltip for the Url label + if (tooltip_required) + { + setLastSegmentToolTip(match.getTooltip()); + } - // show query part of url with gray color only for LLUrlEntryHTTP and LLUrlEntryHTTPNoProtocol url entries + // show query part of url with gray color only for LLUrlEntryHTTP url entries std::string label = match.getQuery(); if (label.size()) { link_params.color = LLColor4::grey; link_params.readonly_color = LLColor4::grey; appendAndHighlightTextImpl(label, part, link_params, match.underlineOnHoverOnly()); - } - - // set the tooltip for the Url label - if (! match.getTooltip().empty()) - { - segment_set_t::iterator it = getSegIterContaining(getLength()-1); - if (it != mSegments.end()) + + // set the tooltip for the query part of url + if (tooltip_required) { - LLTextSegmentPtr segment = *it; - segment->setToolTip(match.getTooltip()); + setLastSegmentToolTip(match.getTooltip()); } } @@ -2107,6 +2114,16 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para } } +void LLTextBase::setLastSegmentToolTip(const std::string &tooltip) +{ + segment_set_t::iterator it = getSegIterContaining(getLength()-1); + if (it != mSegments.end()) + { + LLTextSegmentPtr segment = *it; + segment->setToolTip(tooltip); + } +} + static LLTrace::BlockTimerStatHandle FTM_APPEND_TEXT("Append Text"); void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params) @@ -3557,6 +3574,22 @@ S32 LLImageTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin return 0; } +BOOL LLImageTextSegment::handleToolTip(S32 x, S32 y, MASK mask) +{ + if (!mTooltip.empty()) + { + LLToolTipMgr::instance().show(mTooltip); + return TRUE; + } + + return FALSE; +} + +void LLImageTextSegment::setToolTip(const std::string& tooltip) +{ + mTooltip = tooltip; +} + F32 LLImageTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect) { if ( (start >= 0) && (end <= mEnd - mStart)) diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index dfc10923f3..87809aa8fb 100755..100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -241,9 +241,15 @@ public: S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const; F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); + /*virtual*/ void setToolTip(const std::string& tooltip); + private: class LLTextBase& mEditor; LLStyleConstSP mStyle; + +protected: + std::string mTooltip; }; typedef LLPointer<LLTextSegment> LLTextSegmentPtr; @@ -392,6 +398,8 @@ public: const std::string& getLabel() { return mLabel.getString(); } const LLWString& getWlabel() { return mLabel.getWString();} + void setLastSegmentToolTip(const std::string &tooltip); + /** * If label is set, draws text label (which is LLLabelTextSegment) * that is visible when no user text provided diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp index d175204e6d..d175204e6d 100755..100644 --- a/indra/llui/lltextbox.cpp +++ b/indra/llui/lltextbox.cpp diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h index 071e18c638..071e18c638 100755..100644 --- a/indra/llui/lltextbox.h +++ b/indra/llui/lltextbox.h diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 926326aaff..926326aaff 100755..100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index f6bdf917b4..f6bdf917b4 100755..100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h diff --git a/indra/llui/lltextparser.cpp b/indra/llui/lltextparser.cpp index 0b36241da0..0b36241da0 100755..100644 --- a/indra/llui/lltextparser.cpp +++ b/indra/llui/lltextparser.cpp diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h index 400aeeb8be..400aeeb8be 100755..100644 --- a/indra/llui/lltextparser.h +++ b/indra/llui/lltextparser.h diff --git a/indra/llui/lltextutil.cpp b/indra/llui/lltextutil.cpp index fff04b34f2..fff04b34f2 100755..100644 --- a/indra/llui/lltextutil.cpp +++ b/indra/llui/lltextutil.cpp diff --git a/indra/llui/lltextutil.h b/indra/llui/lltextutil.h index 1be81ffd62..1be81ffd62 100755..100644 --- a/indra/llui/lltextutil.h +++ b/indra/llui/lltextutil.h diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp index 324ceb7fba..324ceb7fba 100755..100644 --- a/indra/llui/lltextvalidate.cpp +++ b/indra/llui/lltextvalidate.cpp diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h index 5c830d7db3..5c830d7db3 100755..100644 --- a/indra/llui/lltextvalidate.h +++ b/indra/llui/lltextvalidate.h diff --git a/indra/llui/lltimectrl.cpp b/indra/llui/lltimectrl.cpp index 516057f8fd..516057f8fd 100755..100644 --- a/indra/llui/lltimectrl.cpp +++ b/indra/llui/lltimectrl.cpp diff --git a/indra/llui/lltimectrl.h b/indra/llui/lltimectrl.h index b5f268c76a..b5f268c76a 100755..100644 --- a/indra/llui/lltimectrl.h +++ b/indra/llui/lltimectrl.h diff --git a/indra/llui/lltoggleablemenu.cpp b/indra/llui/lltoggleablemenu.cpp index ccb92ffbb2..ccb92ffbb2 100755..100644 --- a/indra/llui/lltoggleablemenu.cpp +++ b/indra/llui/lltoggleablemenu.cpp diff --git a/indra/llui/lltoggleablemenu.h b/indra/llui/lltoggleablemenu.h index 55a6483021..55a6483021 100755..100644 --- a/indra/llui/lltoggleablemenu.h +++ b/indra/llui/lltoggleablemenu.h diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index abc2b6e9ca..abc2b6e9ca 100755..100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index 370941c787..370941c787 100755..100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 7f2224870d..7f2224870d 100755..100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index fad127fc4c..fad127fc4c 100755..100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h diff --git a/indra/llui/lltrans.cpp b/indra/llui/lltrans.cpp index 4d4ff4236d..4d4ff4236d 100755..100644 --- a/indra/llui/lltrans.cpp +++ b/indra/llui/lltrans.cpp diff --git a/indra/llui/lltrans.h b/indra/llui/lltrans.h index a47ce94f08..a47ce94f08 100755..100644 --- a/indra/llui/lltrans.h +++ b/indra/llui/lltrans.h diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp index 220cee4c90..220cee4c90 100755..100644 --- a/indra/llui/lltransutil.cpp +++ b/indra/llui/lltransutil.cpp diff --git a/indra/llui/lltransutil.h b/indra/llui/lltransutil.h index 9c7cee3f6f..9c7cee3f6f 100755..100644 --- a/indra/llui/lltransutil.h +++ b/indra/llui/lltransutil.h diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index aabc7ed2e4..aabc7ed2e4 100755..100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp diff --git a/indra/llui/llui.h b/indra/llui/llui.h index c727f75c4f..c727f75c4f 100755..100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h diff --git a/indra/llui/lluicolor.cpp b/indra/llui/lluicolor.cpp index f9bb80f8c5..f9bb80f8c5 100755..100644 --- a/indra/llui/lluicolor.cpp +++ b/indra/llui/lluicolor.cpp diff --git a/indra/llui/lluicolor.h b/indra/llui/lluicolor.h index 97ebea854a..97ebea854a 100755..100644 --- a/indra/llui/lluicolor.h +++ b/indra/llui/lluicolor.h diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp index 244f0c6f00..244f0c6f00 100755..100644 --- a/indra/llui/lluicolortable.cpp +++ b/indra/llui/lluicolortable.cpp diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h index 6a7a681d57..6a7a681d57 100755..100644 --- a/indra/llui/lluicolortable.h +++ b/indra/llui/lluicolortable.h diff --git a/indra/llui/lluiconstants.h b/indra/llui/lluiconstants.h index 1479e58c43..1479e58c43 100755..100644 --- a/indra/llui/lluiconstants.h +++ b/indra/llui/lluiconstants.h diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index df74e113e9..df74e113e9 100755..100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 99553ee0d2..99553ee0d2 100755..100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index 4cc7da1267..4cc7da1267 100755..100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 3ce39c947f..3ce39c947f 100755..100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h diff --git a/indra/llui/lluifwd.h b/indra/llui/lluifwd.h index a68629a091..a68629a091 100755..100644 --- a/indra/llui/lluifwd.h +++ b/indra/llui/lluifwd.h diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp index 98d0c215e6..98d0c215e6 100755..100644 --- a/indra/llui/lluistring.cpp +++ b/indra/llui/lluistring.cpp diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h index 07e02de6d8..07e02de6d8 100755..100644 --- a/indra/llui/lluistring.h +++ b/indra/llui/lluistring.h diff --git a/indra/llui/llundo.cpp b/indra/llui/llundo.cpp index 7c4c183a30..7c4c183a30 100755..100644 --- a/indra/llui/llundo.cpp +++ b/indra/llui/llundo.cpp diff --git a/indra/llui/llundo.h b/indra/llui/llundo.h index a6da550126..a6da550126 100755..100644 --- a/indra/llui/llundo.h +++ b/indra/llui/llundo.h diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp index 12537d9dd1..12537d9dd1 100755..100644 --- a/indra/llui/llurlaction.cpp +++ b/indra/llui/llurlaction.cpp diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h index 5f3626490c..5f3626490c 100755..100644 --- a/indra/llui/llurlaction.h +++ b/indra/llui/llurlaction.h diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 5f60d80858..576fff5fb2 100755..100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -38,6 +38,7 @@ #include "lltrans.h" #include "lluicolortable.h" #include "message.h" +#include "llexperiencecache.h" #define APP_HEADER_REGEX "((x-grid-location-info://[-\\w\\.]+/app)|(secondlife:///app))" @@ -202,10 +203,10 @@ std::string LLUrlEntryBase::urlToGreyQuery(const std::string &url) const { LLUriParser up(unescapeUrl(url)); - std::string query; + std::string label; up.extractParts(); - up.glueSecond(query); - + up.glueFirst(label); + std::string query = url.substr(label.size()); return query; } @@ -228,7 +229,7 @@ static std::string getStringAfterToken(const std::string str, const std::string LLUrlEntryHTTP::LLUrlEntryHTTP() : LLUrlEntryBase() { - mPattern = boost::regex("https?://([-\\w\\.]+)+(:\\d+)?(:\\w+)?(@\\d+)?(@\\w+)?/?\\S*", + mPattern = boost::regex("https?://([-\\w\\.]+)+(:\\d+)?(:\\w+)?(@\\d+)?(@\\w+)?\\.[a-z](:\\d+)?(:\\w+)?(@\\d+)?(@\\w+)?/?\\S*", boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_http.xml"; mTooltip = LLTrans::getString("TooltipHttpUrl"); @@ -286,46 +287,6 @@ std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) const return getUrlFromWikiLink(string); } -// -// LLUrlEntryHTTPNoProtocol Describes generic Urls like www.google.com -// -LLUrlEntryHTTPNoProtocol::LLUrlEntryHTTPNoProtocol() - : LLUrlEntryBase() -{ - mPattern = boost::regex("(" - "\\bwww\\.\\S+\\.\\S+" // i.e. www.FOO.BAR - "|" // or - "(?<!@)\\b[^[:space:]:@/>]+\\.(?:com|net|edu|org)([/:][^[:space:]<]*)?\\b" // i.e. FOO.net - ")", - boost::regex::perl|boost::regex::icase); - mMenuName = "menu_url_http.xml"; - mTooltip = LLTrans::getString("TooltipHttpUrl"); -} - -std::string LLUrlEntryHTTPNoProtocol::getLabel(const std::string &url, const LLUrlLabelCallback &cb) -{ - return urlToLabelWithGreyQuery(url); -} - -std::string LLUrlEntryHTTPNoProtocol::getQuery(const std::string &url) const -{ - return urlToGreyQuery(url); -} - -std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const -{ - if (string.find("://") == std::string::npos) - { - return "http://" + escapeUrl(string); - } - return escapeUrl(string); -} - -std::string LLUrlEntryHTTPNoProtocol::getTooltip(const std::string &url) const -{ - return unescapeUrl(url); -} - LLUrlEntryInvalidSLURL::LLUrlEntryInvalidSLURL() : LLUrlEntryBase() { @@ -488,7 +449,10 @@ std::string LLUrlEntrySLURL::getLocation(const std::string &url) const // LLUrlEntrySecondlifeURL::LLUrlEntrySecondlifeURL() { - mPattern = boost::regex("(https?://)?([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(:\\d{1,5})?\\/\\S*", + mPattern = boost::regex("((http://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com)" + "|" + "(https://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(:\\d{1,5})?))" + "\\/\\S*", boost::regex::perl|boost::regex::icase); mIcon = "Hand"; @@ -526,7 +490,7 @@ std::string LLUrlEntrySecondlifeURL::getTooltip(const std::string &url) const // LLUrlEntrySimpleSecondlifeURL::LLUrlEntrySimpleSecondlifeURL() { - mPattern = boost::regex("(https?://)?([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(?!\\S)", + mPattern = boost::regex("https?://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(?!\\S)", boost::regex::perl|boost::regex::icase); mIcon = "Hand"; @@ -1399,3 +1363,91 @@ std::string LLUrlEntryIcon::getIcon(const std::string &url) LLStringUtil::trim(mIcon); return mIcon; } + +// +// LLUrlEntryEmail Describes a generic mailto: Urls +// +LLUrlEntryEmail::LLUrlEntryEmail() + : LLUrlEntryBase() +{ + mPattern = boost::regex("(mailto:)?[\\w\\.\\-]+@[\\w\\.\\-]+\\.[a-z]{2,6}", + boost::regex::perl | boost::regex::icase); + mMenuName = "menu_url_email.xml"; + mTooltip = LLTrans::getString("TooltipEmail"); +} + +std::string LLUrlEntryEmail::getLabel(const std::string &url, const LLUrlLabelCallback &cb) +{ + int pos = url.find("mailto:"); + + if (pos == std::string::npos) + { + return escapeUrl(url); + } + + std::string ret = escapeUrl(url.substr(pos + 7, url.length() - pos + 8)); + return ret; +} + +std::string LLUrlEntryEmail::getUrl(const std::string &string) const +{ + if (string.find("mailto:") == std::string::npos) + { + return "mailto:" + escapeUrl(string); + } + return escapeUrl(string); +} + +LLUrlEntryExperienceProfile::LLUrlEntryExperienceProfile() +{ + mPattern = boost::regex(APP_HEADER_REGEX "/experience/[\\da-f-]+/profile", + boost::regex::perl|boost::regex::icase); + mIcon = "Generic_Experience"; + mMenuName = "menu_url_experience.xml"; +} + +std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const LLUrlLabelCallback &cb ) +{ + if (!gCacheName) + { + // probably at the login screen, use short string for layout + return LLTrans::getString("LoadingData"); + } + + std::string experience_id_string = getIDStringFromUrl(url); + if (experience_id_string.empty()) + { + // something went wrong, just give raw url + return unescapeUrl(url); + } + + LLUUID experience_id(experience_id_string); + if (experience_id.isNull()) + { + return LLTrans::getString("ExperienceNameNull"); + } + + const LLSD& experience_details = LLExperienceCache::get(experience_id); + if(!experience_details.isUndefined()) + { + std::string experience_name_string = experience_details[LLExperienceCache::NAME].asString(); + return experience_name_string.empty() ? LLTrans::getString("ExperienceNameUntitled") : experience_name_string; + } + + addObserver(experience_id_string, url, cb); + LLExperienceCache::get(experience_id, boost::bind(&LLUrlEntryExperienceProfile::onExperienceDetails, this, _1)); + return LLTrans::getString("LoadingData"); + +} + +void LLUrlEntryExperienceProfile::onExperienceDetails( const LLSD& experience_details ) +{ + std::string name = experience_details[LLExperienceCache::NAME].asString(); + if(name.empty()) + { + name = LLTrans::getString("ExperienceNameUntitled"); + } + callObservers(experience_details[LLExperienceCache::EXPERIENCE_ID].asString(), name, LLStringUtil::null); +} + + diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index 60a494974f..413c20a657 100755..100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -157,19 +157,6 @@ public: /*virtual*/ std::string getUrl(const std::string &string) const; }; -/// -/// LLUrlEntryHTTPNoProtocol Describes generic Urls like www.google.com -/// -class LLUrlEntryHTTPNoProtocol : public LLUrlEntryBase -{ -public: - LLUrlEntryHTTPNoProtocol(); - /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); - /*virtual*/ std::string getQuery(const std::string &url) const; - /*virtual*/ std::string getUrl(const std::string &string) const; - /*virtual*/ std::string getTooltip(const std::string &url) const; -}; - class LLUrlEntryInvalidSLURL : public LLUrlEntryBase { public: @@ -309,6 +296,20 @@ private: }; /// +/// LLUrlEntryExperienceProfile Describes a Second Life experience profile Url, e.g., +/// secondlife:///app/experience/0e346d8b-4433-4d66-a6b0-fd37083abc4c/profile +/// that displays the experience name +class LLUrlEntryExperienceProfile : public LLUrlEntryBase +{ +public: + LLUrlEntryExperienceProfile(); + /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); +private: + void onExperienceDetails(const LLSD& experience_details); +}; + + +/// /// LLUrlEntryGroup Describes a Second Life group Url, e.g., /// secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about /// @@ -492,5 +493,16 @@ public: /*virtual*/ std::string getIcon(const std::string &url); }; +/// +/// LLUrlEntryEmail Describes a generic mailto: Urls +/// +class LLUrlEntryEmail : public LLUrlEntryBase +{ +public: + LLUrlEntryEmail(); + /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); + /*virtual*/ std::string getUrl(const std::string &string) const; +}; + #endif diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp index 2f2ac969e1..2f2ac969e1 100755..100644 --- a/indra/llui/llurlmatch.cpp +++ b/indra/llui/llurlmatch.cpp diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h index ff699902ca..ff699902ca 100755..100644 --- a/indra/llui/llurlmatch.h +++ b/indra/llui/llurlmatch.h diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index 1143574968..23c6d5a954 100755..100644 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -41,7 +41,8 @@ LLUrlRegistry::LLUrlRegistry() mUrlEntry.reserve(20); // Urls are matched in the order that they were registered - registerUrl(new LLUrlEntryNoLink()); + mUrlEntryNoLink = new LLUrlEntryNoLink(); + registerUrl(mUrlEntryNoLink); mUrlEntryIcon = new LLUrlEntryIcon(); registerUrl(mUrlEntryIcon); mLLUrlEntryInvalidSLURL = new LLUrlEntryInvalidSLURL(); @@ -70,14 +71,13 @@ LLUrlRegistry::LLUrlRegistry() registerUrl(new LLUrlEntryPlace()); registerUrl(new LLUrlEntryInventory()); registerUrl(new LLUrlEntryObjectIM()); + registerUrl(new LLUrlEntryExperienceProfile()); //LLUrlEntrySL and LLUrlEntrySLLabel have more common pattern, //so it should be registered in the end of list registerUrl(new LLUrlEntrySL()); mUrlEntrySLLabel = new LLUrlEntrySLLabel(); registerUrl(mUrlEntrySLLabel); - // most common pattern is a URL without any protocol, - // e.g., "secondlife.com" - registerUrl(new LLUrlEntryHTTPNoProtocol()); + registerUrl(new LLUrlEntryEmail()); } LLUrlRegistry::~LLUrlRegistry() @@ -154,11 +154,9 @@ static bool stringHasUrl(const std::string &text) return (text.find("://") != std::string::npos || text.find("www.") != std::string::npos || text.find(".com") != std::string::npos || - text.find(".net") != std::string::npos || - text.find(".edu") != std::string::npos || - text.find(".org") != std::string::npos || text.find("<nolink>") != std::string::npos || - text.find("<icon") != std::string::npos); + text.find("<icon") != std::string::npos || + text.find("@") != std::string::npos); } bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb, bool is_content_trusted) @@ -217,9 +215,40 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL // did we find a match? if so, return its details in the match object if (match_entry) { + // Skip if link is an email with an empty username (starting with @). See MAINT-5371. + if (match_start > 0 && text.substr(match_start - 1, 1) == "@") + return false; + // fill in the LLUrlMatch object and return it std::string url = text.substr(match_start, match_end - match_start + 1); + LLUrlEntryBase *stripped_entry = NULL; + if((match_entry != mUrlEntryNoLink) && (match_entry != mUrlEntryHTTPLabel) && (match_entry !=mUrlEntrySLLabel) + && LLStringUtil::containsNonprintable(url)) + { + LLStringUtil::stripNonprintable(url); + + std::vector<LLUrlEntryBase *>::iterator iter; + for (iter = mUrlEntry.begin(); iter != mUrlEntry.end(); ++iter) + { + LLUrlEntryBase *url_entry = *iter; + U32 start = 0, end = 0; + if (matchRegex(url.c_str(), url_entry->getPattern(), start, end)) + { + if (mLLUrlEntryInvalidSLURL == *iter) + { + if(url_entry && url_entry->isSLURLvalid(url)) + { + continue; + } + } + stripped_entry = url_entry; + break; + } + } + } + + if (match_entry == mUrlEntryTrusted) { LLUriParser up(url); @@ -227,10 +256,12 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL url = up.normalizedUri(); } + std::string url_label = stripped_entry? stripped_entry->getLabel(url, cb) : match_entry->getLabel(url, cb); + std::string url_query = stripped_entry? stripped_entry->getQuery(url) : match_entry->getQuery(url); match.setValues(match_start, match_end, match_entry->getUrl(url), - match_entry->getLabel(url, cb), - match_entry->getQuery(url), + url_label, + url_query, match_entry->getTooltip(url), match_entry->getIcon(url), match_entry->getStyle(), diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h index 5ce4048d5d..24c3a2b513 100755..100644 --- a/indra/llui/llurlregistry.h +++ b/indra/llui/llurlregistry.h @@ -98,6 +98,7 @@ private: LLUrlEntryBase* mLLUrlEntryInvalidSLURL; LLUrlEntryBase* mUrlEntryHTTPLabel; LLUrlEntryBase* mUrlEntrySLLabel; + LLUrlEntryBase* mUrlEntryNoLink; }; #endif diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index a8beb9cfc9..8f7cac1f61 100755..100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -866,6 +866,7 @@ BOOL LLView::handleToolTip(S32 x, S32 y, MASK mask) return handled; } + BOOL LLView::handleKey(KEY key, MASK mask, BOOL called_from_parent) { BOOL handled = FALSE; @@ -898,6 +899,38 @@ BOOL LLView::handleKey(KEY key, MASK mask, BOOL called_from_parent) return handled; } +BOOL LLView::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) +{ + BOOL handled = FALSE; + + if (getVisible() && getEnabled()) + { + if (called_from_parent) + { + // Downward traversal + handled = childrenHandleKeyUp(key, mask) != NULL; + } + + if (!handled) + { + // For event logging we don't care which widget handles it + // So we capture the key at the end of this function once we know if it was handled + handled = handleKeyUpHere(key, mask); + if (handled) + { + LL_DEBUGS() << "Key handled by " << getName() << LL_ENDL; + } + } + } + + if (!handled && !called_from_parent && mParentView) + { + // Upward traversal + handled = mParentView->handleKeyUp(key, mask, FALSE); + } + return handled; +} + // Called from handleKey() // Handles key in this object. Checking parents and children happens in handleKey() BOOL LLView::handleKeyHere(KEY key, MASK mask) @@ -905,6 +938,13 @@ BOOL LLView::handleKeyHere(KEY key, MASK mask) return FALSE; } +// Called from handleKey() +// Handles key in this object. Checking parents and children happens in handleKey() +BOOL LLView::handleKeyUpHere(KEY key, MASK mask) +{ + return FALSE; +} + BOOL LLView::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent) { BOOL handled = FALSE; @@ -1021,6 +1061,12 @@ LLView* LLView::childrenHandleKey(KEY key, MASK mask) } // Called during downward traversal +LLView* LLView::childrenHandleKeyUp(KEY key, MASK mask) +{ + return childrenHandleCharEvent("Key Up", &LLView::handleKeyUp, key, mask); +} + +// Called during downward traversal LLView* LLView::childrenHandleUnicodeChar(llwchar uni_char) { return childrenHandleCharEvent("Unicode character", &LLView::handleUnicodeCharWithDummyMask, diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 7861c8f729..8494bb338a 100755..100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -378,6 +378,7 @@ public: // inherited from LLFocusableElement /* virtual */ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + /* virtual */ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent); /* virtual */ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, @@ -509,6 +510,7 @@ public: //virtual BOOL addChildFromParam(const LLInitParam::BaseBlock& params) { return TRUE; } virtual BOOL handleKeyHere(KEY key, MASK mask); + virtual BOOL handleKeyUpHere(KEY key, MASK mask); virtual BOOL handleUnicodeCharHere(llwchar uni_char); virtual void handleReshape(const LLRect& rect, bool by_user); @@ -538,6 +540,7 @@ protected: void logMouseEvent(); LLView* childrenHandleKey(KEY key, MASK mask); + LLView* childrenHandleKeyUp(KEY key, MASK mask); LLView* childrenHandleUnicodeChar(llwchar uni_char); LLView* childrenHandleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, diff --git a/indra/llui/llviewborder.cpp b/indra/llui/llviewborder.cpp index 919267dcc6..919267dcc6 100755..100644 --- a/indra/llui/llviewborder.cpp +++ b/indra/llui/llviewborder.cpp diff --git a/indra/llui/llviewborder.h b/indra/llui/llviewborder.h index 413ce39744..413ce39744 100755..100644 --- a/indra/llui/llviewborder.h +++ b/indra/llui/llviewborder.h diff --git a/indra/llui/llviewinject.cpp b/indra/llui/llviewinject.cpp index 46c5839f8e..46c5839f8e 100755..100644 --- a/indra/llui/llviewinject.cpp +++ b/indra/llui/llviewinject.cpp diff --git a/indra/llui/llviewinject.h b/indra/llui/llviewinject.h index 0de3d155c4..0de3d155c4 100755..100644 --- a/indra/llui/llviewinject.h +++ b/indra/llui/llviewinject.h diff --git a/indra/llui/llviewmodel.cpp b/indra/llui/llviewmodel.cpp index 282addf692..282addf692 100755..100644 --- a/indra/llui/llviewmodel.cpp +++ b/indra/llui/llviewmodel.cpp diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h index 49d7c322a3..49d7c322a3 100755..100644 --- a/indra/llui/llviewmodel.h +++ b/indra/llui/llviewmodel.h diff --git a/indra/llui/llviewquery.cpp b/indra/llui/llviewquery.cpp index 66262609ae..66262609ae 100755..100644 --- a/indra/llui/llviewquery.cpp +++ b/indra/llui/llviewquery.cpp diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h index 9044c4ff29..9044c4ff29 100755..100644 --- a/indra/llui/llviewquery.h +++ b/indra/llui/llviewquery.h diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp index f5c463c961..f5c463c961 100755..100644 --- a/indra/llui/llwindowshade.cpp +++ b/indra/llui/llwindowshade.cpp diff --git a/indra/llui/llwindowshade.h b/indra/llui/llwindowshade.h index 6d753d1161..6d753d1161 100755..100644 --- a/indra/llui/llwindowshade.h +++ b/indra/llui/llwindowshade.h diff --git a/indra/llui/llxuiparser.cpp b/indra/llui/llxuiparser.cpp index 99a0869ce3..99a0869ce3 100755..100644 --- a/indra/llui/llxuiparser.cpp +++ b/indra/llui/llxuiparser.cpp diff --git a/indra/llui/llxuiparser.h b/indra/llui/llxuiparser.h index ad2a39cab7..ad2a39cab7 100755..100644 --- a/indra/llui/llxuiparser.h +++ b/indra/llui/llxuiparser.h diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp index 5d3f9ac327..5d3f9ac327 100755..100644 --- a/indra/llui/tests/llurlentry_stub.cpp +++ b/indra/llui/tests/llurlentry_stub.cpp diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index c3f0e92cb0..dde54c78c4 100755..100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -32,9 +32,23 @@ #include "lltut.h" #include "../lluicolortable.h" #include "../llrender/lluiimage.h" +#include "../llmessage/llexperiencecache.h" #include <boost/regex.hpp> + +namespace LLExperienceCache +{ + const LLSD& get( const LLUUID& key) + { + static LLSD boo; + return boo; + } + + void get( const LLUUID& key, callback_slot_t slot ){} + +} + typedef std::map<std::string, LLControlGroup*> settings_map_t; settings_map_t LLUI::sSettingGroups; @@ -639,79 +653,6 @@ namespace tut void object::test<11>() { // - // test LLUrlEntryHTTPNoProtocol - general URLs without a protocol - // - LLUrlEntryHTTPNoProtocol url; - - testRegex("naked .com URL", url, - "see google.com", - "http://google.com"); - - testRegex("naked .org URL", url, - "see en.wikipedia.org for details", - "http://en.wikipedia.org"); - - testRegex("naked .net URL", url, - "example.net", - "http://example.net"); - - testRegex("naked .edu URL (2 instances)", url, - "MIT web site is at web.mit.edu and also www.mit.edu", - "http://web.mit.edu"); - - testRegex("don't match e-mail addresses", url, - "test@lindenlab.com", - ""); - - testRegex(".com URL with path", url, - "see secondlife.com/status for grid status", - "http://secondlife.com/status"); - - testRegex(".com URL with port", url, - "secondlife.com:80", - "http://secondlife.com:80"); - - testRegex(".com URL with port and path", url, - "see secondlife.com:80/status", - "http://secondlife.com:80/status"); - - testRegex("www.*.com URL with port and path", url, - "see www.secondlife.com:80/status", - "http://www.secondlife.com:80/status"); - - testRegex("invalid .com URL [1]", url, - "..com", - ""); - - testRegex("invalid .com URL [2]", url, - "you.come", - ""); - - testRegex("invalid .com URL [3]", url, - "recommended", - ""); - - testRegex("invalid .edu URL", url, - "hi there scheduled maitenance has begun", - ""); - - testRegex("invalid .net URL", url, - "foo.netty", - ""); - - testRegex("XML tags around URL [1]", url, - "<foo>secondlife.com</foo>", - "http://secondlife.com"); - - testRegex("XML tags around URL [2]", url, - "<foo>secondlife.com/status?bar=1</foo>", - "http://secondlife.com/status?bar=1"); - } - - template<> template<> - void object::test<12>() - { - // // test LLUrlEntryNoLink - turn off hyperlinking // LLUrlEntryNoLink url; @@ -738,7 +679,7 @@ namespace tut } template<> template<> - void object::test<13>() + void object::test<12>() { // // test LLUrlEntryRegion - secondlife:///app/region/<location> URLs @@ -846,4 +787,105 @@ namespace tut "secondlife:///app/region/Product%20Engine", "Product Engine"); } + + template<> template<> + void object::test<13>() + { + // + // test LLUrlEntryemail - general emails + // + LLUrlEntryEmail url; + + // Regex tests. + testRegex("match e-mail addresses", url, + "test@lindenlab.com", + "mailto:test@lindenlab.com"); + + testRegex("match e-mail addresses with mailto: prefix", url, + "mailto:test@lindenlab.com", + "mailto:test@lindenlab.com"); + + testRegex("match e-mail addresses with different domains", url, + "test@foo.org.us", + "mailto:test@foo.org.us"); + + testRegex("match e-mail addresses with different domains", url, + "test@foo.bar", + "mailto:test@foo.bar"); + + testRegex("don't match incorrect e-mail addresses", url, + "test @foo.com", + ""); + + testRegex("don't match incorrect e-mail addresses", url, + "test@ foo.com", + ""); + } + + template<> template<> + void object::test<14>() + { + // + // test LLUrlEntrySimpleSecondlifeURL - http://*.secondlife.com/* and http://*lindenlab.com/* urls + // + LLUrlEntrySecondlifeURL url; + + testRegex("match urls with protocol", url, + "this url should match http://lindenlab.com/products/second-life", + "http://lindenlab.com/products/second-life"); + + testRegex("match urls with protocol", url, + "search something https://marketplace.secondlife.com/products/search on marketplace and test the https", + "https://marketplace.secondlife.com/products/search"); + + testRegex("match HTTPS urls with port", url, + "let's specify some port https://secondlife.com:888/status", + "https://secondlife.com:888/status"); + + testRegex("don't match HTTP urls with port", url, + "let's specify some port for HTTP http://secondlife.com:888/status", + ""); + + testRegex("don't match urls w/o protocol", url, + "looks like an url something www.marketplace.secondlife.com/products but no https prefix", + ""); + + testRegex("but with a protocol www is fine", url, + "so let's add a protocol https://www.marketplace.secondlife.com:8888/products", + "https://www.marketplace.secondlife.com:8888/products"); + + testRegex("don't match urls w/o protocol", url, + "and even no www something secondlife.com/status", + ""); + } + + template<> template<> + void object::test<15>() + { + // + // test LLUrlEntrySimpleSecondlifeURL - http://*.secondlife.com and http://*lindenlab.com urls + // + + LLUrlEntrySimpleSecondlifeURL url; + + testRegex("match urls with a protocol", url, + "this url should match http://lindenlab.com", + "http://lindenlab.com"); + + testRegex("match urls with a protocol", url, + "search something https://marketplace.secondlife.com on marketplace and test the https", + "https://marketplace.secondlife.com"); + + testRegex("don't match urls w/o protocol", url, + "looks like an url something www.marketplace.secondlife.com but no https prefix", + ""); + + testRegex("but with a protocol www is fine", url, + "so let's add a protocol http://www.marketplace.secondlife.com", + "http://www.marketplace.secondlife.com"); + + testRegex("don't match urls w/o protocol", url, + "and even no www something lindenlab.com", + ""); + } } diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp index 843886eb69..843886eb69 100755..100644 --- a/indra/llui/tests/llurlmatch_test.cpp +++ b/indra/llui/tests/llurlmatch_test.cpp diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt index 67dce8c073..67dce8c073 100755..100644 --- a/indra/llvfs/CMakeLists.txt +++ b/indra/llvfs/CMakeLists.txt diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 5f4fb8f4a0..5f4fb8f4a0 100755..100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index b219c6e29f..b219c6e29f 100755..100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index 7a4034c228..7a4034c228 100755..100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h index e83a020ba4..e83a020ba4 100755..100644 --- a/indra/llvfs/lldir_linux.h +++ b/indra/llvfs/lldir_linux.h diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp index 4038c92465..4038c92465 100755..100644 --- a/indra/llvfs/lldir_mac.cpp +++ b/indra/llvfs/lldir_mac.cpp diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h index 558727ebbc..558727ebbc 100755..100644 --- a/indra/llvfs/lldir_mac.h +++ b/indra/llvfs/lldir_mac.h diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp index b43b2f27ce..b43b2f27ce 100755..100644 --- a/indra/llvfs/lldir_solaris.cpp +++ b/indra/llvfs/lldir_solaris.cpp diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h index c6dac57e14..c6dac57e14 100755..100644 --- a/indra/llvfs/lldir_solaris.h +++ b/indra/llvfs/lldir_solaris.h diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp index ebc8fdca33..ebc8fdca33 100755..100644 --- a/indra/llvfs/lldir_win32.cpp +++ b/indra/llvfs/lldir_win32.cpp diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h index 450efaf9da..450efaf9da 100755..100644 --- a/indra/llvfs/lldir_win32.h +++ b/indra/llvfs/lldir_win32.h diff --git a/indra/llvfs/lldirguard.h b/indra/llvfs/lldirguard.h index 37b9e9b83e..37b9e9b83e 100755..100644 --- a/indra/llvfs/lldirguard.h +++ b/indra/llvfs/lldirguard.h diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp index 76296ff877..76296ff877 100755..100644 --- a/indra/llvfs/lldiriterator.cpp +++ b/indra/llvfs/lldiriterator.cpp diff --git a/indra/llvfs/lldiriterator.h b/indra/llvfs/lldiriterator.h index 0b48be41b3..0b48be41b3 100755..100644 --- a/indra/llvfs/lldiriterator.h +++ b/indra/llvfs/lldiriterator.h diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp index 2fd2614cce..2fd2614cce 100755..100644 --- a/indra/llvfs/lllfsthread.cpp +++ b/indra/llvfs/lllfsthread.cpp diff --git a/indra/llvfs/lllfsthread.h b/indra/llvfs/lllfsthread.h index cdb5c75946..cdb5c75946 100755..100644 --- a/indra/llvfs/lllfsthread.h +++ b/indra/llvfs/lllfsthread.h diff --git a/indra/llvfs/llvfile.cpp b/indra/llvfs/llvfile.cpp index b8588e99f4..b8588e99f4 100755..100644 --- a/indra/llvfs/llvfile.cpp +++ b/indra/llvfs/llvfile.cpp diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h index 7e9d9f73e5..7e9d9f73e5 100755..100644 --- a/indra/llvfs/llvfile.h +++ b/indra/llvfs/llvfile.h diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 1cc0e819db..1cc0e819db 100755..100644 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp diff --git a/indra/llvfs/llvfs.h b/indra/llvfs/llvfs.h index 39f31a221b..39f31a221b 100755..100644 --- a/indra/llvfs/llvfs.h +++ b/indra/llvfs/llvfs.h diff --git a/indra/llvfs/llvfs_objc.h b/indra/llvfs/llvfs_objc.h index 56cdbebfc5..56cdbebfc5 100755..100644 --- a/indra/llvfs/llvfs_objc.h +++ b/indra/llvfs/llvfs_objc.h diff --git a/indra/llvfs/llvfs_objc.mm b/indra/llvfs/llvfs_objc.mm index 282ea41339..282ea41339 100755..100644 --- a/indra/llvfs/llvfs_objc.mm +++ b/indra/llvfs/llvfs_objc.mm diff --git a/indra/llvfs/llvfsthread.cpp b/indra/llvfs/llvfsthread.cpp index 8cd85929e2..8cd85929e2 100755..100644 --- a/indra/llvfs/llvfsthread.cpp +++ b/indra/llvfs/llvfsthread.cpp diff --git a/indra/llvfs/llvfsthread.h b/indra/llvfs/llvfsthread.h index 95f3c857c6..95f3c857c6 100755..100644 --- a/indra/llvfs/llvfsthread.h +++ b/indra/llvfs/llvfsthread.h diff --git a/indra/llvfs/tests/lldir_test.cpp b/indra/llvfs/tests/lldir_test.cpp index 3cff622a4b..3cff622a4b 100755..100644 --- a/indra/llvfs/tests/lldir_test.cpp +++ b/indra/llvfs/tests/lldir_test.cpp diff --git a/indra/llvfs/tests/lldiriterator_test.cpp b/indra/llvfs/tests/lldiriterator_test.cpp index a65e3dada5..a65e3dada5 100755..100644 --- a/indra/llvfs/tests/lldiriterator_test.cpp +++ b/indra/llvfs/tests/lldiriterator_test.cpp diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index 0743fd899f..0743fd899f 100755..100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt diff --git a/indra/llwindow/GL/glh_extensions.h b/indra/llwindow/GL/glh_extensions.h index 554cb1731f..554cb1731f 100755..100644 --- a/indra/llwindow/GL/glh_extensions.h +++ b/indra/llwindow/GL/glh_extensions.h diff --git a/indra/llwindow/GL/glh_genext.h b/indra/llwindow/GL/glh_genext.h index cd5d1604a8..cd5d1604a8 100755..100644 --- a/indra/llwindow/GL/glh_genext.h +++ b/indra/llwindow/GL/glh_genext.h diff --git a/indra/llwindow/llcursortypes.cpp b/indra/llwindow/llcursortypes.cpp index ec60097195..ec60097195 100755..100644 --- a/indra/llwindow/llcursortypes.cpp +++ b/indra/llwindow/llcursortypes.cpp diff --git a/indra/llwindow/llcursortypes.h b/indra/llwindow/llcursortypes.h index cb6d6636a0..cb6d6636a0 100755..100644 --- a/indra/llwindow/llcursortypes.h +++ b/indra/llwindow/llcursortypes.h diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index d00d9ab47e..d00d9ab47e 100755..100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h index 4673242cba..4673242cba 100755..100644 --- a/indra/llwindow/lldragdropwin32.h +++ b/indra/llwindow/lldragdropwin32.h diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index e7afef63f8..e7afef63f8 100755..100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp diff --git a/indra/llwindow/lldxhardware.h b/indra/llwindow/lldxhardware.h index 61a32bf0fb..61a32bf0fb 100755..100644 --- a/indra/llwindow/lldxhardware.h +++ b/indra/llwindow/lldxhardware.h diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp index f6f6c3931c..f6f6c3931c 100755..100644 --- a/indra/llwindow/llkeyboard.cpp +++ b/indra/llwindow/llkeyboard.cpp diff --git a/indra/llwindow/llkeyboard.h b/indra/llwindow/llkeyboard.h index 6f2dc87317..6f2dc87317 100755..100644 --- a/indra/llwindow/llkeyboard.h +++ b/indra/llwindow/llkeyboard.h diff --git a/indra/llwindow/llkeyboardheadless.cpp b/indra/llwindow/llkeyboardheadless.cpp index a1b6b294e0..a1b6b294e0 100755..100644 --- a/indra/llwindow/llkeyboardheadless.cpp +++ b/indra/llwindow/llkeyboardheadless.cpp diff --git a/indra/llwindow/llkeyboardheadless.h b/indra/llwindow/llkeyboardheadless.h index 8ed28ace90..8ed28ace90 100755..100644 --- a/indra/llwindow/llkeyboardheadless.h +++ b/indra/llwindow/llkeyboardheadless.h diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp index 85bb7b9aeb..85bb7b9aeb 100755..100644 --- a/indra/llwindow/llkeyboardmacosx.cpp +++ b/indra/llwindow/llkeyboardmacosx.cpp diff --git a/indra/llwindow/llkeyboardmacosx.h b/indra/llwindow/llkeyboardmacosx.h index f9d014ab70..f9d014ab70 100755..100644 --- a/indra/llwindow/llkeyboardmacosx.h +++ b/indra/llwindow/llkeyboardmacosx.h diff --git a/indra/llwindow/llkeyboardsdl.cpp b/indra/llwindow/llkeyboardsdl.cpp index 7c9aa1d340..7c9aa1d340 100755..100644 --- a/indra/llwindow/llkeyboardsdl.cpp +++ b/indra/llwindow/llkeyboardsdl.cpp diff --git a/indra/llwindow/llkeyboardsdl.h b/indra/llwindow/llkeyboardsdl.h index 02a71425f1..02a71425f1 100755..100644 --- a/indra/llwindow/llkeyboardsdl.h +++ b/indra/llwindow/llkeyboardsdl.h diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp index dc40dcdde0..2123ed3939 100755..100644 --- a/indra/llwindow/llkeyboardwin32.cpp +++ b/indra/llwindow/llkeyboardwin32.cpp @@ -258,7 +258,7 @@ void LLKeyboardWin32::scanKeyboard() // *TODO: I KNOW there must be a better way of // interrogating the key state than this, using async key // state can cause ALL kinds of bugs - Doug - if (key < KEY_BUTTON0) + if ((key < KEY_BUTTON0) && ((key < '0') || (key > '9'))) { // ...under windows make sure the key actually still is down. // ...translate back to windows key @@ -267,7 +267,7 @@ void LLKeyboardWin32::scanKeyboard() if (!pending_key_events && !(GetAsyncKeyState(virtual_key) & 0x8000)) { //LL_INFOS() << "Key up event missed, resetting" << LL_ENDL; - mKeyLevel[key] = FALSE; + mKeyLevel[key] = FALSE; } } } diff --git a/indra/llwindow/llkeyboardwin32.h b/indra/llwindow/llkeyboardwin32.h index b7da450164..b7da450164 100755..100644 --- a/indra/llwindow/llkeyboardwin32.h +++ b/indra/llwindow/llkeyboardwin32.h diff --git a/indra/llwindow/llmousehandler.cpp b/indra/llwindow/llmousehandler.cpp index bea66e763c..bea66e763c 100755..100644 --- a/indra/llwindow/llmousehandler.cpp +++ b/indra/llwindow/llmousehandler.cpp diff --git a/indra/llwindow/llmousehandler.h b/indra/llwindow/llmousehandler.h index d825a3424c..d825a3424c 100755..100644 --- a/indra/llwindow/llmousehandler.h +++ b/indra/llwindow/llmousehandler.h diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 1c9160a42d..406bc9cf47 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -28,6 +28,11 @@ #include "llwindowmacosx-objc.h" #import "llappdelegate-objc.h" + + + +//--------------------------- + @implementation NSScreen (PointConversion) + (NSScreen *)currentScreenForMouseLocation @@ -42,6 +47,7 @@ return screen; } + - (NSPoint)convertPointToScreenCoordinates:(NSPoint)aPoint { float normalizedX = fabs(fabs(self.frame.origin.x) - fabs(aPoint.x)); @@ -57,6 +63,21 @@ @end +void extractKeyDataFromEvent (NSEvent *theEvent, NativeKeyEventData * eventData) +{ + eventData->mKeyEvent = NativeKeyEventData::KEYUNKNOWN; + eventData->mEventType = [theEvent type]; + eventData->mEventModifiers = [theEvent modifierFlags]; + eventData->mEventKeyCode = [theEvent keyCode]; + NSString *strEventChars = [theEvent characters]; + eventData->mEventChars = (strEventChars.length) ? [strEventChars characterAtIndex:0] : 0; + NSString *strEventUChars = [theEvent charactersIgnoringModifiers]; + eventData->mEventUnmodChars = (strEventUChars.length) ? [strEventUChars characterAtIndex:0] : 0; + eventData->mEventRepeat = [theEvent isARepeat]; + +} + + attributedStringInfo getSegments(NSAttributedString *str) { attributedStringInfo segments; @@ -239,7 +260,11 @@ attributedStringInfo getSegments(NSAttributedString *str) { [glContext setValues:(const GLint*)1 forParameter:NSOpenGLCPSwapInterval]; } else { - [glContext setValues:(const GLint*)0 forParameter:NSOpenGLCPSwapInterval]; + // supress this error after move to Xcode 7: + // error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] + // Tried using ObjC 'nonnull' keyword as per SO article but didn't build + GLint swapInterval=0; + [glContext setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval]; } mOldResize = false; @@ -398,11 +423,20 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void) keyUp:(NSEvent *)theEvent { - callKeyUp([theEvent keyCode], [theEvent modifierFlags]); + NativeKeyEventData eventData; + + extractKeyDataFromEvent( theEvent, &eventData ); + eventData.mKeyEvent = NativeKeyEventData::KEYUP; + callKeyUp(&eventData, [theEvent keyCode], [theEvent modifierFlags]); } - (void) keyDown:(NSEvent *)theEvent { + NativeKeyEventData eventData; + + extractKeyDataFromEvent( theEvent, &eventData ); + eventData.mKeyEvent = NativeKeyEventData::KEYDOWN; + uint keycode = [theEvent keyCode]; // We must not depend on flagsChange event to detect modifier flags changed, // must depend on the modifire flags in the event parameter. @@ -410,7 +444,7 @@ attributedStringInfo getSegments(NSAttributedString *str) // e.g. OS Window for upload something or Input Window... // mModifiers instance variable is for insertText: or insertText:replacementRange: (by Pell Smit) mModifiers = [theEvent modifierFlags]; - bool acceptsText = mHasMarkedText ? false : callKeyDown(keycode, mModifiers); + bool acceptsText = mHasMarkedText ? false : callKeyDown(&eventData, keycode, mModifiers); unichar ch; if (acceptsText && !mMarkedTextAllowed && @@ -431,12 +465,17 @@ attributedStringInfo getSegments(NSAttributedString *str) // Since SL assumes we receive those, we fake it here. if (mModifiers & NSCommandKeyMask && !mHasMarkedText) { - callKeyUp([theEvent keyCode], mModifiers); + eventData.mKeyEvent = NativeKeyEventData::KEYUP; + callKeyUp(&eventData, [theEvent keyCode], mModifiers); } } - (void)flagsChanged:(NSEvent *)theEvent { + NativeKeyEventData eventData; + + extractKeyDataFromEvent( theEvent, &eventData ); + mModifiers = [theEvent modifierFlags]; callModifier([theEvent modifierFlags]); @@ -458,11 +497,13 @@ attributedStringInfo getSegments(NSAttributedString *str) if (mModifiers & mask) { - callKeyDown([theEvent keyCode], 0); + eventData.mKeyEvent = NativeKeyEventData::KEYDOWN; + callKeyDown(&eventData, [theEvent keyCode], 0); } else { - callKeyUp([theEvent keyCode], 0); + eventData.mKeyEvent = NativeKeyEventData::KEYUP; + callKeyUp(&eventData, [theEvent keyCode], 0); } } diff --git a/indra/llwindow/llpreeditor.h b/indra/llwindow/llpreeditor.h index 9802fd8606..9802fd8606 100755..100644 --- a/indra/llwindow/llpreeditor.h +++ b/indra/llwindow/llpreeditor.h diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp index 5720660034..1b24250618 100755..100644 --- a/indra/llwindow/llwindow.cpp +++ b/indra/llwindow/llwindow.cpp @@ -49,8 +49,8 @@ LLSplashScreen *gSplashScreenp = NULL; BOOL gDebugClicks = FALSE; BOOL gDebugWindowProc = FALSE; -const S32 gURLProtocolWhitelistCount = 4; -const std::string gURLProtocolWhitelist[] = { "secondlife:", "http:", "https:", "data:" }; +const S32 gURLProtocolWhitelistCount = 5; +const std::string gURLProtocolWhitelist[] = { "secondlife:", "http:", "https:", "data:", "mailto:" }; // CP: added a handler list - this is what's used to open the protocol and is based on registry entry // only meaningful difference currently is that file: protocols are opened using http: diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 0a30f4c807..0a30f4c807 100755..100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index eadff8a6b4..eadff8a6b4 100755..100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 7da5959700..7da5959700 100755..100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h diff --git a/indra/llwindow/llwindowheadless.cpp b/indra/llwindow/llwindowheadless.cpp index 70f473281b..70f473281b 100755..100644 --- a/indra/llwindow/llwindowheadless.cpp +++ b/indra/llwindow/llwindowheadless.cpp diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h index c692666df1..c692666df1 100755..100644 --- a/indra/llwindow/llwindowheadless.h +++ b/indra/llwindow/llwindowheadless.h diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index f02052ca6a..dc184b91fb 100755..100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -46,6 +46,26 @@ typedef void *CursorRef; typedef void *NSWindowRef; typedef void *GLViewRef; + +struct NativeKeyEventData { + enum EventType { + KEYUNKNOWN, + KEYUP, + KEYDOWN, + KEYCHAR + }; + + EventType mKeyEvent; + uint32_t mEventType; + uint32_t mEventModifiers; + uint32_t mEventKeyCode; + uint32_t mEventChars; + uint32_t mEventUnmodChars; + bool mEventRepeat; +}; + +typedef const NativeKeyEventData * NSKeyEventRef; + // These are defined in llappviewermacosx.cpp. bool initViewer(); void handleQuit(); @@ -53,6 +73,7 @@ bool runMainLoop(); void initMainLoop(); void cleanupViewer(); void handleUrl(const char* url); +void dispatchUrl(std::string url); /* Defined in llwindowmacosx-objc.mm: */ int createNSApp(int argc, const char **argv); @@ -101,8 +122,8 @@ void setupInputWindow(NSWindowRef window, GLViewRef view); // These are all implemented in llwindowmacosx.cpp. // This is largely for easier interop between Obj-C and C++ (at least in the viewer's case due to the BOOL vs. BOOL conflict) -bool callKeyUp(unsigned short key, unsigned int mask); -bool callKeyDown(unsigned short key, unsigned int mask); +bool callKeyUp(NSKeyEventRef event, unsigned short key, unsigned int mask); +bool callKeyDown(NSKeyEventRef event, unsigned short key, unsigned int mask); void callResetKeys(); bool callUnicodeCallback(wchar_t character, unsigned int mask); void callRightMouseDown(float *pos, unsigned int mask); diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index 1a21bf8430..1a21bf8430 100755..100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 15e054fb5d..0d41884462 100755..100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -47,6 +47,10 @@ extern BOOL gDebugWindowProc; const S32 BITS_PER_PIXEL = 32; const S32 MAX_NUM_RESOLUTIONS = 32; +namespace +{ + NSKeyEventRef mRawKeyEvent = NULL; +} // // LLWindowMacOSX // @@ -194,14 +198,20 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks, // These functions are used as wrappers for our internal event handling callbacks. // It's a good idea to wrap these to avoid reworking more code than we need to within LLWindow. -bool callKeyUp(unsigned short key, unsigned int mask) +bool callKeyUp(NSKeyEventRef event, unsigned short key, unsigned int mask) { - return gKeyboard->handleKeyUp(key, mask); + mRawKeyEvent = event; + bool retVal = gKeyboard->handleKeyUp(key, mask); + mRawKeyEvent = NULL; + return retVal; } -bool callKeyDown(unsigned short key, unsigned int mask) +bool callKeyDown(NSKeyEventRef event, unsigned short key, unsigned int mask) { - return gKeyboard->handleKeyDown(key, mask); + mRawKeyEvent = event; + bool retVal = gKeyboard->handleKeyDown(key, mask); + mRawKeyEvent = NULL; + return retVal; } void callResetKeys() @@ -211,7 +221,23 @@ void callResetKeys() bool callUnicodeCallback(wchar_t character, unsigned int mask) { - return gWindowImplementation->getCallbacks()->handleUnicodeChar(character, mask); + NativeKeyEventData eventData; + + memset(&eventData, 0, sizeof(NativeKeyEventData)); + + eventData.mKeyEvent = NativeKeyEventData::KEYCHAR; + eventData.mEventType = 0; + eventData.mEventModifiers = mask; + eventData.mEventKeyCode = 0; + eventData.mEventChars = character; + eventData.mEventUnmodChars = character; + eventData.mEventRepeat = false; + + mRawKeyEvent = &eventData; + + bool result = gWindowImplementation->getCallbacks()->handleUnicodeChar(character, mask); + mRawKeyEvent = NULL; + return result; } void callFocus() @@ -1713,49 +1739,15 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url, bool async) LLSD LLWindowMacOSX::getNativeKeyData() { LLSD result = LLSD::emptyMap(); -#if 0 +#if 1 if(mRawKeyEvent) { - char char_code = 0; - UInt32 key_code = 0; - UInt32 modifiers = 0; - UInt32 keyboard_type = 0; - - GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code); - GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code); - GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers); - GetEventParameter (mRawKeyEvent, kEventParamKeyboardType, typeUInt32, NULL, sizeof(UInt32), NULL, &keyboard_type); - - result["char_code"] = (S32)char_code; - result["key_code"] = (S32)key_code; - result["modifiers"] = (S32)modifiers; - result["keyboard_type"] = (S32)keyboard_type; - -#if 0 - // This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc) - // cause llsd serialization to create XML that the llsd deserializer won't parse! - std::string unicode; - S32 err = noErr; - EventParamType actualType = typeUTF8Text; - UInt32 actualSize = 0; - char *buffer = NULL; - - err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL); - if(err == noErr) - { - // allocate a buffer and get the actual data. - buffer = new char[actualSize]; - err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, actualSize, &actualSize, buffer); - if(err == noErr) - { - unicode.assign(buffer, actualSize); - } - delete[] buffer; - } - - result["unicode"] = unicode; -#endif - + result["event_type"] = LLSD::Integer(mRawKeyEvent->mEventType); + result["event_modifiers"] = LLSD::Integer(mRawKeyEvent->mEventModifiers); + result["event_keycode"] = LLSD::Integer(mRawKeyEvent->mEventKeyCode); + result["event_chars"] = (mRawKeyEvent->mEventChars) ? LLSD(LLSD::Integer(mRawKeyEvent->mEventChars)) : LLSD(); + result["event_umodchars"] = (mRawKeyEvent->mEventUnmodChars) ? LLSD(LLSD::Integer(mRawKeyEvent->mEventUnmodChars)) : LLSD(); + result["event_isrepeat"] = LLSD::Boolean(mRawKeyEvent->mEventRepeat); } #endif diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 9e9bd8ae39..9e9bd8ae39 100755..100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp index 4b01f7a979..4b01f7a979 100755..100644 --- a/indra/llwindow/llwindowmesaheadless.cpp +++ b/indra/llwindow/llwindowmesaheadless.cpp diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h index 00e42240e6..00e42240e6 100755..100644 --- a/indra/llwindow/llwindowmesaheadless.h +++ b/indra/llwindow/llwindowmesaheadless.h diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index c20e639fc7..c20e639fc7 100755..100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h index 7193e6f45a..7193e6f45a 100755..100644 --- a/indra/llwindow/llwindowsdl.h +++ b/indra/llwindow/llwindowsdl.h diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index cd2be87fad..875ffe4cd4 100755..100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -42,6 +42,7 @@ #include "llgl.h" #include "llstring.h" #include "lldir.h" +#include "llsdutil.h" #include "llglslshader.h" // System includes @@ -2068,6 +2069,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ window_imp->mKeyCharCode = 0; // don't know until wm_char comes in next window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff; window_imp->mKeyVirtualKey = w_param; + window_imp->mRawMsg = u_msg; + window_imp->mRawWParam = w_param; + window_imp->mRawLParam = l_param; window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); { @@ -2090,6 +2094,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff; window_imp->mKeyVirtualKey = w_param; + window_imp->mRawMsg = u_msg; + window_imp->mRawWParam = w_param; + window_imp->mRawLParam = l_param; window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); LL_RECORD_BLOCK_TIME(FTM_KEYHANDLER); @@ -2177,6 +2184,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ case WM_CHAR: window_imp->mKeyCharCode = w_param; + window_imp->mRawMsg = u_msg; + window_imp->mRawWParam = w_param; + window_imp->mRawLParam = l_param; // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need // to figure out how that works. - Doug @@ -2292,6 +2302,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ sHandleLeftMouseUp = true; break; } + sHandleDoubleClick = true; //if (gDebugClicks) //{ @@ -3238,6 +3249,9 @@ LLSD LLWindowWin32::getNativeKeyData() result["scan_code"] = (S32)mKeyScanCode; result["virtual_key"] = (S32)mKeyVirtualKey; + result["msg"] = ll_sd_from_U32(mRawMsg); + result["w_param"] = ll_sd_from_U32(mRawWParam); + result["l_param"] = ll_sd_from_U32(mRawLParam); return result; } diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 2ca8d48fc7..1a775eadaf 100755..100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -126,7 +126,7 @@ protected: HCURSOR loadColorCursor(LPCTSTR name); BOOL isValid(); void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size); - LLSD getNativeKeyData(); + virtual LLSD getNativeKeyData(); // Changes display resolution. Returns true if successful BOOL setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh); @@ -208,6 +208,9 @@ protected: U32 mKeyCharCode; U32 mKeyScanCode; U32 mKeyVirtualKey; + U32 mRawMsg; + U32 mRawWParam; + U32 mRawLParam; friend class LLWindowManager; }; diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt index 17400a203e..17400a203e 100755..100644 --- a/indra/llxml/CMakeLists.txt +++ b/indra/llxml/CMakeLists.txt diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 4e3d0ab392..4e3d0ab392 100755..100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h index 04575d81e0..04575d81e0 100755..100644 --- a/indra/llxml/llcontrol.h +++ b/indra/llxml/llcontrol.h diff --git a/indra/llxml/llcontrolgroupreader.h b/indra/llxml/llcontrolgroupreader.h index 6a27a65499..6a27a65499 100755..100644 --- a/indra/llxml/llcontrolgroupreader.h +++ b/indra/llxml/llcontrolgroupreader.h diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 455df13e48..455df13e48 100755..100644 --- a/indra/llxml/llxmlnode.cpp +++ b/indra/llxml/llxmlnode.cpp diff --git a/indra/llxml/llxmlnode.h b/indra/llxml/llxmlnode.h index 0b8da5dc5d..0b8da5dc5d 100755..100644 --- a/indra/llxml/llxmlnode.h +++ b/indra/llxml/llxmlnode.h diff --git a/indra/llxml/llxmlparser.cpp b/indra/llxml/llxmlparser.cpp index 1bdc283f67..1bdc283f67 100755..100644 --- a/indra/llxml/llxmlparser.cpp +++ b/indra/llxml/llxmlparser.cpp diff --git a/indra/llxml/llxmlparser.h b/indra/llxml/llxmlparser.h index a5b210404f..a5b210404f 100755..100644 --- a/indra/llxml/llxmlparser.h +++ b/indra/llxml/llxmlparser.h diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp index ca98953f92..ca98953f92 100755..100644 --- a/indra/llxml/llxmltree.cpp +++ b/indra/llxml/llxmltree.cpp diff --git a/indra/llxml/llxmltree.h b/indra/llxml/llxmltree.h index a82fee0416..a82fee0416 100755..100644 --- a/indra/llxml/llxmltree.h +++ b/indra/llxml/llxmltree.h diff --git a/indra/llxml/tests/llcontrol_test.cpp b/indra/llxml/tests/llcontrol_test.cpp index 2b691ffbb1..2b691ffbb1 100755..100644 --- a/indra/llxml/tests/llcontrol_test.cpp +++ b/indra/llxml/tests/llcontrol_test.cpp diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt index c59645bd70..c59645bd70 100755..100644 --- a/indra/mac_crash_logger/CMakeLists.txt +++ b/indra/mac_crash_logger/CMakeLists.txt diff --git a/indra/mac_crash_logger/Info.plist b/indra/mac_crash_logger/Info.plist index 2ebed11c3f..2ebed11c3f 100755..100644 --- a/indra/mac_crash_logger/Info.plist +++ b/indra/mac_crash_logger/Info.plist diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp index 351009814d..351009814d 100755..100644 --- a/indra/mac_crash_logger/llcrashloggermac.cpp +++ b/indra/mac_crash_logger/llcrashloggermac.cpp diff --git a/indra/mac_crash_logger/llcrashloggermac.h b/indra/mac_crash_logger/llcrashloggermac.h index 6d8f63ecac..6d8f63ecac 100755..100644 --- a/indra/mac_crash_logger/llcrashloggermac.h +++ b/indra/mac_crash_logger/llcrashloggermac.h diff --git a/indra/mac_crash_logger/llcrashloggermacdelegate.h b/indra/mac_crash_logger/llcrashloggermacdelegate.h index c998a8efe2..c998a8efe2 100755..100644 --- a/indra/mac_crash_logger/llcrashloggermacdelegate.h +++ b/indra/mac_crash_logger/llcrashloggermacdelegate.h diff --git a/indra/mac_crash_logger/llcrashloggermacdelegate.mm b/indra/mac_crash_logger/llcrashloggermacdelegate.mm index b2af76a47c..b2af76a47c 100755..100644 --- a/indra/mac_crash_logger/llcrashloggermacdelegate.mm +++ b/indra/mac_crash_logger/llcrashloggermacdelegate.mm diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp index d6b913829e..d6b913829e 100755..100644 --- a/indra/mac_crash_logger/mac_crash_logger.cpp +++ b/indra/mac_crash_logger/mac_crash_logger.cpp diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt index 85318aea3b..24eb3947b4 100755..100644 --- a/indra/media_plugins/CMakeLists.txt +++ b/indra/media_plugins/CMakeLists.txt @@ -2,16 +2,17 @@ add_subdirectory(base) -add_subdirectory(webkit) - -add_subdirectory(gstreamer010) +if (LINUX) + add_subdirectory(gstreamer010) +endif (LINUX) if (WINDOWS OR DARWIN) add_subdirectory(quicktime) + add_subdirectory(cef) endif (WINDOWS OR DARWIN) if (WINDOWS) add_subdirectory(winmmshim) endif (WINDOWS) -add_subdirectory(example) +### add_subdirectory(example) diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt index 7367b9e5e6..7367b9e5e6 100755..100644 --- a/indra/media_plugins/base/CMakeLists.txt +++ b/indra/media_plugins/base/CMakeLists.txt diff --git a/indra/media_plugins/base/media_plugin_base.cpp b/indra/media_plugins/base/media_plugin_base.cpp index 37c498664a..37c498664a 100755..100644 --- a/indra/media_plugins/base/media_plugin_base.cpp +++ b/indra/media_plugins/base/media_plugin_base.cpp diff --git a/indra/media_plugins/base/media_plugin_base.h b/indra/media_plugins/base/media_plugin_base.h index 38b8226bb3..38b8226bb3 100755..100644 --- a/indra/media_plugins/base/media_plugin_base.h +++ b/indra/media_plugins/base/media_plugin_base.h diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 5a8fe90bdd..1f6163e41e 100755..100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -1,6 +1,6 @@ # -*- cmake -*- -project(media_plugin_webkit) +project(media_plugin_cef) include(00-Common) include(LLCommon) @@ -9,17 +9,14 @@ include(LLPlugin) include(LLMath) include(LLRender) include(LLWindow) -include(UI) include(Linking) include(PluginAPI) include(MediaPluginBase) include(OpenGL) -include(PulseAudio) -include(WebKitLibPlugin) +include(CEFPlugin) include_directories( - ${PULSEAUDIO_INCLUDE_DIRS} ${LLPLUGIN_INCLUDE_DIRS} ${MEDIA_PLUGIN_BASE_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} @@ -27,14 +24,14 @@ include_directories( ${LLIMAGE_INCLUDE_DIRS} ${LLRENDER_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} - ${LLQTWEBKIT_INCLUDE_DIR} + ${CEF_INCLUDE_DIR} ) include_directories(SYSTEM ${LLCOMMON_SYSTEM_INCLUDE_DIRS} ) -### media_plugin_webkit +### media_plugin_cef if(NOT WORD_SIZE EQUAL 32) if(WINDOWS) @@ -44,75 +41,72 @@ if(NOT WORD_SIZE EQUAL 32) endif(WINDOWS) endif(NOT WORD_SIZE EQUAL 32) -set(media_plugin_webkit_SOURCE_FILES - media_plugin_webkit.cpp +set(media_plugin_cef_SOURCE_FILES + media_plugin_cef.cpp ) -set(media_plugin_webkit_HEADER_FILES +set(media_plugin_cef_HEADER_FILES volume_catcher.h ) -set(media_plugin_webkit_LINK_LIBRARIES +set (media_plugin_cef_LINK_LIBRARIES ${LLPLUGIN_LIBRARIES} ${MEDIA_PLUGIN_BASE_LIBRARIES} ${LLCOMMON_LIBRARIES} - ${WEBKIT_PLUGIN_LIBRARIES} - ${PLUGIN_API_WINDOWS_LIBRARIES} - ${PULSEAUDIO_LIBRARIES} -) + ${CEF_PLUGIN_LIBRARIES} + ${PLUGIN_API_WINDOWS_LIBRARIES}) + # Select which VolumeCatcher implementation to use if (LINUX) - if (PULSEAUDIO_FOUND) - list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp) - 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 - ) + message(FATAL_ERROR "CEF plugin has been enabled for a Linux compile.\n" + " Please create a volume_catcher implementation for this platform.") + elseif (DARWIN) - list(APPEND media_plugin_webkit_SOURCE_FILES mac_volume_catcher.cpp) + list(APPEND media_plugin_cef_SOURCE_FILES mac_volume_catcher.cpp) find_library(CORESERVICES_LIBRARY CoreServices) find_library(AUDIOUNIT_LIBRARY AudioUnit) - list(APPEND media_plugin_webkit_LINK_LIBRARIES + list(APPEND media_plugin_cef_LINK_LIBRARIES ${CORESERVICES_LIBRARY} # for Component Manager calls ${AUDIOUNIT_LIBRARY} # for AudioUnit calls ) elseif (WINDOWS) - list(APPEND media_plugin_webkit_SOURCE_FILES windows_volume_catcher.cpp) + list(APPEND media_plugin_cef_SOURCE_FILES windows_volume_catcher.cpp) endif (LINUX) -set_source_files_properties(${media_plugin_webkit_HEADER_FILES} +set_source_files_properties(${media_plugin_cef_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) -list(APPEND media_plugin_webkit_SOURCE_FILES ${media_plugin_webkit_HEADER_FILES}) +list(APPEND media_plugin_cef_SOURCE_FILES ${media_plugin_cef_HEADER_FILES}) -add_library(media_plugin_webkit +add_library(media_plugin_cef SHARED - ${media_plugin_webkit_SOURCE_FILES} + ${media_plugin_cef_SOURCE_FILES} ) -target_link_libraries(media_plugin_webkit ${media_plugin_webkit_LINK_LIBRARIES}) - -add_dependencies(media_plugin_webkit +add_dependencies(media_plugin_cef ${LLPLUGIN_LIBRARIES} ${MEDIA_PLUGIN_BASE_LIBRARIES} ${LLCOMMON_LIBRARIES} ) +target_link_libraries(media_plugin_cef + ${media_plugin_cef_LINK_LIBRARIES} +) + if (WINDOWS) set_target_properties( - media_plugin_webkit + media_plugin_cef PROPERTIES - LINK_FLAGS "/MANIFEST:NO" + LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT" + LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD" ) endif (WINDOWS) if (DARWIN) # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name set_target_properties( - media_plugin_webkit + media_plugin_cef PROPERTIES PREFIX "" BUILD_WITH_INSTALL_RPATH 1 @@ -120,13 +114,4 @@ if (DARWIN) LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" ) - # copy the webkit dylib to the build directory -# add_custom_command( -# TARGET media_plugin_webkit POST_BUILD -# # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib -# COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ -# DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -# ) - endif (DARWIN) - diff --git a/indra/media_plugins/webkit/mac_volume_catcher.cpp b/indra/media_plugins/cef/mac_volume_catcher.cpp index 73e5bf3da3..dddb9c2077 100755..100644 --- a/indra/media_plugins/webkit/mac_volume_catcher.cpp +++ b/indra/media_plugins/cef/mac_volume_catcher.cpp @@ -6,7 +6,7 @@ * $LicenseInfo:firstyear=2010&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; diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp new file mode 100644 index 0000000000..9028f73e30 --- /dev/null +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -0,0 +1,886 @@ +/** +* @file media_plugin_cef.cpp +* @brief CEF (Chromium Embedding Framework) plugin for LLMedia API plugin system +* +* @cond +* $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$ +* @endcond +*/ + +#include "linden_common.h" +#include "indra_constants.h" // for indra keyboard codes + +#include "llgl.h" +#include "llsdutil.h" +#include "llplugininstance.h" +#include "llpluginmessage.h" +#include "llpluginmessageclasses.h" +#include "media_plugin_base.h" + +#include "boost/function.hpp" +#include "boost/bind.hpp" +#include "llCEFLib.h" +#include "volume_catcher.h" + +//////////////////////////////////////////////////////////////////////////////// +// +class MediaPluginCEF : + public MediaPluginBase +{ +public: + MediaPluginCEF(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data); + ~MediaPluginCEF(); + + /*virtual*/ + void receiveMessage(const char* message_string); + +private: + bool init(); + + void onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup); + void onCustomSchemeURLCallback(std::string url); + void onConsoleMessageCallback(std::string message, std::string source, int line); + void onStatusMessageCallback(std::string value); + void onTitleChangeCallback(std::string title); + void onLoadStartCallback(); + void onRequestExitCallback(); + void onLoadEndCallback(int httpStatusCode); + void onAddressChangeCallback(std::string url); + void onNavigateURLCallback(std::string url, std::string target); + bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password); + void onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle); + void onFileDownloadCallback(std::string filename); + + void postDebugMessage(const std::string& msg); + void authResponse(LLPluginMessage &message); + + LLCEFLib::EKeyboardModifier decodeModifiers(std::string &modifiers); + void deserializeKeyboardData(LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers); + void keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data); + void unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data); + + void checkEditState(); + void setVolume(F32 vol); + + bool mEnableMediaPluginDebugging; + std::string mHostLanguage; + bool mCookiesEnabled; + bool mPluginsEnabled; + bool mJavascriptEnabled; + std::string mUserAgentSubtring; + std::string mAuthUsername; + std::string mAuthPassword; + bool mAuthOK; + bool mCanCut; + bool mCanCopy; + bool mCanPaste; + std::string mCachePath; + std::string mCookiePath; + LLCEFLib* mLLCEFLib; + + VolumeCatcher mVolumeCatcher; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +MediaPluginCEF::MediaPluginCEF(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data) : +MediaPluginBase(host_send_func, host_user_data) +{ + mWidth = 0; + mHeight = 0; + mDepth = 4; + mPixels = 0; + mEnableMediaPluginDebugging = true; + mHostLanguage = "en"; + mCookiesEnabled = true; + mPluginsEnabled = false; + mJavascriptEnabled = true; + mUserAgentSubtring = ""; + mAuthUsername = ""; + mAuthPassword = ""; + mAuthOK = false; + mCanCut = false; + mCanCopy = false; + mCanPaste = false; + mCachePath = ""; + mCookiePath = ""; + mLLCEFLib = new LLCEFLib(); +} + +//////////////////////////////////////////////////////////////////////////////// +// +MediaPluginCEF::~MediaPluginCEF() +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::postDebugMessage(const std::string& msg) +{ + if (mEnableMediaPluginDebugging) + { + std::stringstream str; + str << "@Media Msg> " << msg; + + LLPluginMessage debug_message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "debug_message"); + debug_message.setValue("message_text", str.str()); + debug_message.setValue("message_level", "info"); + sendMessage(debug_message); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup) +{ + if (mPixels && pixels) + { + if (is_popup) + { + for (int line = 0; line < height; ++line) + { + int inverted_y = mHeight - y - height; + int src = line * width * mDepth; + int dst = (inverted_y + line) * mWidth * mDepth + x * mDepth; + + if (dst + width * mDepth < mWidth * mHeight * mDepth) + { + memcpy(mPixels + dst, pixels + src, width * mDepth); + } + } + } + else + { + if (mWidth == width && mHeight == height) + { + memcpy(mPixels, pixels, mWidth * mHeight * mDepth); + } + + } + setDirty(0, 0, mWidth, mHeight); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onConsoleMessageCallback(std::string message, std::string source, int line) +{ + std::stringstream str; + str << "Console message: " << message << " in file(" << source << ") at line " << line; + postDebugMessage(str.str()); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onStatusMessageCallback(std::string value) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "status_text"); + message.setValue("status", value); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onTitleChangeCallback(std::string title) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text"); + message.setValue("name", title); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onLoadStartCallback() +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin"); + //message.setValue("uri", event.getEventUri()); // not easily available here in CEF - needed? + message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack()); + message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward()); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onRequestExitCallback() +{ + mLLCEFLib->shutdown(); + + LLPluginMessage message("base", "goodbye"); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onLoadEndCallback(int httpStatusCode) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete"); + //message.setValue("uri", event.getEventUri()); // not easily available here in CEF - needed? + message.setValueS32("result_code", httpStatusCode); + message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack()); + message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward()); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onAddressChangeCallback(std::string url) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "location_changed"); + message.setValue("uri", url); + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onNavigateURLCallback(std::string url, std::string target) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href"); + message.setValue("uri", url); + message.setValue("target", target); + message.setValue("uuid", ""); // not used right now + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onCustomSchemeURLCallback(std::string url) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_nofollow"); + message.setValue("uri", url); + message.setValue("nav_type", "clicked"); // TODO: differentiate between click and navigate to + sendMessage(message); +} + +//////////////////////////////////////////////////////////////////////////////// +// +bool MediaPluginCEF::onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password) +{ + mAuthOK = false; + + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "auth_request"); + message.setValue("url", host); + message.setValue("realm", realm); + 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); + + if (mAuthOK) + { + username = mAuthUsername; + password = mAuthPassword; + } + + return mAuthOK; +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onFileDownloadCallback(const std::string filename) +{ + mAuthOK = false; + + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "file_download"); + message.setValue("filename", filename); + + sendMessage(message); +} + +void MediaPluginCEF::onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle) +{ + std::string name = ""; + + switch (type) + { + case LLCEFLib::CT_POINTER: + name = "arrow"; + break; + case LLCEFLib::CT_IBEAM: + name = "ibeam"; + break; + case LLCEFLib::CT_NORTHSOUTHRESIZE: + name = "splitv"; + break; + case LLCEFLib::CT_EASTWESTRESIZE: + name = "splith"; + break; + case LLCEFLib::CT_HAND: + name = "hand"; + break; + + default: + LL_WARNS() << "Unknown cursor ID: " << (int)type << LL_ENDL; + break; + } + + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "cursor_changed"); + message.setValue("name", name); + sendMessage(message); +} + +void MediaPluginCEF::authResponse(LLPluginMessage &message) +{ + mAuthOK = message.getValueBoolean("ok"); + if (mAuthOK) + { + mAuthUsername = message.getValue("username"); + mAuthPassword = message.getValue("password"); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::receiveMessage(const char* message_string) +{ + // std::cerr << "MediaPluginCEF::receiveMessage: received message: \"" << message_string << "\"" << std::endl; + LLPluginMessage message_in; + + if (message_in.parse(message_string) >= 0) + { + std::string message_class = message_in.getClass(); + std::string message_name = message_in.getName(); + if (message_class == LLPLUGIN_MESSAGE_CLASS_BASE) + { + if (message_name == "init") + { + LLPluginMessage message("base", "init_response"); + LLSD versions = LLSD::emptyMap(); + versions[LLPLUGIN_MESSAGE_CLASS_BASE] = LLPLUGIN_MESSAGE_CLASS_BASE_VERSION; + versions[LLPLUGIN_MESSAGE_CLASS_MEDIA] = LLPLUGIN_MESSAGE_CLASS_MEDIA_VERSION; + versions[LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER] = LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER_VERSION; + message.setValueLLSD("versions", versions); + + std::string plugin_version = "CEF plugin 1.1.3"; + message.setValue("plugin_version", plugin_version); + sendMessage(message); + } + else if (message_name == "idle") + { + mLLCEFLib->update(); + + mVolumeCatcher.pump(); + // this seems bad but unless the state changes (it won't until we figure out + // how to get CEF to tell us if copy/cut/paste is available) then this function + // will return immediately + checkEditState(); + } + else if (message_name == "cleanup") + { + mLLCEFLib->requestExit(); + } + else if (message_name == "shm_added") + { + SharedSegmentInfo info; + info.mAddress = message_in.getValuePointer("address"); + info.mSize = (size_t)message_in.getValueS32("size"); + std::string name = message_in.getValue("name"); + + mSharedSegments.insert(SharedSegmentMap::value_type(name, info)); + + } + else if (message_name == "shm_remove") + { + std::string name = message_in.getValue("name"); + + SharedSegmentMap::iterator iter = mSharedSegments.find(name); + if (iter != mSharedSegments.end()) + { + if (mPixels == iter->second.mAddress) + { + mPixels = NULL; + mTextureSegmentName.clear(); + } + mSharedSegments.erase(iter); + } + else + { + } + + LLPluginMessage message("base", "shm_remove_response"); + message.setValue("name", name); + sendMessage(message); + } + else + { + } + } + else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) + { + if (message_name == "init") + { + // event callbacks from LLCefLib + mLLCEFLib->setOnPageChangedCallback(boost::bind(&MediaPluginCEF::onPageChangedCallback, this, _1, _2, _3, _4, _5, _6)); + mLLCEFLib->setOnCustomSchemeURLCallback(boost::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, _1)); + mLLCEFLib->setOnConsoleMessageCallback(boost::bind(&MediaPluginCEF::onConsoleMessageCallback, this, _1, _2, _3)); + mLLCEFLib->setOnStatusMessageCallback(boost::bind(&MediaPluginCEF::onStatusMessageCallback, this, _1)); + mLLCEFLib->setOnTitleChangeCallback(boost::bind(&MediaPluginCEF::onTitleChangeCallback, this, _1)); + mLLCEFLib->setOnLoadStartCallback(boost::bind(&MediaPluginCEF::onLoadStartCallback, this)); + mLLCEFLib->setOnLoadEndCallback(boost::bind(&MediaPluginCEF::onLoadEndCallback, this, _1)); + mLLCEFLib->setOnAddressChangeCallback(boost::bind(&MediaPluginCEF::onAddressChangeCallback, this, _1)); + mLLCEFLib->setOnNavigateURLCallback(boost::bind(&MediaPluginCEF::onNavigateURLCallback, this, _1, _2)); + mLLCEFLib->setOnHTTPAuthCallback(boost::bind(&MediaPluginCEF::onHTTPAuthCallback, this, _1, _2, _3, _4)); + mLLCEFLib->setOnFileDownloadCallback(boost::bind(&MediaPluginCEF::onFileDownloadCallback, this, _1)); + mLLCEFLib->setOnCursorChangedCallback(boost::bind(&MediaPluginCEF::onCursorChangedCallback, this, _1, _2)); + mLLCEFLib->setOnRequestExitCallback(boost::bind(&MediaPluginCEF::onRequestExitCallback, this)); + + LLCEFLib::LLCEFLibSettings settings; + settings.initial_width = 1024; + settings.initial_height = 1024; + settings.plugins_enabled = mPluginsEnabled; + settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI + settings.javascript_enabled = mJavascriptEnabled; + settings.cookies_enabled = mCookiesEnabled; + settings.cookie_store_path = mCookiePath; + settings.cache_enabled = true; + settings.cache_path = mCachePath; + settings.accept_language_list = mHostLanguage; + settings.user_agent_substring = mLLCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring); + + bool result = mLLCEFLib->init(settings); + if (!result) + { + // if this fails, the media system in viewer will put up a message + } + + // Plugin gets to decide the texture parameters to use. + mDepth = 4; + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params"); + message.setValueS32("default_width", 1024); + message.setValueS32("default_height", 1024); + message.setValueS32("depth", mDepth); + message.setValueU32("internalformat", GL_RGB); + message.setValueU32("format", GL_BGRA); + message.setValueU32("type", GL_UNSIGNED_BYTE); + message.setValueBoolean("coords_opengl", true); + sendMessage(message); + } + else if (message_name == "set_user_data_path") + { + std::string user_data_path_cache = message_in.getValue("cache_path"); + std::string user_data_path_cookies = message_in.getValue("cookies_path"); + mCachePath = user_data_path_cache + "cef_cache"; + mCookiePath = user_data_path_cookies + "cef_cookies"; + } + else if (message_name == "size_change") + { + std::string name = message_in.getValue("name"); + S32 width = message_in.getValueS32("width"); + S32 height = message_in.getValueS32("height"); + S32 texture_width = message_in.getValueS32("texture_width"); + S32 texture_height = message_in.getValueS32("texture_height"); + + if (!name.empty()) + { + // Find the shared memory region with this name + SharedSegmentMap::iterator iter = mSharedSegments.find(name); + if (iter != mSharedSegments.end()) + { + mPixels = (unsigned char*)iter->second.mAddress; + mWidth = width; + mHeight = height; + + mTextureWidth = texture_width; + mTextureHeight = texture_height; + }; + }; + + mLLCEFLib->setSize(mWidth, mHeight); + + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response"); + message.setValue("name", name); + message.setValueS32("width", width); + message.setValueS32("height", height); + message.setValueS32("texture_width", texture_width); + message.setValueS32("texture_height", texture_height); + sendMessage(message); + + } + else if (message_name == "set_language_code") + { + mHostLanguage = message_in.getValue("language"); + } + else if (message_name == "load_uri") + { + std::string uri = message_in.getValue("uri"); + mLLCEFLib->navigate(uri); + } + else if (message_name == "set_cookie") + { + std::string uri = message_in.getValue("uri"); + std::string name = message_in.getValue("name"); + std::string value = message_in.getValue("value"); + std::string domain = message_in.getValue("domain"); + std::string path = message_in.getValue("path"); + bool httponly = message_in.getValueBoolean("httponly"); + bool secure = message_in.getValueBoolean("secure"); + mLLCEFLib->setCookie(uri, name, value, domain, path, httponly, secure); + } + else if (message_name == "mouse_event") + { + std::string event = message_in.getValue("event"); + + S32 x = message_in.getValueS32("x"); + S32 y = message_in.getValueS32("y"); + + // only even send left mouse button events to LLCEFLib + // (partially prompted by crash in OS X CEF when sending right button events) + // we catch the right click in viewer and display our own context menu anyway + S32 button = message_in.getValueS32("button"); + LLCEFLib::EMouseButton btn = LLCEFLib::MB_MOUSE_BUTTON_LEFT; + + if (event == "down" && button == 0) + { + mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOWN, x, y); + mLLCEFLib->setFocus(true); + + std::stringstream str; + str << "Mouse down at = " << x << ", " << y; + postDebugMessage(str.str()); + } + else if (event == "up" && button == 0) + { + mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_UP, x, y); + + std::stringstream str; + str << "Mouse up at = " << x << ", " << y; + postDebugMessage(str.str()); + } + else if (event == "double_click") + { + mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOUBLE_CLICK, x, y); + } + else + { + mLLCEFLib->mouseMove(x, y); + } + } + else if (message_name == "scroll_event") + { + S32 x = message_in.getValueS32("x"); + S32 y = message_in.getValueS32("y"); + const int scaling_factor = 40; + y *= -scaling_factor; + + mLLCEFLib->mouseWheel(x, y); + } + else if (message_name == "text_event") + { + std::string text = message_in.getValue("text"); + std::string modifiers = message_in.getValue("modifiers"); + LLSD native_key_data = message_in.getValueLLSD("native_key_data"); + + unicodeInput(text, decodeModifiers(modifiers), native_key_data); + } + else if (message_name == "key_event") + { +#if LL_DARWIN + std::string event = message_in.getValue("event"); + S32 key = message_in.getValueS32("key"); + LLSD native_key_data = message_in.getValueLLSD("native_key_data"); + +#if 0 + if (event == "down") + { + //mLLCEFLib->keyPress(key, true); + mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0); + + } + else if (event == "up") + { + //mLLCEFLib->keyPress(key, false); + mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_UP, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0); + } +#else + // Treat unknown events as key-up for safety. + LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP; + if (event == "down") + { + key_event = LLCEFLib::KE_KEY_DOWN; + } + else if (event == "repeat") + { + key_event = LLCEFLib::KE_KEY_REPEAT; + } + + keyEvent(key_event, key, LLCEFLib::KM_MODIFIER_NONE, native_key_data); + +#endif +#elif LL_WINDOWS + std::string event = message_in.getValue("event"); + S32 key = message_in.getValueS32("key"); + std::string modifiers = message_in.getValue("modifiers"); + LLSD native_key_data = message_in.getValueLLSD("native_key_data"); + + // Treat unknown events as key-up for safety. + LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP; + if (event == "down") + { + key_event = LLCEFLib::KE_KEY_DOWN; + } + else if (event == "repeat") + { + key_event = LLCEFLib::KE_KEY_REPEAT; + } + + keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data); +#endif + } + else if (message_name == "enable_media_plugin_debugging") + { + mEnableMediaPluginDebugging = message_in.getValueBoolean("enable"); + } + if (message_name == "auth_response") + { + authResponse(message_in); + } + if (message_name == "edit_cut") + { + mLLCEFLib->editCut(); + } + if (message_name == "edit_copy") + { + mLLCEFLib->editCopy(); + } + if (message_name == "edit_paste") + { + mLLCEFLib->editPaste(); + } + } + else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER) + { + if (message_name == "set_page_zoom_factor") + { + F32 factor = (F32)message_in.getValueReal("factor"); + mLLCEFLib->setPageZoom(factor); + } + if (message_name == "browse_stop") + { + mLLCEFLib->stop(); + } + else if (message_name == "browse_reload") + { + bool ignore_cache = true; + mLLCEFLib->reload(ignore_cache); + } + else if (message_name == "browse_forward") + { + mLLCEFLib->goForward(); + } + else if (message_name == "browse_back") + { + mLLCEFLib->goBack(); + } + else if (message_name == "cookies_enabled") + { + mCookiesEnabled = message_in.getValueBoolean("enable"); + } + else if (message_name == "set_user_agent") + { + mUserAgentSubtring = message_in.getValue("user_agent"); + } + else if (message_name == "show_web_inspector") + { + mLLCEFLib->showDevTools(true); + } + else if (message_name == "plugins_enabled") + { + mPluginsEnabled = message_in.getValueBoolean("enable"); + } + else if (message_name == "javascript_enabled") + { + mJavascriptEnabled = message_in.getValueBoolean("enable"); + } + } + else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME) + { + if (message_name == "set_volume") + { + F32 volume = (F32)message_in.getValueReal("volume"); + setVolume(volume); + } + } + else + { + }; + } +} + +LLCEFLib::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers) +{ + int result = 0; + + if (modifiers.find("shift") != std::string::npos) + result |= LLCEFLib::KM_MODIFIER_SHIFT; + + if (modifiers.find("alt") != std::string::npos) + result |= LLCEFLib::KM_MODIFIER_ALT; + + if (modifiers.find("control") != std::string::npos) + result |= LLCEFLib::KM_MODIFIER_CONTROL; + + if (modifiers.find("meta") != std::string::npos) + result |= LLCEFLib::KM_MODIFIER_META; + + return (LLCEFLib::EKeyboardModifier)result; +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::deserializeKeyboardData(LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers) +{ + native_scan_code = 0; + native_virtual_key = 0; + native_modifiers = 0; + + if (native_key_data.isMap()) + { +#if LL_DARWIN + native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger()); + native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); +#elif LL_WINDOWS + native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); + // TODO: I don't think we need to do anything with native modifiers here -- please verify +#endif + }; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers_x, LLSD native_key_data = LLSD::emptyMap()) +{ +#if LL_DARWIN + + if (!native_key_data.has("event_type") || + !native_key_data.has("event_modifiers") || + !native_key_data.has("event_keycode") || + !native_key_data.has("event_isrepeat")) + return; + + uint32_t eventType = native_key_data["event_type"].asInteger(); + if (!eventType) + return; + uint32_t eventModifiers = native_key_data["event_modifiers"].asInteger(); + uint32_t eventKeycode = native_key_data["event_keycode"].asInteger(); + char eventChars = static_cast<char>(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger()); + char eventUChars = static_cast<char>(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger()); + bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean(); + + mLLCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL, + (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode); + +#elif LL_WINDOWS + U32 msg = ll_U32_from_sd(native_key_data["msg"]); + U32 wparam = ll_U32_from_sd(native_key_data["w_param"]); + U64 lparam = ll_U32_from_sd(native_key_data["l_param"]); + + mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam); +#endif +}; + +void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) +{ +#if LL_DARWIN + //mLLCEFLib->keyPress(utf8str[0], true); + //mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0); + if (!native_key_data.has("event_chars") || !native_key_data.has("event_umodchars") || + !native_key_data.has("event_keycode") || !native_key_data.has("event_modifiers")) + return; + uint32_t unicodeChar = native_key_data["event_chars"].asInteger(); + uint32_t unmodifiedChar = native_key_data["event_umodchars"].asInteger(); + uint32_t keyCode = native_key_data["event_keycode"].asInteger(); + uint32_t rawmodifiers = native_key_data["event_modifiers"].asInteger(); + + mLLCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers); + +#elif LL_WINDOWS + U32 msg = ll_U32_from_sd(native_key_data["msg"]); + U32 wparam = ll_U32_from_sd(native_key_data["w_param"]); + U64 lparam = ll_U32_from_sd(native_key_data["l_param"]); + mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam); +#endif +}; + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::checkEditState() +{ + bool can_cut = mLLCEFLib->editCanCut(); + bool can_copy = mLLCEFLib->editCanCopy(); + bool can_paste = mLLCEFLib->editCanPaste(); + + if ((can_cut != mCanCut) || (can_copy != mCanCopy) || (can_paste != mCanPaste)) + { + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_state"); + + if (can_cut != mCanCut) + { + mCanCut = can_cut; + message.setValueBoolean("cut", can_cut); + } + + if (can_copy != mCanCopy) + { + mCanCopy = can_copy; + message.setValueBoolean("copy", can_copy); + } + + if (can_paste != mCanPaste) + { + mCanPaste = can_paste; + message.setValueBoolean("paste", can_paste); + } + + sendMessage(message); + } +} + +void MediaPluginCEF::setVolume(F32 vol) +{ + mVolumeCatcher.setVolume(vol); +} + +//////////////////////////////////////////////////////////////////////////////// +// +bool MediaPluginCEF::init() +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text"); + message.setValue("name", "CEF Plugin"); + sendMessage(message); + + return true; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, + void* host_user_data, + LLPluginInstance::sendMessageFunction *plugin_send_func, + void **plugin_user_data) +{ + MediaPluginCEF* self = new MediaPluginCEF(host_send_func, host_user_data); + *plugin_send_func = MediaPluginCEF::staticReceiveMessage; + *plugin_user_data = (void*)self; + + return 0; +} diff --git a/indra/media_plugins/webkit/volume_catcher.h b/indra/media_plugins/cef/volume_catcher.h index 337f2913d3..337f2913d3 100755..100644 --- a/indra/media_plugins/webkit/volume_catcher.h +++ b/indra/media_plugins/cef/volume_catcher.h diff --git a/indra/media_plugins/webkit/windows_volume_catcher.cpp b/indra/media_plugins/cef/windows_volume_catcher.cpp index 0cfb810906..0cfb810906 100755..100644 --- a/indra/media_plugins/webkit/windows_volume_catcher.cpp +++ b/indra/media_plugins/cef/windows_volume_catcher.cpp diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt index 171645ef04..171645ef04 100755..100644 --- a/indra/media_plugins/example/CMakeLists.txt +++ b/indra/media_plugins/example/CMakeLists.txt diff --git a/indra/media_plugins/example/media_plugin_example.cpp b/indra/media_plugins/example/media_plugin_example.cpp index 66c00cd58c..66c00cd58c 100755..100644 --- a/indra/media_plugins/example/media_plugin_example.cpp +++ b/indra/media_plugins/example/media_plugin_example.cpp diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt index 447f6e0689..447f6e0689 100755..100644 --- a/indra/media_plugins/gstreamer010/CMakeLists.txt +++ b/indra/media_plugins/gstreamer010/CMakeLists.txt diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h index 6bc272c009..6bc272c009 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp index 2e4baaa9eb..2e4baaa9eb 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h index d1559089c8..d1559089c8 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc index b33e59363d..b33e59363d 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc index 14fbcb48b9..14fbcb48b9 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h index e7b31bec94..e7b31bec94 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp index 932aaffa1b..932aaffa1b 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h index 29d65fa4e9..29d65fa4e9 100755..100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h diff --git a/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp index 352b63583e..352b63583e 100755..100644 --- a/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp +++ b/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt index 58391007ff..d7a1874bf3 100755..100644 --- a/indra/media_plugins/quicktime/CMakeLists.txt +++ b/indra/media_plugins/quicktime/CMakeLists.txt @@ -63,7 +63,8 @@ if (WINDOWS) set_target_properties( media_plugin_quicktime PROPERTIES - LINK_FLAGS "/MANIFEST:NO" + LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMT" + LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD" ) endif (WINDOWS) diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp index ff1ed8bfbc..7ef5a0fe44 100755..100644 --- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp +++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp @@ -837,7 +837,9 @@ void MediaPluginQuickTime::receiveMessage(const char *message_string) else if(message_name == "cleanup") { // TODO: clean up here - } + LLPluginMessage message("base", "goodbye"); + sendMessage(message); + } else if(message_name == "shm_added") { SharedSegmentInfo info; diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp deleted file mode 100755 index 91be3a89e9..0000000000 --- a/indra/media_plugins/webkit/linux_volume_catcher.cpp +++ /dev/null @@ -1,468 +0,0 @@ -/** - * @file linux_volume_catcher.cpp - * @brief A Linux-specific, PulseAudio-specific hack to detect and volume-adjust new audio sources - * - * @cond - * $LicenseInfo:firstyear=2010&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$ - * @endcond - */ - -/* - The high-level design is as follows: - 1) Connect to the PulseAudio daemon - 2) Watch for the creation of new audio players connecting to the daemon (this includes ALSA clients running on the PulseAudio emulation layer, such as Flash plugins) - 3) Examine any new audio player's PID to see if it belongs to our own process - 4) If so, tell PA to adjust the volume of that audio player ('sink input' in PA parlance) - 5) Keep a list of all living audio players that we care about, adjust the volumes of all of them when we get a new setVolume() call - */ - -#include "linden_common.h" - -#include "volume_catcher.h" - - -extern "C" { -#include <glib.h> -#include <glib-object.h> - -#include <pulse/introspect.h> -#include <pulse/context.h> -#include <pulse/subscribe.h> -#include <pulse/glib-mainloop.h> // There's no special reason why we want the *glib* PA mainloop, but the generic polling implementation seems broken. - -#include "apr_pools.h" -#include "apr_dso.h" -} - -//////////////////////////////////////////////////// - -#define DEBUGMSG(...) do {} while(0) -#define INFOMSG(...) do {} while(0) -#define WARNMSG(...) do {} while(0) - -#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) RTN (*ll##PASYM)(__VA_ARGS__) = NULL -#include "linux_volume_catcher_pa_syms.inc" -#include "linux_volume_catcher_paglib_syms.inc" -#undef LL_PA_SYM - -static bool sSymsGrabbed = false; -static apr_pool_t *sSymPADSOMemoryPool = NULL; -static apr_dso_handle_t *sSymPADSOHandleG = NULL; - -bool grab_pa_syms(std::string pulse_dso_name) -{ - if (sSymsGrabbed) - { - // already have grabbed good syms - return true; - } - - bool sym_error = false; - bool rtn = false; - apr_status_t rv; - apr_dso_handle_t *sSymPADSOHandle = NULL; - -#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##PASYM, sSymPADSOHandle, #PASYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #PASYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #PASYM, (void*)ll##PASYM);}while(0) - - //attempt to load the shared library - apr_pool_create(&sSymPADSOMemoryPool, NULL); - - if ( APR_SUCCESS == (rv = apr_dso_load(&sSymPADSOHandle, - pulse_dso_name.c_str(), - sSymPADSOMemoryPool) )) - { - INFOMSG("Found DSO: %s", pulse_dso_name.c_str()); - -#include "linux_volume_catcher_pa_syms.inc" -#include "linux_volume_catcher_paglib_syms.inc" - - if ( sSymPADSOHandle ) - { - sSymPADSOHandleG = sSymPADSOHandle; - sSymPADSOHandle = NULL; - } - - rtn = !sym_error; - } - else - { - INFOMSG("Couldn't load DSO: %s", pulse_dso_name.c_str()); - rtn = false; // failure - } - - if (sym_error) - { - WARNMSG("Failed to find necessary symbols in PulseAudio libraries."); - } -#undef LL_PA_SYM - - sSymsGrabbed = rtn; - return rtn; -} - - -void ungrab_pa_syms() -{ - // should be safe to call regardless of whether we've - // actually grabbed syms. - - if ( sSymPADSOHandleG ) - { - apr_dso_unload(sSymPADSOHandleG); - sSymPADSOHandleG = NULL; - } - - if ( sSymPADSOMemoryPool ) - { - apr_pool_destroy(sSymPADSOMemoryPool); - sSymPADSOMemoryPool = NULL; - } - - // NULL-out all of the symbols we'd grabbed -#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0) -#include "linux_volume_catcher_pa_syms.inc" -#include "linux_volume_catcher_paglib_syms.inc" -#undef LL_PA_SYM - - sSymsGrabbed = false; -} -//////////////////////////////////////////////////// - -// PulseAudio requires a chain of callbacks with C linkage -extern "C" { - void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *i, int eol, void *userdata); - void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata); - void callback_context_state(pa_context *context, void *userdata); -} - - -class VolumeCatcherImpl -{ -public: - VolumeCatcherImpl(); - ~VolumeCatcherImpl(); - - void setVolume(F32 volume); - void pump(void); - - // for internal use - can't be private because used from our C callbacks - - bool loadsyms(std::string pulse_dso_name); - void init(); - void cleanup(); - - void update_all_volumes(F32 volume); - void update_index_volume(U32 index, F32 volume); - void connected_okay(); - - std::set<U32> mSinkInputIndices; - std::map<U32,U32> mSinkInputNumChannels; - F32 mDesiredVolume; - pa_glib_mainloop *mMainloop; - pa_context *mPAContext; - bool mConnected; - bool mGotSyms; -}; - -VolumeCatcherImpl::VolumeCatcherImpl() - : mDesiredVolume(0.0f), - mMainloop(NULL), - mPAContext(NULL), - mConnected(false), - mGotSyms(false) -{ - init(); -} - -VolumeCatcherImpl::~VolumeCatcherImpl() -{ - cleanup(); -} - -bool VolumeCatcherImpl::loadsyms(std::string pulse_dso_name) -{ - return grab_pa_syms(pulse_dso_name); -} - -void VolumeCatcherImpl::init() -{ - // try to be as defensive as possible because PA's interface is a - // bit fragile and (for our purposes) we'd rather simply not function - // than crash - - // we cheat and rely upon libpulse-mainloop-glib.so.0 to pull-in - // libpulse.so.0 - this isn't a great assumption, and the two DSOs should - // probably be loaded separately. Our Linux DSO framework needs refactoring, - // we do this sort of thing a lot with practically identical logic... - mGotSyms = loadsyms("libpulse-mainloop-glib.so.0"); - if (!mGotSyms) return; - - // better make double-sure glib itself is initialized properly. - if (!g_thread_supported ()) g_thread_init (NULL); - g_type_init(); - - mMainloop = llpa_glib_mainloop_new(g_main_context_default()); - if (mMainloop) - { - pa_mainloop_api *api = llpa_glib_mainloop_get_api(mMainloop); - if (api) - { - pa_proplist *proplist = llpa_proplist_new(); - if (proplist) - { - llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ICON_NAME, "multimedia-player"); - llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ID, "com.secondlife.viewer.mediaplugvoladjust"); - llpa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, "SL Plugin Volume Adjuster"); - llpa_proplist_sets(proplist, PA_PROP_APPLICATION_VERSION, "1"); - - // plain old pa_context_new() is broken! - mPAContext = llpa_context_new_with_proplist(api, NULL, proplist); - llpa_proplist_free(proplist); - } - } - } - - // Now we've set up a PA context and mainloop, try connecting the - // PA context to a PA daemon. - if (mPAContext) - { - llpa_context_set_state_callback(mPAContext, callback_context_state, this); - pa_context_flags_t cflags = (pa_context_flags)0; // maybe add PA_CONTEXT_NOAUTOSPAWN? - if (llpa_context_connect(mPAContext, NULL, cflags, NULL) >= 0) - { - // Okay! We haven't definitely connected, but we - // haven't definitely failed yet. - } - else - { - // Failed to connect to PA manager... we'll leave - // things like that. Perhaps we should try again later. - } - } -} - -void VolumeCatcherImpl::cleanup() -{ - mConnected = false; - - if (mGotSyms && mPAContext) - { - llpa_context_disconnect(mPAContext); - llpa_context_unref(mPAContext); - } - mPAContext = NULL; - - if (mGotSyms && mMainloop) - { - llpa_glib_mainloop_free(mMainloop); - } - mMainloop = NULL; -} - -void VolumeCatcherImpl::setVolume(F32 volume) -{ - mDesiredVolume = volume; - - if (!mGotSyms) return; - - if (mConnected && mPAContext) - { - update_all_volumes(mDesiredVolume); - } - - pump(); -} - -void VolumeCatcherImpl::pump() -{ - gboolean may_block = FALSE; - g_main_context_iteration(g_main_context_default(), may_block); -} - -void VolumeCatcherImpl::connected_okay() -{ - pa_operation *op; - - // fetch global list of existing sinkinputs - if ((op = llpa_context_get_sink_input_info_list(mPAContext, - callback_discovered_sinkinput, - this))) - { - llpa_operation_unref(op); - } - - // subscribe to future global sinkinput changes - llpa_context_set_subscribe_callback(mPAContext, - callback_subscription_alert, - this); - if ((op = llpa_context_subscribe(mPAContext, (pa_subscription_mask_t) - (PA_SUBSCRIPTION_MASK_SINK_INPUT), - NULL, NULL))) - { - llpa_operation_unref(op); - } -} - -void VolumeCatcherImpl::update_all_volumes(F32 volume) -{ - for (std::set<U32>::iterator it = mSinkInputIndices.begin(); - it != mSinkInputIndices.end(); ++it) - { - update_index_volume(*it, volume); - } -} - -void VolumeCatcherImpl::update_index_volume(U32 index, F32 volume) -{ - static pa_cvolume cvol; - llpa_cvolume_set(&cvol, mSinkInputNumChannels[index], - llpa_sw_volume_from_linear(volume)); - - pa_context *c = mPAContext; - uint32_t idx = index; - const pa_cvolume *cvolumep = &cvol; - pa_context_success_cb_t cb = NULL; // okay as null - void *userdata = NULL; // okay as null - - pa_operation *op; - if ((op = llpa_context_set_sink_input_volume(c, idx, cvolumep, cb, userdata))) - { - llpa_operation_unref(op); - } -} - - -void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *sii, int eol, void *userdata) -{ - VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata); - llassert(impl); - - if (0 == eol) - { - pa_proplist *proplist = sii->proplist; - pid_t sinkpid = atoll(llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID)); - - if (sinkpid == getpid()) // does the discovered sinkinput belong to this process? - { - bool is_new = (impl->mSinkInputIndices.find(sii->index) == - impl->mSinkInputIndices.end()); - - impl->mSinkInputIndices.insert(sii->index); - impl->mSinkInputNumChannels[sii->index] = sii->channel_map.channels; - - if (is_new) - { - // new! - impl->update_index_volume(sii->index, impl->mDesiredVolume); - } - else - { - // seen it already, do nothing. - } - } - } -} - -void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata) -{ - VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata); - llassert(impl); - - switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) { - case PA_SUBSCRIPTION_EVENT_SINK_INPUT: - if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == - PA_SUBSCRIPTION_EVENT_REMOVE) - { - // forget this sinkinput, if we were caring about it - impl->mSinkInputIndices.erase(index); - impl->mSinkInputNumChannels.erase(index); - } - else if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == - PA_SUBSCRIPTION_EVENT_NEW) - { - // ask for more info about this new sinkinput - pa_operation *op; - if ((op = llpa_context_get_sink_input_info(impl->mPAContext, index, callback_discovered_sinkinput, impl))) - { - llpa_operation_unref(op); - } - } - else - { - // property change on this sinkinput - we don't care. - } - break; - - default:; - } -} - -void callback_context_state(pa_context *context, void *userdata) -{ - VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata); - llassert(impl); - - switch (llpa_context_get_state(context)) - { - case PA_CONTEXT_READY: - impl->mConnected = true; - impl->connected_okay(); - break; - case PA_CONTEXT_TERMINATED: - impl->mConnected = false; - break; - case PA_CONTEXT_FAILED: - impl->mConnected = false; - break; - default:; - } -} - -///////////////////////////////////////////////////// - -VolumeCatcher::VolumeCatcher() -{ - pimpl = new VolumeCatcherImpl(); -} - -VolumeCatcher::~VolumeCatcher() -{ - delete pimpl; - pimpl = NULL; -} - -void VolumeCatcher::setVolume(F32 volume) -{ - llassert(pimpl); - pimpl->setVolume(volume); -} - -void VolumeCatcher::setPan(F32 pan) -{ - // TODO: implement this (if possible) -} - -void VolumeCatcher::pump() -{ - llassert(pimpl); - pimpl->pump(); -} diff --git a/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc deleted file mode 100755 index d806b48428..0000000000 --- a/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc +++ /dev/null @@ -1,21 +0,0 @@ -// required symbols to grab -LL_PA_SYM(true, pa_context_connect, int, pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api); -LL_PA_SYM(true, pa_context_disconnect, void, pa_context *c); -LL_PA_SYM(true, pa_context_get_sink_input_info, pa_operation*, pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_get_sink_input_info_list, pa_operation*, pa_context *c, pa_sink_input_info_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_get_state, pa_context_state_t, pa_context *c); -LL_PA_SYM(true, pa_context_new_with_proplist, pa_context*, pa_mainloop_api *mainloop, const char *name, pa_proplist *proplist); -LL_PA_SYM(true, pa_context_set_sink_input_volume, pa_operation*, pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_set_state_callback, void, pa_context *c, pa_context_notify_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_set_subscribe_callback, void, pa_context *c, pa_context_subscribe_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_subscribe, pa_operation*, pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata); -LL_PA_SYM(true, pa_context_unref, void, pa_context *c); -LL_PA_SYM(true, pa_cvolume_set, pa_cvolume*, pa_cvolume *a, unsigned channels, pa_volume_t v); -LL_PA_SYM(true, pa_operation_unref, void, pa_operation *o); -LL_PA_SYM(true, pa_proplist_free, void, pa_proplist* p); -LL_PA_SYM(true, pa_proplist_gets, const char*, pa_proplist *p, const char *key); -LL_PA_SYM(true, pa_proplist_new, pa_proplist*, void); -LL_PA_SYM(true, pa_proplist_sets, int, pa_proplist *p, const char *key, const char *value); -LL_PA_SYM(true, pa_sw_volume_from_linear, pa_volume_t, double v); - -// optional symbols to grab diff --git a/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc deleted file mode 100755 index abf628c96c..0000000000 --- a/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc +++ /dev/null @@ -1,6 +0,0 @@ -// required symbols to grab -LL_PA_SYM(true, pa_glib_mainloop_free, void, pa_glib_mainloop* g); -LL_PA_SYM(true, pa_glib_mainloop_get_api, pa_mainloop_api*, pa_glib_mainloop* g); -LL_PA_SYM(true, pa_glib_mainloop_new, pa_glib_mainloop *, GMainContext *c); - -// optional symbols to grab diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp deleted file mode 100755 index 3edeef51e3..0000000000 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ /dev/null @@ -1,1481 +0,0 @@ -/** - * @file media_plugin_webkit.cpp - * @brief Webkit plugin for LLMedia API plugin system - * - * @cond - * $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$ - * @endcond - */ -#include "llqtwebkit.h" -#include "linden_common.h" -#include "indra_constants.h" // for indra keyboard codes - -#include "lltimer.h" -#include "llgl.h" - -#include "llplugininstance.h" -#include "llpluginmessage.h" -#include "llpluginmessageclasses.h" -#include "media_plugin_base.h" - -// set to 1 if you're using the version of llqtwebkit that's QPixmap-ified -#if LL_LINUX -# define LL_QTWEBKIT_USES_PIXMAPS 0 -extern "C" { -# include <glib.h> -# include <glib-object.h> -} -#else -# define LL_QTWEBKIT_USES_PIXMAPS 0 -#endif // LL_LINUX - -# include "volume_catcher.h" - -#if LL_WINDOWS -# include <direct.h> -#else -# include <unistd.h> -# include <stdlib.h> -#endif - -#if LL_WINDOWS - // *NOTE:Mani - This captures the module handle for the dll. This is used below - // to get the path to this dll for webkit initialization. - // I don't know how/if this can be done with apr... - namespace { HMODULE gModuleHandle;}; - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) - { - gModuleHandle = (HMODULE) hinstDLL; - return TRUE; - } -#endif - -//////////////////////////////////////////////////////////////////////////////// -// -class MediaPluginWebKit : - public MediaPluginBase, - public LLEmbeddedBrowserWindowObserver -{ -public: - MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data); - ~MediaPluginWebKit(); - - /*virtual*/ void receiveMessage(const char *message_string); - -private: - - std::string mProfileDir; - std::string mHostLanguage; - std::string mUserAgent; - bool mCookiesEnabled; - bool mJavascriptEnabled; - bool mPluginsEnabled; - bool mEnableMediaPluginDebugging; - - enum - { - INIT_STATE_UNINITIALIZED, // LLQtWebkit hasn't been set up yet - INIT_STATE_INITIALIZED, // LLQtWebkit has been set up, but no browser window has been created yet. - INIT_STATE_NAVIGATING, // Browser instance has been set up and initial navigate to about:blank has been issued - INIT_STATE_NAVIGATE_COMPLETE, // initial navigate to about:blank has completed - INIT_STATE_WAIT_REDRAW, // First real navigate begin has been received, waiting for page changed event to start handling redraws - INIT_STATE_WAIT_COMPLETE, // Waiting for first real navigate complete event - INIT_STATE_RUNNING // All initialization gymnastics are complete. - }; - int mBrowserWindowId; - int mInitState; - std::string mInitialNavigateURL; - bool mNeedsUpdate; - - bool mCanCut; - bool mCanCopy; - bool mCanPaste; - int mLastMouseX; - int mLastMouseY; - bool mFirstFocus; - F32 mBackgroundR; - F32 mBackgroundG; - F32 mBackgroundB; - std::string mTarget; - LLTimer mElapsedTime; - - VolumeCatcher mVolumeCatcher; - - void postDebugMessage( const std::string& msg ) - { - if ( mEnableMediaPluginDebugging ) - { - std::stringstream str; - str << "@Media Msg> " << "[" << (double)mElapsedTime.getElapsedTimeF32() << "] -- " << msg; - - LLPluginMessage debug_message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "debug_message"); - debug_message.setValue("message_text", str.str()); - debug_message.setValue("message_level", "info"); - sendMessage(debug_message); - } - } - - void setInitState(int state) - { -// std::cerr << "changing init state to " << state << std::endl; - mInitState = state; - } - - //////////////////////////////////////////////////////////////////////////////// - // - void update(int milliseconds) - { -#if LL_QTLINUX_DOESNT_HAVE_GLIB - // pump glib generously, as Linux browser plugins are on the - // glib main loop, even if the browser itself isn't - ugh - // This is NOT NEEDED if Qt itself was built with glib - // mainloop integration. - GMainContext *mainc = g_main_context_default(); - while(g_main_context_iteration(mainc, FALSE)); -#endif // LL_QTLINUX_DOESNT_HAVE_GLIB - - // pump qt - LLQtWebKit::getInstance()->pump( milliseconds ); - - mVolumeCatcher.pump(); - - checkEditState(); - - if(mInitState == INIT_STATE_NAVIGATE_COMPLETE) - { - if(!mInitialNavigateURL.empty()) - { - // We already have the initial navigate URL -- kick off the navigate. - LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, mInitialNavigateURL ); - mInitialNavigateURL.clear(); - } - } - - if ( (mInitState > INIT_STATE_WAIT_REDRAW) && mNeedsUpdate ) - { - const unsigned char* browser_pixels = LLQtWebKit::getInstance()->grabBrowserWindow( mBrowserWindowId ); - - unsigned int rowspan = LLQtWebKit::getInstance()->getBrowserRowSpan( mBrowserWindowId ); - unsigned int height = LLQtWebKit::getInstance()->getBrowserHeight( mBrowserWindowId ); -#if !LL_QTWEBKIT_USES_PIXMAPS - unsigned int buffer_size = rowspan * height; -#endif // !LL_QTWEBKIT_USES_PIXMAPS - -// std::cerr << "webkit plugin: updating" << std::endl; - - // TODO: should get rid of this memcpy if possible - if ( mPixels && browser_pixels ) - { -// std::cerr << " memcopy of " << buffer_size << " bytes" << std::endl; - -#if LL_QTWEBKIT_USES_PIXMAPS - // copy the pixel data upside-down because of the co-ord system - for (int y=0; y<height; ++y) - { - memcpy( &mPixels[(height-y-1)*rowspan], &browser_pixels[y*rowspan], rowspan ); - } -#else - memcpy( mPixels, browser_pixels, buffer_size ); -#endif // LL_QTWEBKIT_USES_PIXMAPS - } - - if ( mWidth > 0 && mHeight > 0 ) - { -// std::cerr << "Setting dirty, " << mWidth << " x " << mHeight << std::endl; - setDirty( 0, 0, mWidth, mHeight ); - } - - mNeedsUpdate = false; - }; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - bool initBrowser() - { - // already initialized - if ( mInitState > INIT_STATE_UNINITIALIZED ) - return true; - - // set up directories - char cwd[ FILENAME_MAX ]; // I *think* this is defined on all platforms we use - if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) - { - LL_WARNS() << "Couldn't get cwd - probably too long - failing to init." << LL_ENDL; - return false; - } - std::string application_dir = std::string( cwd ); - -#if LL_LINUX - // take care to initialize glib properly, because some - // versions of Qt don't, and we indirectly need it for (some - // versions of) Flash to not crash the browser. - if (!g_thread_supported ()) g_thread_init (NULL); - g_type_init(); -#endif - -#if LL_DARWIN - // When running under the Xcode debugger, there's a setting called "Break on Debugger()/DebugStr()" which defaults to being turned on. - // This causes the environment variable USERBREAK to be set to 1, which causes these legacy calls to break into the debugger. - // This wouldn't cause any problems except for the fact that the current release version of the Flash plugin has a call to Debugger() in it - // which gets hit when the plugin is probed by webkit. - // Unsetting the environment variable here works around this issue. - unsetenv("USERBREAK"); -#endif - -#if LL_WINDOWS - //*NOTE:Mani - On windows, at least, the component path is the - // location of this dll's image file. - std::string component_dir; - char dll_path[_MAX_PATH]; - DWORD len = GetModuleFileNameA(gModuleHandle, (LPCH)&dll_path, _MAX_PATH); - while(len && dll_path[ len ] != ('\\') ) - { - len--; - } - if(len >= 0) - { - dll_path[len] = 0; - component_dir = dll_path; - } - else - { - // *NOTE:Mani - This case should be an rare exception. - // GetModuleFileNameA should always give you a full path, no? - component_dir = application_dir; - } -#else - std::string component_dir = application_dir; -#endif - - // debug spam sent to viewer and displayed in the log as usual - postDebugMessage( "Component dir set to: " + component_dir ); - - // window handle - needed on Windows and must be app window. -#if LL_WINDOWS - char window_title[ MAX_PATH ]; - GetConsoleTitleA( window_title, MAX_PATH ); - void* native_window_handle = (void*)FindWindowA( NULL, window_title ); -#else - void* native_window_handle = 0; -#endif - - // main browser initialization - bool result = LLQtWebKit::getInstance()->init( application_dir, component_dir, mProfileDir, native_window_handle ); - if ( result ) - { - mInitState = INIT_STATE_INITIALIZED; - - // debug spam sent to viewer and displayed in the log as usual - postDebugMessage( "browser initialized okay" ); - - return true; - }; - - // debug spam sent to viewer and displayed in the log as usual - postDebugMessage( "browser nOT initialized." ); - - return false; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - bool initBrowserWindow() - { - // already initialized - if ( mInitState > INIT_STATE_INITIALIZED ) - return true; - - // not enough information to initialize the browser yet. - if ( mWidth < 0 || mHeight < 0 || mDepth < 0 || - mTextureWidth < 0 || mTextureHeight < 0 ) - { - return false; - }; - - // Set up host language before creating browser window - if(!mHostLanguage.empty()) - { - LLQtWebKit::getInstance()->setHostLanguage(mHostLanguage); - postDebugMessage( "Setting language to " + mHostLanguage ); - } - - // turn on/off cookies based on what host app tells us - LLQtWebKit::getInstance()->enableCookies( mCookiesEnabled ); - - // turn on/off plugins based on what host app tells us - LLQtWebKit::getInstance()->enablePlugins( mPluginsEnabled ); - - // turn on/off Javascript based on what host app tells us -#if LLQTWEBKIT_API_VERSION >= 11 - LLQtWebKit::getInstance()->enableJavaScript( mJavascriptEnabled ); -#else - LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled ); -#endif - - std::stringstream str; - str << "Cookies enabled = " << mCookiesEnabled << ", plugins enabled = " << mPluginsEnabled << ", Javascript enabled = " << mJavascriptEnabled; - postDebugMessage( str.str() ); - - // create single browser window - mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight, mTarget); - - str.str(""); - str.clear(); - str << "Setting browser window size to " << mWidth << " x " << mHeight; - postDebugMessage( str.str() ); - - // tell LLQtWebKit about the size of the browser window - LLQtWebKit::getInstance()->setSize( mBrowserWindowId, mWidth, mHeight ); - - // observer events that LLQtWebKit emits - LLQtWebKit::getInstance()->addObserver( mBrowserWindowId, this ); - - // append details to agent string - LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent ); - postDebugMessage( "Updating user agent with " + mUserAgent ); - -#if !LL_QTWEBKIT_USES_PIXMAPS - // don't flip bitmap - LLQtWebKit::getInstance()->flipWindow( mBrowserWindowId, true ); -#endif // !LL_QTWEBKIT_USES_PIXMAPS - - // set background color - // convert background color channels from [0.0, 1.0] to [0, 255]; - LLQtWebKit::getInstance()->setBackgroundColor( mBrowserWindowId, int(mBackgroundR * 255.0f), int(mBackgroundG * 255.0f), int(mBackgroundB * 255.0f) ); - - // Set state _before_ starting the navigate, since onNavigateBegin might get called before this call returns. - setInitState(INIT_STATE_NAVIGATING); - - // Don't do this here -- it causes the dreaded "white flash" when loading a browser instance. - // FIXME: Re-added this because navigating to a "page" initializes things correctly - especially - // for the HTTP AUTH dialog issues (DEV-41731). Will fix at a later date. - // Build a data URL like this: "data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#RRGGBB%22%3E%3C/body%3E%3C/html%3E" - // where RRGGBB is the background color in HTML style - std::stringstream url; - - url << "data:text/html,%3Chtml%3E%3Cbody%20bgcolor=%22#"; - // convert background color channels from [0.0, 1.0] to [0, 255]; - url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundR * 255.0f); - url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundG * 255.0f); - url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundB * 255.0f); - url << "%22%3E%3C/body%3E%3C/html%3E"; - - //LL_DEBUGS() << "data url is: " << url.str() << LL_ENDL; - - // always display loading overlay now -#if LLQTWEBKIT_API_VERSION >= 16 - LLQtWebKit::getInstance()->enableLoadingOverlay(mBrowserWindowId, true); -#else - LL_WARNS() << "Ignoring enableLoadingOverlay() call (llqtwebkit version is too old)." << LL_ENDL; -#endif - str.clear(); - str << "Loading overlay enabled = " << mEnableMediaPluginDebugging << " for mBrowserWindowId = " << mBrowserWindowId; - postDebugMessage( str.str() ); - - LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, url.str() ); -// LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, "about:blank" ); - - return true; - } - - void setVolume(F32 vol); - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onCursorChanged(const EventType& event) - { - LLQtWebKit::ECursor llqt_cursor = (LLQtWebKit::ECursor)event.getIntValue(); - std::string name; - - switch(llqt_cursor) - { - case LLQtWebKit::C_ARROW: - name = "arrow"; - break; - case LLQtWebKit::C_IBEAM: - name = "ibeam"; - break; - case LLQtWebKit::C_SPLITV: - name = "splitv"; - break; - case LLQtWebKit::C_SPLITH: - name = "splith"; - break; - case LLQtWebKit::C_POINTINGHAND: - name = "hand"; - break; - - default: - LL_WARNS() << "Unknown cursor ID: " << (int)llqt_cursor << LL_ENDL; - break; - } - - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "cursor_changed"); - message.setValue("name", name); - sendMessage(message); - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onPageChanged( const EventType& event ) - { - if(mInitState == INIT_STATE_WAIT_REDRAW) - { - setInitState(INIT_STATE_WAIT_COMPLETE); - } - - // flag that an update is required - mNeedsUpdate = true; - }; - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onNavigateBegin(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin"); - message.setValue("uri", event.getEventUri()); - message.setValueBoolean("history_back_available", LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_BACK)); - message.setValueBoolean("history_forward_available", LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_FORWARD)); - sendMessage(message); - - // debug spam sent to viewer and displayed in the log as usual - postDebugMessage( "Navigate begin event at: " + event.getEventUri() ); - - setStatus(STATUS_LOADING); - } - - if(mInitState == INIT_STATE_NAVIGATE_COMPLETE) - { - // Skip the WAIT_REDRAW state now -- with the right background color set, it should no longer be necessary. -// setInitState(INIT_STATE_WAIT_REDRAW); - setInitState(INIT_STATE_WAIT_COMPLETE); - } - - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onNavigateComplete(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - if(mInitState < INIT_STATE_RUNNING) - { - setInitState(INIT_STATE_RUNNING); - - // Clear the history, so the "back" button doesn't take you back to "about:blank". - LLQtWebKit::getInstance()->clearHistory(mBrowserWindowId); - } - - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete"); - message.setValue("uri", event.getEventUri()); - message.setValueS32("result_code", event.getIntValue()); - message.setValue("result_string", event.getStringValue()); - message.setValueBoolean("history_back_available", LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_BACK)); - message.setValueBoolean("history_forward_available", LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_FORWARD)); - sendMessage(message); - - setStatus(STATUS_LOADED); - } - else if(mInitState == INIT_STATE_NAVIGATING) - { - setInitState(INIT_STATE_NAVIGATE_COMPLETE); - } - - // debug spam sent to viewer and displayed in the log as usual - postDebugMessage( "Navigate complete event at: " + event.getEventUri() ); - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onUpdateProgress(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "progress"); - message.setValueS32("percent", event.getIntValue()); - sendMessage(message); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onStatusTextChange(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "status_text"); - message.setValue("status", event.getStringValue()); - sendMessage(message); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onTitleChange(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text"); - message.setValue("name", event.getStringValue()); - sendMessage(message); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onNavigateErrorPage(const EventType& event) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_error_page"); - message.setValueS32("status_code", event.getIntValue()); - sendMessage(message); - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onLocationChange(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "location_changed"); - message.setValue("uri", event.getEventUri()); - sendMessage(message); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onClickLinkHref(const EventType& event) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href"); - message.setValue("uri", event.getEventUri()); - message.setValue("target", event.getStringValue()); - message.setValue("uuid", event.getStringValue2()); - sendMessage(message); - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onClickLinkNoFollow(const EventType& event) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_nofollow"); - message.setValue("uri", event.getEventUri()); -#if LLQTWEBKIT_API_VERSION >= 7 - message.setValue("nav_type", event.getNavigationType()); -#else - message.setValue("nav_type", "clicked"); -#endif - sendMessage(message); - } - - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onCookieChanged(const EventType& event) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "cookie_set"); - message.setValue("cookie", event.getStringValue()); - // These could be passed through as well, but aren't really needed. -// message.setValue("uri", event.getEventUri()); -// message.setValueBoolean("dead", (event.getIntValue() != 0)) - - // debug spam - postDebugMessage( "Sending cookie_set message from plugin: " + event.getStringValue() ); - - 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(); - } - - std::string mAuthUsername; - std::string mAuthPassword; - bool mAuthOK; - - //////////////////////////////////////////////////////////////////////////////// - // virtual - bool onAuthRequest(const std::string &in_url, const std::string &in_realm, std::string &out_username, std::string &out_password) - { - mAuthOK = false; - - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "auth_request"); - message.setValue("url", in_url); - message.setValue("realm", in_realm); - 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); - - if(mAuthOK) - { - out_username = mAuthUsername; - out_password = mAuthPassword; - } - - return mAuthOK; - } - - void authResponse(LLPluginMessage &message) - { - mAuthOK = message.getValueBoolean("ok"); - if(mAuthOK) - { - mAuthUsername = message.getValue("username"); - mAuthPassword = message.getValue("password"); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // virtual - void onLinkHovered(const EventType& event) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "link_hovered"); - message.setValue("link", event.getEventUri()); - message.setValue("title", event.getStringValue()); - message.setValue("text", event.getStringValue2()); - sendMessage(message); - } - } - - LLQtWebKit::EKeyboardModifier decodeModifiers(std::string &modifiers) - { - int result = 0; - - if(modifiers.find("shift") != std::string::npos) - result |= LLQtWebKit::KM_MODIFIER_SHIFT; - - if(modifiers.find("alt") != std::string::npos) - result |= LLQtWebKit::KM_MODIFIER_ALT; - - if(modifiers.find("control") != std::string::npos) - result |= LLQtWebKit::KM_MODIFIER_CONTROL; - - if(modifiers.find("meta") != std::string::npos) - result |= LLQtWebKit::KM_MODIFIER_META; - - return (LLQtWebKit::EKeyboardModifier)result; - } - - //////////////////////////////////////////////////////////////////////////////// - // - void deserializeKeyboardData( LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers ) - { - native_scan_code = 0; - native_virtual_key = 0; - native_modifiers = 0; - - if( native_key_data.isMap() ) - { -#if LL_DARWIN - native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger()); - native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger()); - native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); -#elif LL_WINDOWS - native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); - native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); - // TODO: I don't think we need to do anything with native modifiers here -- please verify -#elif LL_LINUX - native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); - native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); - native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); -#else - // Add other platforms here as needed -#endif - }; - }; - - //////////////////////////////////////////////////////////////////////////////// - // - void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) - { - // The incoming values for 'key' will be the ones from indra_constants.h - std::string utf8_text; - - if(key < KEY_SPECIAL) - { - // Low-ascii characters need to get passed through. - utf8_text = (char)key; - } - - // Any special-case handling we want to do for particular keys... - switch((KEY)key) - { - // ASCII codes for some standard keys - case LLQtWebKit::KEY_BACKSPACE: utf8_text = (char)8; break; - case LLQtWebKit::KEY_TAB: utf8_text = (char)9; break; - case LLQtWebKit::KEY_RETURN: utf8_text = (char)13; break; - case LLQtWebKit::KEY_PAD_RETURN: utf8_text = (char)13; break; - case LLQtWebKit::KEY_ESCAPE: utf8_text = (char)27; break; - - default: - break; - } - -// std::cerr << "key event " << (int)key_event << ", native_key_data = " << native_key_data << std::endl; - - uint32_t native_scan_code = 0; - uint32_t native_virtual_key = 0; - uint32_t native_modifiers = 0; - deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers ); - - LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, key_event, (uint32_t)key, utf8_text.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); - - checkEditState(); - }; - - //////////////////////////////////////////////////////////////////////////////// - // - void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) - { - uint32_t key = LLQtWebKit::KEY_NONE; - -// std::cerr << "unicode input, native_key_data = " << native_key_data << std::endl; - - if(utf8str.size() == 1) - { - // The only way a utf8 string can be one byte long is if it's actually a single 7-bit ascii character. - // In this case, use it as the key value. - key = utf8str[0]; - } - - uint32_t native_scan_code = 0; - uint32_t native_virtual_key = 0; - uint32_t native_modifiers = 0; - deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers ); - - LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); - LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); - - checkEditState(); - }; - - void checkEditState(void) - { - bool can_cut = LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_EDIT_CUT); - bool can_copy = LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_EDIT_COPY); - bool can_paste = LLQtWebKit::getInstance()->userActionIsEnabled( mBrowserWindowId, LLQtWebKit::UA_EDIT_PASTE); - - if((can_cut != mCanCut) || (can_copy != mCanCopy) || (can_paste != mCanPaste)) - { - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_state"); - - if(can_cut != mCanCut) - { - mCanCut = can_cut; - message.setValueBoolean("cut", can_cut); - } - - if(can_copy != mCanCopy) - { - mCanCopy = can_copy; - message.setValueBoolean("copy", can_copy); - } - - if(can_paste != mCanPaste) - { - mCanPaste = can_paste; - message.setValueBoolean("paste", can_paste); - } - - sendMessage(message); - - } - } - - 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; - } - -}; - -MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data) : - MediaPluginBase(host_send_func, host_user_data) -{ -// std::cerr << "MediaPluginWebKit constructor" << std::endl; - - mBrowserWindowId = 0; - mInitState = INIT_STATE_UNINITIALIZED; - mNeedsUpdate = true; - mCanCut = false; - mCanCopy = false; - mCanPaste = false; - mLastMouseX = 0; - mLastMouseY = 0; - mFirstFocus = true; - mBackgroundR = 0.0f; - mBackgroundG = 0.0f; - mBackgroundB = 0.0f; - - mHostLanguage = "en"; // default to english - mJavascriptEnabled = true; // default to on - mPluginsEnabled = true; // default to on - mEnableMediaPluginDebugging = false; - mUserAgent = "LLPluginMedia Web Browser"; - - mElapsedTime.reset(); -} - -MediaPluginWebKit::~MediaPluginWebKit() -{ - // unhook observer - LLQtWebKit::getInstance()->remObserver( mBrowserWindowId, this ); - - // clean up - LLQtWebKit::getInstance()->reset(); - -// std::cerr << "MediaPluginWebKit destructor" << std::endl; -} - -void MediaPluginWebKit::receiveMessage(const char *message_string) -{ -// std::cerr << "MediaPluginWebKit::receiveMessage: received message: \"" << message_string << "\"" << std::endl; - LLPluginMessage message_in; - - if(message_in.parse(message_string) >= 0) - { - std::string message_class = message_in.getClass(); - std::string message_name = message_in.getName(); - if(message_class == LLPLUGIN_MESSAGE_CLASS_BASE) - { - if(message_name == "init") - { - LLPluginMessage message("base", "init_response"); - LLSD versions = LLSD::emptyMap(); - versions[LLPLUGIN_MESSAGE_CLASS_BASE] = LLPLUGIN_MESSAGE_CLASS_BASE_VERSION; - versions[LLPLUGIN_MESSAGE_CLASS_MEDIA] = LLPLUGIN_MESSAGE_CLASS_MEDIA_VERSION; - versions[LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER] = LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER_VERSION; - message.setValueLLSD("versions", versions); - - std::string plugin_version = "Webkit media plugin, Webkit version "; - plugin_version += LLQtWebKit::getInstance()->getVersion(); - message.setValue("plugin_version", plugin_version); - sendMessage(message); - } - else if(message_name == "idle") - { - // no response is necessary here. - F64 time = message_in.getValueReal("time"); - - // Convert time to milliseconds for update() - update((int)(time * 1000.0f)); - } - else if(message_name == "cleanup") - { - // DTOR most likely won't be called but the recent change to the way this process - // is (not) killed means we see this message and can do what we need to here. - // Note: this cleanup is ultimately what writes cookies to the disk - LLQtWebKit::getInstance()->remObserver( mBrowserWindowId, this ); - LLQtWebKit::getInstance()->reset(); - } - else if(message_name == "shm_added") - { - SharedSegmentInfo info; - info.mAddress = message_in.getValuePointer("address"); - info.mSize = (size_t)message_in.getValueS32("size"); - std::string name = message_in.getValue("name"); - -// std::cerr << "MediaPluginWebKit::receiveMessage: shared memory added, name: " << name -// << ", size: " << info.mSize -// << ", address: " << info.mAddress -// << std::endl; - - mSharedSegments.insert(SharedSegmentMap::value_type(name, info)); - - } - else if(message_name == "shm_remove") - { - std::string name = message_in.getValue("name"); - -// std::cerr << "MediaPluginWebKit::receiveMessage: shared memory remove, name = " << name << std::endl; - - SharedSegmentMap::iterator iter = mSharedSegments.find(name); - if(iter != mSharedSegments.end()) - { - if(mPixels == iter->second.mAddress) - { - // This is the currently active pixel buffer. Make sure we stop drawing to it. - mPixels = NULL; - mTextureSegmentName.clear(); - } - mSharedSegments.erase(iter); - } - else - { -// std::cerr << "MediaPluginWebKit::receiveMessage: unknown shared memory region!" << std::endl; - } - - // Send the response so it can be cleaned up. - LLPluginMessage message("base", "shm_remove_response"); - message.setValue("name", name); - sendMessage(message); - } - else - { -// std::cerr << "MediaPluginWebKit::receiveMessage: unknown base message: " << message_name << std::endl; - } - } - else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME) - { - if(message_name == "set_volume") - { - F32 volume = (F32)message_in.getValueReal("volume"); - setVolume(volume); - } - } - else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) - { - 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()) - { - - // Plugin gets to decide the texture parameters to use. - mDepth = 4; - - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params"); - message.setValueS32("default_width", 1024); - message.setValueS32("default_height", 1024); - message.setValueS32("depth", mDepth); - message.setValueU32("internalformat", GL_RGBA); - #if LL_QTWEBKIT_USES_PIXMAPS - message.setValueU32("format", GL_BGRA_EXT); // I hope this isn't system-dependant... is it? If so, we'll have to check the root window's pixel layout or something... yuck. - #else - message.setValueU32("format", GL_RGBA); - #endif // LL_QTWEBKIT_USES_PIXMAPS - message.setValueU32("type", GL_UNSIGNED_BYTE); - message.setValueBoolean("coords_opengl", true); - sendMessage(message); - } - else - { - // if initialization failed, we're done. - mDeleteMe = true; - } - - } - else if(message_name == "set_user_data_path") - { - std::string user_data_path = message_in.getValue("path"); // n.b. always has trailing platform-specific dir-delimiter - mProfileDir = user_data_path + "browser_profile"; - - // FIXME: Should we do anything with this if it comes in after the browser has been initialized? - } - else if(message_name == "set_language_code") - { - mHostLanguage = message_in.getValue("language"); - - // FIXME: Should we do anything with this if it comes in after the browser has been initialized? - } - else if(message_name == "plugins_enabled") - { - mPluginsEnabled = message_in.getValueBoolean("enable"); - } - else if(message_name == "javascript_enabled") - { - mJavascriptEnabled = message_in.getValueBoolean("enable"); - } - else if(message_name == "size_change") - { - std::string name = message_in.getValue("name"); - S32 width = message_in.getValueS32("width"); - S32 height = message_in.getValueS32("height"); - S32 texture_width = message_in.getValueS32("texture_width"); - S32 texture_height = message_in.getValueS32("texture_height"); - mBackgroundR = (F32)message_in.getValueReal("background_r"); - mBackgroundG = (F32)message_in.getValueReal("background_g"); - mBackgroundB = (F32)message_in.getValueReal("background_b"); -// mBackgroundA = message_in.setValueReal("background_a"); // Ignore any alpha - - if(!name.empty()) - { - // Find the shared memory region with this name - SharedSegmentMap::iterator iter = mSharedSegments.find(name); - if(iter != mSharedSegments.end()) - { - mPixels = (unsigned char*)iter->second.mAddress; - mWidth = width; - mHeight = height; - - if(initBrowserWindow()) - { - - // size changed so tell the browser - LLQtWebKit::getInstance()->setSize( mBrowserWindowId, mWidth, mHeight ); - - // std::cerr << "webkit plugin: set size to " << mWidth << " x " << mHeight - // << ", rowspan is " << LLQtWebKit::getInstance()->getBrowserRowSpan(mBrowserWindowId) << std::endl; - - S32 real_width = LLQtWebKit::getInstance()->getBrowserRowSpan(mBrowserWindowId) / LLQtWebKit::getInstance()->getBrowserDepth(mBrowserWindowId); - - // The actual width the browser will be drawing to is probably smaller... let the host know by modifying texture_width in the response. - if(real_width <= texture_width) - { - texture_width = real_width; - } - else - { - // This won't work -- it'll be bigger than the allocated memory. This is a fatal error. - // std::cerr << "Fatal error: browser rowbytes greater than texture width" << std::endl; - mDeleteMe = true; - return; - } - } - else - { - // Setting up the browser window failed. This is a fatal error. - mDeleteMe = true; - } - - - mTextureWidth = texture_width; - mTextureHeight = texture_height; - - }; - }; - - LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response"); - message.setValue("name", name); - message.setValueS32("width", width); - message.setValueS32("height", height); - message.setValueS32("texture_width", texture_width); - message.setValueS32("texture_height", texture_height); - sendMessage(message); - - } - else if(message_name == "load_uri") - { - std::string uri = message_in.getValue("uri"); - -// std::cout << "loading URI: " << uri << std::endl; - - if(!uri.empty()) - { - if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) - { - LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, uri ); - } - else - { - mInitialNavigateURL = uri; - } - } - } - else if(message_name == "mouse_event") - { - std::string event = message_in.getValue("event"); - S32 button = message_in.getValueS32("button"); - mLastMouseX = message_in.getValueS32("x"); - mLastMouseY = message_in.getValueS32("y"); - std::string modifiers = message_in.getValue("modifiers"); - - // Treat unknown mouse events as mouse-moves. - LLQtWebKit::EMouseEvent mouse_event = LLQtWebKit::ME_MOUSE_MOVE; - if(event == "down") - { - mouse_event = LLQtWebKit::ME_MOUSE_DOWN; - } - else if(event == "up") - { - mouse_event = LLQtWebKit::ME_MOUSE_UP; - } - else if(event == "double_click") - { - mouse_event = LLQtWebKit::ME_MOUSE_DOUBLE_CLICK; - } - - LLQtWebKit::getInstance()->mouseEvent( mBrowserWindowId, mouse_event, button, mLastMouseX, mLastMouseY, decodeModifiers(modifiers)); - checkEditState(); - } - else if(message_name == "scroll_event") - { - S32 x = message_in.getValueS32("x"); - S32 y = message_in.getValueS32("y"); - std::string modifiers = message_in.getValue("modifiers"); - - // Incoming scroll events are adjusted so that 1 detent is approximately 1 unit. - // Qt expects 1 detent to be 120 units. - // It also seems that our y scroll direction is inverted vs. what Qt expects. - - x *= 120; - y *= -120; - - LLQtWebKit::getInstance()->scrollWheelEvent(mBrowserWindowId, mLastMouseX, mLastMouseY, x, y, decodeModifiers(modifiers)); - } - else if(message_name == "key_event") - { - std::string event = message_in.getValue("event"); - S32 key = message_in.getValueS32("key"); - std::string modifiers = message_in.getValue("modifiers"); - LLSD native_key_data = message_in.getValueLLSD("native_key_data"); - - // Treat unknown events as key-up for safety. - LLQtWebKit::EKeyEvent key_event = LLQtWebKit::KE_KEY_UP; - if(event == "down") - { - key_event = LLQtWebKit::KE_KEY_DOWN; - } - else if(event == "repeat") - { - key_event = LLQtWebKit::KE_KEY_REPEAT; - } - - keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data); - } - else if(message_name == "text_event") - { - std::string text = message_in.getValue("text"); - std::string modifiers = message_in.getValue("modifiers"); - LLSD native_key_data = message_in.getValueLLSD("native_key_data"); - - unicodeInput(text, decodeModifiers(modifiers), native_key_data); - } - if(message_name == "edit_cut") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_EDIT_CUT ); - checkEditState(); - } - if(message_name == "edit_copy") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_EDIT_COPY ); - checkEditState(); - } - if(message_name == "edit_paste") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_EDIT_PASTE ); - checkEditState(); - } - if(message_name == "pick_file_response") - { - onPickFileResponse(message_in.getValue("file")); - } - if(message_name == "auth_response") - { - authResponse(message_in); - } - else - if(message_name == "enable_media_plugin_debugging") - { - mEnableMediaPluginDebugging = message_in.getValueBoolean( "enable" ); - } - else - if(message_name == "js_enable_object") - { -#if LLQTWEBKIT_API_VERSION >= 9 - bool enable = message_in.getValueBoolean( "enable" ); - LLQtWebKit::getInstance()->setSLObjectEnabled( enable ); -#endif - } - else - if(message_name == "js_agent_location") - { -#if LLQTWEBKIT_API_VERSION >= 9 - F32 x = (F32)message_in.getValueReal("x"); - F32 y = (F32)message_in.getValueReal("y"); - F32 z = (F32)message_in.getValueReal("z"); - LLQtWebKit::getInstance()->setAgentLocation( x, y, z ); - LLQtWebKit::getInstance()->emitLocation(); -#endif - } - else - if(message_name == "js_agent_global_location") - { -#if LLQTWEBKIT_API_VERSION >= 9 - F32 x = (F32)message_in.getValueReal("x"); - F32 y = (F32)message_in.getValueReal("y"); - F32 z = (F32)message_in.getValueReal("z"); - LLQtWebKit::getInstance()->setAgentGlobalLocation( x, y, z ); - LLQtWebKit::getInstance()->emitLocation(); -#endif - } - else - if(message_name == "js_agent_orientation") - { -#if LLQTWEBKIT_API_VERSION >= 9 - F32 angle = (F32)message_in.getValueReal("angle"); - LLQtWebKit::getInstance()->setAgentOrientation( angle ); - LLQtWebKit::getInstance()->emitLocation(); -#endif - } - else - if(message_name == "js_agent_region") - { -#if LLQTWEBKIT_API_VERSION >= 9 - const std::string& region = message_in.getValue("region"); - LLQtWebKit::getInstance()->setAgentRegion( region ); - LLQtWebKit::getInstance()->emitLocation(); -#endif - } - else - if(message_name == "js_agent_maturity") - { -#if LLQTWEBKIT_API_VERSION >= 9 - const std::string& maturity = message_in.getValue("maturity"); - LLQtWebKit::getInstance()->setAgentMaturity( maturity ); - LLQtWebKit::getInstance()->emitMaturity(); -#endif - } - else - if(message_name == "js_agent_language") - { -#if LLQTWEBKIT_API_VERSION >= 9 - const std::string& language = message_in.getValue("language"); - LLQtWebKit::getInstance()->setAgentLanguage( language ); - LLQtWebKit::getInstance()->emitLanguage(); -#endif - } - else - { -// std::cerr << "MediaPluginWebKit::receiveMessage: unknown media message: " << message_string << std::endl; - } - } - else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER) - { - if(message_name == "focus") - { - bool val = message_in.getValueBoolean("focused"); - LLQtWebKit::getInstance()->focusBrowser( mBrowserWindowId, val ); - - if(mFirstFocus && val) - { - // On the first focus, post a tab key event. This fixes a problem with initial focus. - std::string empty; - keyEvent(LLQtWebKit::KE_KEY_DOWN, KEY_TAB, decodeModifiers(empty)); - keyEvent(LLQtWebKit::KE_KEY_UP, KEY_TAB, decodeModifiers(empty)); - mFirstFocus = false; - } - } - else if(message_name == "set_page_zoom_factor") - { -#if LLQTWEBKIT_API_VERSION >= 15 - F32 factor = (F32)message_in.getValueReal("factor"); - LLQtWebKit::getInstance()->setPageZoomFactor(factor); -#else - LL_WARNS() << "Ignoring setPageZoomFactor message (llqtwebkit version is too old)." << LL_ENDL; -#endif - } - else if(message_name == "clear_cache") - { - LLQtWebKit::getInstance()->clearCache(); - } - else if(message_name == "clear_cookies") - { - LLQtWebKit::getInstance()->clearAllCookies(); - } - else if(message_name == "enable_cookies") - { - mCookiesEnabled = message_in.getValueBoolean("enable"); - LLQtWebKit::getInstance()->enableCookies( mCookiesEnabled ); - } - else if(message_name == "enable_plugins") - { - mPluginsEnabled = message_in.getValueBoolean("enable"); - LLQtWebKit::getInstance()->enablePlugins( mPluginsEnabled ); - } - else if(message_name == "enable_javascript") - { - mJavascriptEnabled = message_in.getValueBoolean("enable"); - //LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled ); - } - else if(message_name == "set_cookies") - { - LLQtWebKit::getInstance()->setCookies(message_in.getValue("cookies")); - - // debug spam - postDebugMessage( "Plugin setting cookie: " + message_in.getValue("cookies") ); - } - else if(message_name == "proxy_setup") - { - bool val = message_in.getValueBoolean("enable"); - std::string host = message_in.getValue("host"); - int port = message_in.getValueS32("port"); - LLQtWebKit::getInstance()->enableProxy( val, host, port ); - } - else if(message_name == "browse_stop") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_STOP ); - } - else if(message_name == "browse_reload") - { - // foo = message_in.getValueBoolean("ignore_cache"); - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_RELOAD ); - } - else if(message_name == "browse_forward") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_FORWARD ); - } - else if(message_name == "browse_back") - { - LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_NAVIGATE_BACK ); - } - else if(message_name == "set_status_redirect") - { - int code = message_in.getValueS32("code"); - std::string url = message_in.getValue("url"); - if ( 404 == code ) // browser lib only supports 404 right now - { -#if LLQTWEBKIT_API_VERSION < 8 - LLQtWebKit::getInstance()->set404RedirectUrl( mBrowserWindowId, url ); -#endif - }; - } - else if(message_name == "set_user_agent") - { - mUserAgent = message_in.getValue("user_agent"); - LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent ); - } - else if(message_name == "show_web_inspector") - { -#if LLQTWEBKIT_API_VERSION >= 10 - bool val = message_in.getValueBoolean("show"); - LLQtWebKit::getInstance()->showWebInspector( val ); -#else - LL_WARNS() << "Ignoring showWebInspector message (llqtwebkit version is too old)." << LL_ENDL; -#endif - } - else if(message_name == "ignore_ssl_cert_errors") - { -#if LLQTWEBKIT_API_VERSION >= 3 - LLQtWebKit::getInstance()->setIgnoreSSLCertErrors( message_in.getValueBoolean("ignore") ); -#else - LL_WARNS() << "Ignoring ignore_ssl_cert_errors message (llqtwebkit version is too old)." << LL_ENDL; -#endif - } - else if(message_name == "add_certificate_file_path") - { -#if LLQTWEBKIT_API_VERSION >= 6 - LLQtWebKit::getInstance()->setCAFile( message_in.getValue("path") ); -#else - LL_WARNS() << "Ignoring add_certificate_file_path message (llqtwebkit version is too old)." << LL_ENDL; -#endif - } - else if(message_name == "init_history") - { - // Initialize browser history - LLSD history = message_in.getValueLLSD("history"); - // First, clear the URL history - LLQtWebKit::getInstance()->clearHistory(mBrowserWindowId); - // Then, add the history items in order - LLSD::array_iterator iter_history = history.beginArray(); - LLSD::array_iterator end_history = history.endArray(); - for(; iter_history != end_history; ++iter_history) - { - std::string url = (*iter_history).asString(); - if(! url.empty()) { - LLQtWebKit::getInstance()->prependHistoryUrl(mBrowserWindowId, url); - } - } - } - 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; - }; - } - else - { -// std::cerr << "MediaPluginWebKit::receiveMessage: unknown message class: " << message_class << std::endl; - }; - } -} - -void MediaPluginWebKit::setVolume(F32 volume) -{ - mVolumeCatcher.setVolume(volume); -} - -int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) -{ - MediaPluginWebKit *self = new MediaPluginWebKit(host_send_func, host_user_data); - *plugin_send_func = MediaPluginWebKit::staticReceiveMessage; - *plugin_user_data = (void*)self; - - return 0; -} - - diff --git a/indra/media_plugins/winmmshim/CMakeLists.txt b/indra/media_plugins/winmmshim/CMakeLists.txt index bf74f81809..6890589892 100755..100644 --- a/indra/media_plugins/winmmshim/CMakeLists.txt +++ b/indra/media_plugins/winmmshim/CMakeLists.txt @@ -22,9 +22,6 @@ set(winmm_shim_HEADER_FILES list(APPEND winmm_shim_SOURCE_FILES ${winmm_shim_HEADER_FILES}) -set_source_files_properties(${media_plugin_webkit_HEADER_FILES} - PROPERTIES HEADER_FILE_ONLY TRUE) - add_library(winmm_shim SHARED ${winmm_shim_SOURCE_FILES} diff --git a/indra/media_plugins/winmmshim/forwarding_api.cpp b/indra/media_plugins/winmmshim/forwarding_api.cpp index 33f0675028..33f0675028 100755..100644 --- a/indra/media_plugins/winmmshim/forwarding_api.cpp +++ b/indra/media_plugins/winmmshim/forwarding_api.cpp diff --git a/indra/media_plugins/winmmshim/forwarding_api.h b/indra/media_plugins/winmmshim/forwarding_api.h index 1418fc9e1d..1418fc9e1d 100755..100644 --- a/indra/media_plugins/winmmshim/forwarding_api.h +++ b/indra/media_plugins/winmmshim/forwarding_api.h diff --git a/indra/media_plugins/winmmshim/winmm_shim.cpp b/indra/media_plugins/winmmshim/winmm_shim.cpp index 78f7a9b0da..78f7a9b0da 100755..100644 --- a/indra/media_plugins/winmmshim/winmm_shim.cpp +++ b/indra/media_plugins/winmmshim/winmm_shim.cpp diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 24fac7a529..4f4db6ac87 100755..100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -43,7 +43,6 @@ include(OPENAL) include(OpenGL) include(OpenSSL) include(PNG) -include(Prebuilt) include(TemplateCheck) include(UI) include(UnixInstall) @@ -61,9 +60,6 @@ if(FMODEX) include_directories(${FMODEX_INCLUDE_DIR}) endif(FMODEX) -# install SLPlugin host executable and its dynamic-library plugins -use_prebuilt_binary(slplugins) - include_directories( ${DBUSGLIB_INCLUDE_DIRS} ${JSONCPP_INCLUDE_DIR} @@ -137,7 +133,6 @@ set(viewer_SOURCE_FILES llbreadcrumbview.cpp llbrowsernotification.cpp llbuycurrencyhtml.cpp - llcallbacklist.cpp llcallingcard.cpp llcapabilitylistener.cpp llcaphttpsender.cpp @@ -194,6 +189,8 @@ set(viewer_SOURCE_FILES lleventnotifier.cpp lleventpoll.cpp llexpandabletextbox.cpp + llexperienceassociationresponder.cpp + llexperiencelog.cpp llexternaleditor.cpp llface.cpp llfacebookconnect.cpp @@ -235,6 +232,9 @@ set(viewer_SOURCE_FILES llfloatereditwater.cpp llfloaterenvironmentsettings.cpp llfloaterevent.cpp + llfloaterexperiencepicker.cpp + llfloaterexperienceprofile.cpp + llfloaterexperiences.cpp llfloaterfacebook.cpp llfloaterflickr.cpp llfloaterfonttest.cpp @@ -259,6 +259,7 @@ set(viewer_SOURCE_FILES llfloaterlagmeter.cpp llfloaterland.cpp llfloaterlandholdings.cpp + llfloatermarketplacelistings.cpp llfloatermap.cpp llfloatermediasettings.cpp llfloatermemleak.cpp @@ -266,6 +267,7 @@ set(viewer_SOURCE_FILES llfloatermodeluploadbase.cpp llfloaternamedesc.cpp llfloaternotificationsconsole.cpp + llfloaternotificationstabbed.cpp llfloaterobjectweights.cpp llfloateropenobject.cpp llfloateroutbox.cpp @@ -400,6 +402,8 @@ set(viewer_SOURCE_FILES llnotificationgrouphandler.cpp llnotificationhandlerutil.cpp llnotificationhinthandler.cpp + llnotificationlistitem.cpp + llnotificationlistview.cpp llnotificationmanager.cpp llnotificationofferhandler.cpp llnotificationscripthandler.cpp @@ -415,11 +419,16 @@ set(viewer_SOURCE_FILES llpanelclassified.cpp llpanelcontents.cpp llpaneleditwearable.cpp + llpanelexperiencelisteditor.cpp + llpanelexperiencelog.cpp + llpanelexperiencepicker.cpp + llpanelexperiences.cpp llpanelface.cpp llpanelgenerictip.cpp llpanelgroup.cpp llpanelgroupbulk.cpp llpanelgroupbulkban.cpp + llpanelgroupexperiences.cpp llpanelgroupgeneral.cpp llpanelgroupinvite.cpp llpanelgrouplandmoney.cpp @@ -742,7 +751,6 @@ set(viewer_HEADER_FILES llbox.h llbreadcrumbview.h llbuycurrencyhtml.h - llcallbacklist.h llcallingcard.h llcapabilitylistener.h llcapabilityprovider.h @@ -800,6 +808,8 @@ set(viewer_HEADER_FILES lleventnotifier.h lleventpoll.h llexpandabletextbox.h + llexperienceassociationresponder.h + llexperiencelog.h llexternaleditor.h llface.h llfacebookconnect.h @@ -841,6 +851,9 @@ set(viewer_HEADER_FILES llfloatereditwater.h llfloaterenvironmentsettings.h llfloaterevent.h + llfloaterexperiencepicker.h + llfloaterexperienceprofile.h + llfloaterexperiences.h llfloaterfacebook.h llfloaterflickr.h llfloaterfonttest.h @@ -869,12 +882,14 @@ set(viewer_HEADER_FILES llfloaterland.h llfloaterlandholdings.h llfloatermap.h + llfloatermarketplacelistings.h llfloatermediasettings.h llfloatermemleak.h llfloatermodelpreview.h llfloatermodeluploadbase.h llfloaternamedesc.h llfloaternotificationsconsole.h + llfloaternotificationstabbed.h llfloaterobjectweights.h llfloateropenobject.h llfloateroutbox.h @@ -1002,6 +1017,8 @@ set(viewer_HEADER_FILES llnavigationbar.h llnetmap.h llnotificationhandler.h + llnotificationlistitem.h + llnotificationlistview.h llnotificationmanager.h llnotificationstorage.h lloutfitslist.h @@ -1014,12 +1031,17 @@ set(viewer_HEADER_FILES llpanelclassified.h llpanelcontents.h llpaneleditwearable.h + llpanelexperiencelisteditor.h + llpanelexperiencelog.h + llpanelexperiencepicker.h + llpanelexperiences.h llpanelface.h llpanelgenerictip.h llpanelgroup.h llpanelgroupbulk.h llpanelgroupbulkimpl.h llpanelgroupbulkban.h + llpanelgroupexperiences.h llpanelgroupgeneral.h llpanelgroupinvite.h llpanelgrouplandmoney.h @@ -1307,16 +1329,14 @@ source_group("CMake Rules" FILES ViewerInstall.cmake) # the viewer_version.txt file created here is for passing to viewer_manifest and autobuild # the summary.json file is created for the benefit of the TeamCity builds, where # it is used to provide descriptive information to the build results page -add_custom_target(generate_viewer_version ALL - COMMAND printf '${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}' > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - COMMAND printf '{"Type":"viewer","Version":"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}"}' > ${CMAKE_BINARY_DIR}/summary.json - COMMENT Generating viewer_version.txt for manifest processing - ) +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt" + "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\n") +file(WRITE "${CMAKE_BINARY_DIR}/summary.json" + "{\"Type\":\"viewer\",\"Version\":\"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\"}\n") set_source_files_properties( llversioninfo.cpp tests/llversioninfo_test.cpp PROPERTIES - DEPENDS generate_viewer_version # dummy dependency to force recompile every time COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake ) @@ -1347,7 +1367,6 @@ if (DARWIN) set(viewer_RESOURCE_FILES secondlife.icns macview.r - gpu_table.txt Info-SecondLife.plist SecondLife.xib/ # CMake doesn't seem to support Xcode language variants well just yet @@ -1674,8 +1693,6 @@ if (WINDOWS) LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF /LARGEADDRESSAWARE" ) - add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version) - if(USE_PRECOMPILED_HEADERS) set_target_properties( ${VIEWER_BINARY_NAME} @@ -1742,44 +1759,12 @@ if (WINDOWS) ${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt ${CMAKE_CURRENT_SOURCE_DIR}/featuretable_xp.txt ${ARCH_PREBUILT_DIRS_RELEASE}/libeay32.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtcore4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtgui4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtnetwork4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtopengl4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtwebkit4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/qtxmlpatterns4.dll ${ARCH_PREBUILT_DIRS_RELEASE}/ssleay32.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qgif4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qico4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qjpeg4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qmng4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qsvg4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/imageformats/qtiff4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qcncodecs4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qjpcodecs4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qkrcodecs4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qtwcodecs4.dll ${ARCH_PREBUILT_DIRS_DEBUG}/libeay32.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtcored4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtguid4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtnetworkd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtopengld4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtwebkitd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/qtxmlpatternsd4.dll ${ARCH_PREBUILT_DIRS_DEBUG}/ssleay32.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qgifd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qicod4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qjpegd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qmngd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qsvgd4.dll - ${ARCH_PREBUILT_DIRS_DEBUG}/imageformats/qtiffd4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qcncodecsd4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qjpcodecsd4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qkrcodecsd4.dll - ${ARCH_PREBUILT_DIRS_RELEASE}/codecs/qtwcodecsd4.dll SLPlugin media_plugin_quicktime - media_plugin_webkit + media_plugin_cef winmm_shim windows-crash-logger ) @@ -1824,10 +1809,10 @@ if (WINDOWS) add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts) endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) -## add_dependencies(${VIEWER_BINARY_NAME} -## SLPlugin -## windows-crash-logger -## ) + add_dependencies(${VIEWER_BINARY_NAME} + SLPlugin + windows-crash-logger + ) # sets the 'working directory' for debugging from visual studio. if (NOT UNATTENDED) @@ -1993,14 +1978,11 @@ if (LINUX) set(COPY_INPUT_DEPENDENCIES ${VIEWER_BINARY_NAME} linux-crash-logger -## SLPlugin -## media_plugin_webkit -## media_plugin_gstreamer010 + SLPlugin + media_plugin_gstreamer010 llcommon ) - add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version) - add_custom_command( OUTPUT ${product}.tar.bz2 COMMAND ${PYTHON_EXECUTABLE} @@ -2084,8 +2066,6 @@ if (DARWIN) "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Info.plist" ) - add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version) - add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${PYTHON_EXECUTABLE} @@ -2107,7 +2087,7 @@ if (DARWIN) ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) -##add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-crash-logger) + add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_cef mac-crash-logger) add_dependencies(${VIEWER_BINARY_NAME} mac-crash-logger) if (ENABLE_SIGNING) @@ -2118,7 +2098,6 @@ if (DARWIN) if (PACKAGE) add_custom_target(llpackage ALL DEPENDS ${VIEWER_BINARY_NAME}) - add_dependencies(llpackage generate_viewer_version) add_custom_command( TARGET llpackage POST_BUILD @@ -2162,20 +2141,19 @@ if (PACKAGE) if (DARWIN) list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}") # *TODO: Generate these search dirs in the cmake files related to each binary. -## list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/llplugin/slplugin/${CMAKE_CFG_INTDIR}") + list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/llplugin/slplugin/${CMAKE_CFG_INTDIR}") list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_crash_logger/${CMAKE_CFG_INTDIR}") -## list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/gstreamer010/${CMAKE_CFG_INTDIR}") -## list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/quicktime/${CMAKE_CFG_INTDIR}") -## list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/webkit/${CMAKE_CFG_INTDIR}") + list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/gstreamer010/${CMAKE_CFG_INTDIR}") + list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/quicktime/${CMAKE_CFG_INTDIR}") set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-darwin.tar.bz2") -## set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin mac-crash-logger") + set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin mac-crash-logger") set(VIEWER_EXE_GLOBS "'Second Life' mac-crash-logger") set(VIEWER_LIB_GLOB "*.dylib") endif (DARWIN) if (LINUX) list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/packaged") set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-linux.tar.bz2") -## set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin SLPlugin") + set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin SLPlugin") set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin") set(VIEWER_LIB_GLOB "*${CMAKE_SHARED_MODULE_SUFFIX}*") set(VIEWER_COPY_MANIFEST copy_l_viewer_manifest) @@ -2202,8 +2180,7 @@ if (PACKAGE) DEPENDS generate_breakpad_symbols.py VERBATIM) - add_custom_target(generate_breakpad_symbols DEPENDS "${VIEWER_SYMBOL_FILE}") - add_dependencies(generate_breakpad_symbols "${VIEWER_BINARY_NAME}" "${VIEWER_COPY_MANIFEST}") + add_custom_target(generate_breakpad_symbols DEPENDS "${VIEWER_SYMBOL_FILE}" "${VIEWER_BINARY_NAME}" "${VIEWER_COPY_MANIFEST}") add_dependencies(llpackage generate_breakpad_symbols) endif(RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) endif (PACKAGE) diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings index 041b8cea0b..041b8cea0b 100755..100644 --- a/indra/newview/English.lproj/InfoPlist.strings +++ b/indra/newview/English.lproj/InfoPlist.strings diff --git a/indra/newview/English.lproj/language.txt b/indra/newview/English.lproj/language.txt index bc0aa577f9..bc0aa577f9 100755..100644 --- a/indra/newview/English.lproj/language.txt +++ b/indra/newview/English.lproj/language.txt diff --git a/indra/newview/German.lproj/language.txt b/indra/newview/German.lproj/language.txt index c42e816f93..c42e816f93 100755..100644 --- a/indra/newview/German.lproj/language.txt +++ b/indra/newview/German.lproj/language.txt diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist index 9b8136a827..9b8136a827 100755..100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-SecondLife.plist diff --git a/indra/newview/Info-SecondLifeVorbis.plist b/indra/newview/Info-SecondLifeVorbis.plist index 9cb367eec1..9cb367eec1 100755..100644 --- a/indra/newview/Info-SecondLifeVorbis.plist +++ b/indra/newview/Info-SecondLifeVorbis.plist diff --git a/indra/newview/Japanese.lproj/language.txt b/indra/newview/Japanese.lproj/language.txt index c6e3ab6f3c..c6e3ab6f3c 100755..100644 --- a/indra/newview/Japanese.lproj/language.txt +++ b/indra/newview/Japanese.lproj/language.txt diff --git a/indra/newview/Korean.lproj/language.txt b/indra/newview/Korean.lproj/language.txt index b03ec72ee0..b03ec72ee0 100755..100644 --- a/indra/newview/Korean.lproj/language.txt +++ b/indra/newview/Korean.lproj/language.txt diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 7c35ff8c4b..4d54daddb6 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.28 +4.0.2 diff --git a/indra/newview/VertexCache.h b/indra/newview/VertexCache.h index 0eadad7e01..0eadad7e01 100755..100644 --- a/indra/newview/VertexCache.h +++ b/indra/newview/VertexCache.h diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 0b0d3e2adc..ac2247c815 100755..100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -19,7 +19,7 @@ else (IS_ARTWORK_PRESENT) message(STATUS "WARNING: Artwork is not present, and will not be installed") endif (IS_ARTWORK_PRESENT) -install(FILES featuretable_linux.txt featuretable_solaris.txt gpu_table.txt +install(FILES featuretable_linux.txt featuretable_solaris.txt DESTINATION ${APP_SHARE_DIR} ) diff --git a/indra/newview/VorbisFramework.h b/indra/newview/VorbisFramework.h index 874a22fc30..874a22fc30 100755..100644 --- a/indra/newview/VorbisFramework.h +++ b/indra/newview/VorbisFramework.h diff --git a/indra/newview/app_settings/CA.pem b/indra/newview/app_settings/CA.pem index 8c1b9a1f37..8c1b9a1f37 100755..100644 --- a/indra/newview/app_settings/CA.pem +++ b/indra/newview/app_settings/CA.pem diff --git a/indra/newview/app_settings/anim.ini b/indra/newview/app_settings/anim.ini index 63c84e544d..63c84e544d 100755..100644 --- a/indra/newview/app_settings/anim.ini +++ b/indra/newview/app_settings/anim.ini diff --git a/indra/newview/app_settings/autoreplace.xml b/indra/newview/app_settings/autoreplace.xml index 09d19f7b04..09d19f7b04 100755..100644 --- a/indra/newview/app_settings/autoreplace.xml +++ b/indra/newview/app_settings/autoreplace.xml diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index a9f6079630..a9f6079630 100755..100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index 7b329e2092..2cd6638042 100755..100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -118,6 +118,18 @@ tooltip_ref="Command_Marketplace_Tooltip" execute_function="Avatar.OpenMarketplace" /> + <command name="marketplacelistings" + available_in_toybox="true" + icon="Command_MktListings_Icon" + label_ref="Command_MarketplaceListings_Label" + tooltip_ref="Command_MarketplaceListings_Tooltip" + execute_function="Marketplace.Toggle" + execute_parameters="marketplace" + is_enabled_function="Marketplace.Enabled" + is_enabled_parameters="marketplace" + is_running_function="Floater.IsOpen" + is_running_parameters="marketplace_listings" + /> <command name="minimap" available_in_toybox="true" icon="Command_MiniMap_Icon" diff --git a/indra/newview/app_settings/filters/Autocontrast.xml b/indra/newview/app_settings/filters/Autocontrast.xml index ec3d7561bd..ec3d7561bd 100755..100644 --- a/indra/newview/app_settings/filters/Autocontrast.xml +++ b/indra/newview/app_settings/filters/Autocontrast.xml diff --git a/indra/newview/app_settings/filters/Miniature.xml b/indra/newview/app_settings/filters/Miniature.xml index 9aa8a87c6f..9aa8a87c6f 100755..100644 --- a/indra/newview/app_settings/filters/Miniature.xml +++ b/indra/newview/app_settings/filters/Miniature.xml diff --git a/indra/newview/app_settings/filters/Newspaper.xml b/indra/newview/app_settings/filters/Newspaper.xml index 6cfe319281..6cfe319281 100755..100644 --- a/indra/newview/app_settings/filters/Newspaper.xml +++ b/indra/newview/app_settings/filters/Newspaper.xml diff --git a/indra/newview/app_settings/filters/Toycamera.xml b/indra/newview/app_settings/filters/Toycamera.xml index 4e76f6b2fb..4e76f6b2fb 100755..100644 --- a/indra/newview/app_settings/filters/Toycamera.xml +++ b/indra/newview/app_settings/filters/Toycamera.xml diff --git a/indra/newview/app_settings/filters/Video.xml b/indra/newview/app_settings/filters/Video.xml index fe17f3950a..fe17f3950a 100755..100644 --- a/indra/newview/app_settings/filters/Video.xml +++ b/indra/newview/app_settings/filters/Video.xml diff --git a/indra/newview/app_settings/foldertypes.xml b/indra/newview/app_settings/foldertypes.xml index 0d539177f3..0d539177f3 100755..100644 --- a/indra/newview/app_settings/foldertypes.xml +++ b/indra/newview/app_settings/foldertypes.xml diff --git a/indra/newview/app_settings/grass.xml b/indra/newview/app_settings/grass.xml index 4fc3b798af..4fc3b798af 100755..100644 --- a/indra/newview/app_settings/grass.xml +++ b/indra/newview/app_settings/grass.xml diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index 5bc2e1b7e6..5bc2e1b7e6 100755..100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml index 17d3d3c9c5..17d3d3c9c5 100755..100644 --- a/indra/newview/app_settings/ignorable_dialogs.xml +++ b/indra/newview/app_settings/ignorable_dialogs.xml diff --git a/indra/newview/app_settings/keys.xml b/indra/newview/app_settings/keys.xml index a8037fec05..a8037fec05 100755..100644 --- a/indra/newview/app_settings/keys.xml +++ b/indra/newview/app_settings/keys.xml diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 4972472f67..9699eda96b 100755..100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -52,6 +52,7 @@ remote_data remote_data(integer event_type, key channel, key message_id, str http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL + # integer constants [word .1, .1, .5] TRUE Integer constant for Boolean operations @@ -714,6 +715,25 @@ TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture URL_REQUEST_GRANTED Used with http_request when a public URL is successfully granted URL_REQUEST_DENIED Used with http_request when a public URL is not available +XP_ERROR_NONE No error was detected +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Customer Support. +XP_ERROR_QUOTA_EXCEEDED An attempted write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The request failed due to agent content preferences. +XP_ERROR_UNKNOWN_ERROR Other unknown error. + + # float constants [word .3, .1, .5] PI 3.1415926535897932384626433832795 diff --git a/indra/newview/app_settings/keywords_lsl_default.xml b/indra/newview/app_settings/keywords_lsl_default.xml index cea7a58949..ddd287faf4 100755..100644 --- a/indra/newview/app_settings/keywords_lsl_default.xml +++ b/indra/newview/app_settings/keywords_lsl_default.xml @@ -2314,6 +2314,15 @@ <key>tooltip</key> <string>Gets the attachment point to which the object is attached.\nReturns 0 if the object is not an attachment (or is an avatar, etc).</string> </map> + <key>OBJECT_BODY_SHAPE_TYPE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>26</integer> + <key>tooltip</key> + <string>This is a flag used with llGetObjectDetails to get the body type of the avatar, based on shape data.\nIf no data is available, -1.0 is returned.\nThis is normally between 0 and 1.0, with 0.5 and larger considered 'male'</string> + </map> <key>OBJECT_CHARACTER_TIME</key> <map> <key>type</key> @@ -2323,6 +2332,15 @@ <key>tooltip</key> <string>Units in seconds</string> </map> + <key>OBJECT_CLICK_ACTION</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>28</integer> + <key>tooltip</key> + <string>This is a flag used with llGetObjectDetails to get the click action.\nThe default is 0</string> + </map> <key>OBJECT_CREATOR</key> <map> <key>type</key> @@ -2350,6 +2368,24 @@ <key>tooltip</key> <string>Gets the prims's group key. If id is an avatar, a NULL_KEY is returned.</string> </map> + <key>OBJECT_HOVER_HEIGHT</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>25</integer> + <key>tooltip</key> + <string>This is a flag used with llGetObjectDetails to get hover height of the avatar\nIf no data is available, 0.0 is returned.</string> + </map> + <key>OBJECT_LAST_OWNER_ID</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>27</integer> + <key>tooltip</key> + <string>Gets the object's last owner ID.</string> + </map> <key>OBJECT_NAME</key> <map> <key>type</key> @@ -3277,6 +3313,51 @@ <key>tooltip</key> <string>Play animation going forwards, then backwards.</string> </map> + <key>PRIM_ALPHA_MODE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>38</integer> + <key>tooltip</key> + <string>Prim parameter for materials using integer face, integer alpha_mode, integer alpha_cutoff.\nDefines how the alpha channel of the diffuse texture should be rendered.\nValid options for alpha_mode are PRIM_ALPHA_MODE_BLEND, _NONE, _MASK, and _EMISSIVE.\nalpha_cutoff is used only for PRIM_ALPHA_MODE_MASK.</string> + </map> + <key>PRIM_ALPHA_MODE_NONE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>0</integer> + <key>tooltip</key> + <string>Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse texture's alpha channel should be ignored.</string> + </map> + <key>PRIM_ALPHA_MODE_BLEND</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>1</integer> + <key>tooltip</key> + <string>Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse texture's alpha channel should be rendered as alpha-blended.</string> + </map> + <key>PRIM_ALPHA_MODE_MASK</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>2</integer> + <key>tooltip</key> + <string>Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse texture's alpha channel should be rendered as fully opaque for alpha values above alpha_cutoff and fully transparent otherwise.</string> + </map> + <key>PRIM_ALPHA_MODE_EMISSIVE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>3</integer> + <key>tooltip</key> + <string>Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse texture's alpha channel should be rendered as an emissivity mask.</string> + </map> <key>PRIM_BUMP_BARK</key> <map> <key>type</key> @@ -3882,6 +3963,15 @@ <key>tooltip</key> <string/> </map> + <key>PRIM_NORMAL</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>37</integer> + <key>tooltip</key> + <string>Prim parameter for materials using integer face, string texture, vector repeats, vector offsets, float rotation_in_radians</string> + </map> <key>PRIM_OMEGA</key> <map> <key>type</key> @@ -4108,6 +4198,15 @@ <key>tooltip</key> <string/> </map> + <key>PRIM_SPECULAR</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>36</integer> + <key>tooltip</key> + <string>Prim parameter for materials using integer face, string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment</string> + </map> <key>PRIM_TEMP_ON_REZ</key> <map> <key>type</key> @@ -5020,6 +5119,15 @@ <key>tooltip</key> <string/> </map> + <key>REGION_FLAG_BLOCK_FLYOVER</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <string>0x8000000</string> + <key>tooltip</key> + <string/> + </map> <key>REGION_FLAG_BLOCK_TERRAFORM</key> <map> <key>type</key> @@ -5979,6 +6087,177 @@ <key>tooltip</key> <string/> </map> + <key>XP_ERROR_EXPERIENCES_DISABLED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>2</integer> + <key>tooltip</key> + <string>The region currently has experiences disabled.</string> + </map> + <key>XP_ERROR_EXPERIENCE_DISABLED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>8</integer> + <key>tooltip</key> + <string>The experience owner has temporarily disabled the experience.</string> + </map> + <key>XP_ERROR_EXPERIENCE_SUSPENDED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>9</integer> + <key>tooltip</key> + <string>The experience has been suspended by Linden Customer Support.</string> + </map> + <key>XP_ERROR_INVALID_EXPERIENCE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>7</integer> + <key>tooltip</key> + <string>The script is associated with an experience that no longer exists.</string> + </map> + <key>XP_ERROR_INVALID_PARAMETERS</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>3</integer> + <key>tooltip</key> + <string>One of the string arguments was too big to fit in the key-value store.</string> + </map> + <key>XP_ERROR_KEY_NOT_FOUND</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>14</integer> + <key>tooltip</key> + <string>The requested key does not exist.</string> + </map> + <key>XP_ERROR_MATURITY_EXCEEDED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>16</integer> + <key>tooltip</key> + <string>The content rating of the experience exceeds that of the region.</string> + </map> + <key>XP_ERROR_NONE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>0</integer> + <key>tooltip</key> + <string>No error was detected.</string> + </map> + <key>XP_ERROR_NOT_FOUND</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>6</integer> + <key>tooltip</key> + <string>The sim was unable to verify the validity of the experience. Retrying after a short wait is advised.</string> + </map> + <key>XP_ERROR_NOT_PERMITTED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>4</integer> + <key>tooltip</key> + <string>This experience is not allowed to run by the requested agent.</string> + </map> + <key>XP_ERROR_NOT_PERMITTED_LAND</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>17</integer> + <key>tooltip</key> + <string>This experience is not allowed to run on the current region.</string> + </map> + <key>XP_ERROR_NO_EXPERIENCE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>5</integer> + <key>tooltip</key> + <string>This script is not associated with an experience.</string> + </map> + <key>XP_ERROR_QUOTA_EXCEEDED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>11</integer> + <key>tooltip</key> + <string>An attempted write data to the key-value store failed due to the data quota being met.</string> + </map> + <key>LSL_XP_ERROR_REQUEST_PERM_TIMEOUT</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>18</integer> + <key>tooltip</key> + <string>The request for experience permissions was ignored and timed out.</string> + </map> + <key>XP_ERROR_RETRY_UPDATE</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>15</integer> + <key>tooltip</key> + <string>A checked update failed due to an out of date request.</string> + </map> + <key>XP_ERROR_STORAGE_EXCEPTION</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>13</integer> + <key>tooltip</key> + <string>Unable to communicate with the key-value store.</string> + </map> + <key>XP_ERROR_STORE_DISABLED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>12</integer> + <key>tooltip</key> + <string>The key-value store is currently disabled on this region.</string> + </map> + <key>XP_ERROR_THROTTLED</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>1</integer> + <key>tooltip</key> + <string>The call failed due to too many recent calls.</string> + </map> + <key>XP_ERROR_UNKNOWN_ERROR</key> + <map> + <key>type</key> + <string>integer</string> + <key>value</key> + <integer>10</integer> + <key>tooltip</key> + <string>Other unknown error.</string> + </map> <key>ZERO_ROTATION</key> <map> <key>type</key> @@ -6280,6 +6559,34 @@ <string>This event is triggered when an email sent to this script arrives. The number remaining tells how many more emails are known to be still pending.</string> </map> + <key>experience_permissions</key> + <map> + <key>arguments</key> + <map> + <key>agent_id</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string>ID of the agent approving permission for the Experience.</string> + </map> + </map> + </map> + <key>experience_permissions_denied</key> + <map> + <key>arguments</key> + <map> + <key>agent_id</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string>ID of the agent denying permission for the Experience.</string> + </map> + </map> + <key>tooltip</key> + <string>One of the XP_ERROR_... constants describing the reason why the Experience permissions were denied for the agent.</string> + </map> <key>http_request</key> <map> <key>arguments</key> @@ -6965,6 +7272,29 @@ <key>tooltip</key> <string>Adjusts the volume (0.0 - 1.0) of the currently playing attached sound.\nThis function has no effect on sounds started with llTriggerSound.</string> </map> + <key>llAgentInExperience</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>integer</string> + <key>arguments</key> + <map> + <key>AgentID</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string></string> + </map> + </map> + <key>tooltip</key> + <string> + Returns TRUE if the agent is in the Experience and the Experience can run in the current location. + </string> + </map> <key>llAllowInventoryDrop</key> <map> <key>energy</key> @@ -7696,6 +8026,36 @@ <key>tooltip</key> <string>Convert link-set to AI/Physics character.\nCreates a path-finding entity, known as a "character", from the object containing the script. Required to activate use of path-finding functions.\nOptions is a list of key/value pairs.</string> </map> + <key>llCreateKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <map> + <key>Key</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + <key>Value</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + </map> + <key>tooltip</key> + <string> + Starts an asychronous transaction to create a key-value pair. Will fail with XP_ERROR_STORAGE_EXCEPTION if the key already exists. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value passed to the function. + </string> + </map> <key>llCreateLink</key> <map> <key>energy</key> @@ -7751,6 +8111,21 @@ <key>tooltip</key> <string>Create a list from a string of comma separated values specified in Text.</string> </map> + <key>llDataSizeKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <undef/> + <key>tooltip</key> + <string> + Starts an asychronous transaction the request the used and total amount of data allocated for the Experience. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the the amount in use and the third item will be the total available. + </string> + </map> <key>llDeleteCharacter</key> <map> <key>energy</key> @@ -7764,6 +8139,29 @@ <key>tooltip</key> <string>Convert link-set from AI/Physics character to Physics object.\nConvert the current link-set back to a standard object, removing all path-finding properties.</string> </map> + <key>llDeleteKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <map> + <key>Key</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + </map> + <key>tooltip</key> + <string> + Starts an asychronous transaction to delete a key-value pair. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. + </string> + </map> <key>llDeleteSubList</key> <map> <key>energy</key> @@ -8915,7 +9313,30 @@ <key>arguments</key> <undef/> <key>tooltip</key> - <string>Returns the object's attachment point, or 0 if not attached.\nReturns the object attachment point, or 0 if not attached.</string> + <string>Returns the object's attachment point, or 0 if not attached.</string> + </map> + <key>llGetAttachedList</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>list</string> + <key>arguments</key> + <array> + <map> + <key>ID</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string>Avatar to get attachments</string> + </map> + </map> + </array> + <key>tooltip</key> + <string>Returns a list of keys of all visible (not HUD) attachments on the avatar identified by the ID argument</string> </map> <key>llGetBoundingBox</key> <map> @@ -9119,6 +9540,52 @@ <key>tooltip</key> <string>Returns a string with the requested data about the region.</string> </map> + <key>llGetExperienceDetails</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>list</string> + <key>arguments</key> + <map> + <key>ExperienceID</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string>May be NULL_KEY to retrieve the details for the script's Experience</string> + </map> + </map> + <key>tooltip</key> + <string> + Returns a list with the following Experience properties: [Experience Name, Owner ID, Group ID, Experience ID, State, State Message]. State is an integer corresponding to one of the constants XP_ERROR_... and State Message is the string returned by llGetExperienceErrorMessage for that integer. + </string> + </map> + <key>llGetExperienceErrorMessage</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>string</string> + <key>arguments</key> + <map> + <key>Error</key> + <map> + <key>type</key> + <string>integer</string> + <key>tooltip</key> + <string>An Experience error code to translate.</string> + </map> + </map> + <key>tooltip</key> + <string> + Returns a string describing the error code passed or the string corresponding with XP_ERROR_UNKNOWN_ERROR if the value is not a valid Experience error code. + </string> + </map> <key>llGetForce</key> <map> <key>energy</key> @@ -11446,6 +11913,51 @@ <key>tooltip</key> <string>Returns the name of the prim or avatar specified by ID. The ID must be a valid rezzed prim or avatar key in the current simulator, otherwise an empty string is returned.\nFor avatars, the returned name is the legacy name</string> </map> + <key>llKeyCountKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <undef/> + <key>tooltip</key> + <string> + Starts an asychronous transaction the request the number of keys in the data store. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will the the number of keys in the system. + </string> + </map> + <key>llKeysKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <map> + <key>First</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string>Index of the first key to return.</string> + </map> + <key>Count</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string>The number of keys to return.</string> + </map> + </map> + <key>tooltip</key> + <string> + Starts an asychronous transaction the request a number of keys from the data store. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. The error XP_ERROR_KEY_NOT_FOUND is returned if First is greater than or equal to the number of keys in the data store. In the success case the subsequent items will be the keys requested. The number of keys returned may be less than requested if the return value is too large or if there is not enough keys remaining. The order keys are returned is not guaranteed but is stable between subsequent calls as long as no keys are added or removed. Because the keys are returned in a comma-delimited list it is not recommended to use commas in key names if this function is used. + </string> + </map> <key>llLinkParticleSystem</key> <map> <key>energy</key> @@ -13577,6 +14089,29 @@ <key>tooltip</key> <string>Applies Impulse and AngularImpulse to ObjectID.\nApplies the supplied impulse and angular impulse to the object specified.</string> </map> + <key>llReadKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <map> + <key>Key</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + </map> + <key>tooltip</key> + <string> + Starts an asychronous transaction to retrieve the value associated with the key given. Will fail with XP_ERROR_KEY_NOT_FOUND if the key does not exist. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. + </string> + </map> <key>llRefreshPrimURL</key> <map> <key>energy</key> @@ -13997,6 +14532,36 @@ <key>tooltip</key> <string>Requests the display name of the agent. When the display name is available the dataserver event will be raised.\nThe avatar identified does not need to be in the same region or online at the time of the request.\nReturns a key that is used to identify the dataserver event when it is raised.</string> </map> + <key>llRequestExperiencePermissions</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>void</string> + <key>arguments</key> + <map> + <key>AvatarID</key> + <map> + <key>type</key> + <string>key</string> + <key>tooltip</key> + <string/> + </map> + <key>unused</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string>Not used, should be ""</string> + </map> + </map> + <key>tooltip</key> + <string> + Ask the agent for permission to participate in an experience. This request is similar to llRequestPermissions with the following permissions: PERMISSION_TAKE_CONTROLS, PERMISSION_TRIGGER_ANIMATION, PERMISSION_ATTACH, PERMISSION_TRACK_CAMERA, PERMISSION_CONTROL_CAMERA and PERMISSION_TELEPORT. However, unlike llRequestPermissions the decision to allow or block the request is persistent and applies to all scripts using the experience grid wide. Subsequent calls to llRequestExperiencePermissions from scripts in the experience will receive the same response automatically with no user interaction. One of experience_permissions or experience_permissions_denied will be generated in response to this call. Outstanding permission requests will be lost if the script is derezzed, moved to another region or reset. + </string> + </map> <key>llRequestInventoryData</key> <map> <key>energy</key> @@ -17913,6 +18478,50 @@ <key>tooltip</key> <string>Updates settings for a pathfinding character.</string> </map> + <key>llUpdateKeyValue</key> + <map> + <key>energy</key> + <real>10.0</real> + <key>sleep</key> + <real>0.0</real> + <key>return</key> + <string>key</string> + <key>arguments</key> + <map> + <key>Key</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + <key>Value</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + <key>Checked</key> + <map> + <key>type</key> + <string>integer</string> + <key>tooltip</key> + <string></string> + </map> + <key>OriginalValue</key> + <map> + <key>type</key> + <string>string</string> + <key>tooltip</key> + <string></string> + </map> + </map> + <key>tooltip</key> + <string> + Starts an asychronous transaction to update the value associated with the key given. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. If Checked is 1 the existing value in the data store must match the OriginalValue passed or XP_ERROR_RETRY_UPDATE will be returned. If Checked is 0 the key will be created if necessary. + </string> + </map> <key>llVecDist</key> <map> <key>energy</key> diff --git a/indra/newview/app_settings/lindenlab.pem b/indra/newview/app_settings/lindenlab.pem index eddae0426d..eddae0426d 100755..100644 --- a/indra/newview/app_settings/lindenlab.pem +++ b/indra/newview/app_settings/lindenlab.pem diff --git a/indra/newview/app_settings/llsd-lsl-syntax.rng b/indra/newview/app_settings/llsd-lsl-syntax.rng index aa92364ec1..aa92364ec1 100755..100644 --- a/indra/newview/app_settings/llsd-lsl-syntax.rng +++ b/indra/newview/app_settings/llsd-lsl-syntax.rng diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index de3732f339..de3732f339 100755..100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index ca1dae0b86..ca1dae0b86 100755..100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index 01822fe64c..01822fe64c 100755..100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 845cb5ae96..1fdfdb51a8 100755..100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2,6 +2,39 @@ <llsd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="llsd.xsd"> <map> + <key>ImporterDebug</key> + <map> + <key>Comment</key> + <string>Enable debug output to more precisely identify sources of import errors. Warning: the output can slow down import on many machines.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>ImporterLegacyMatching</key> + <map> + <key>Comment</key> + <string>Enable index based model matching.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>ImporterModelLimit</key> + <map> + <key>Comment</key> + <string>Limits amount of importer generated models for dae files</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>768</integer> + </map> <key>IMShowTime</key> <map> <key>Comment</key> @@ -47,7 +80,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>300</real> + <real>300.0</real> </map> <key>AckCollectTime</key> <map> @@ -80,7 +113,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>1</real> + <real>1.0</real> </map> <key>AdvanceSnapshot</key> <map> @@ -701,7 +734,7 @@ <string>F32</string> <key>Value</key> <integer>60</integer> - </map> + </map> <key>AvatarRotateThresholdFast</key> <map> <key>Comment</key> @@ -712,7 +745,7 @@ <string>F32</string> <key>Value</key> <integer>2</integer> - </map> + </map> <key>AvatarBakedTextureUploadTimeout</key> <map> <key>Comment</key> @@ -1306,7 +1339,7 @@ <string>String</string> <key>Value</key> <string /> - </map> + </map> <key>CacheNumberOfRegionsForObjects</key> <map> <key>Comment</key> @@ -1651,7 +1684,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>100</real> + <integer>100</integer> </map> <key>ChatLoadGroupTimeout</key> <map> @@ -3459,6 +3492,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MinObjectsForUnlinkConfirm</key> + <map> + <key>Comment</key> + <string>Minimum amount of objects in linkset for showing confirmation dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>6</integer> + </map> <key>EffectScriptChatParticles</key> <map> <key>Comment</key> @@ -3744,7 +3788,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>FirstSelectedEnabledPopups</key> <map> <key>Comment</key> @@ -3755,7 +3799,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>FixedWeather</key> <map> <key>Comment</key> @@ -3877,7 +3921,7 @@ <key>Value</key> <string>SW</string> </map> - + <key>FloaterStatisticsRect</key> <map> <key>Comment</key> @@ -4260,7 +4304,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>3</real> + <real>3.0</real> </map> <key>FullScreenAutoDetectAspectRatio</key> <map> @@ -4404,7 +4448,7 @@ <string>String</string> <key>Value</key> <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/howto/index.html</string> - </map> + </map> <key>HomeSidePanelURL</key> <map> <key>Comment</key> @@ -4470,7 +4514,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>HostID</key> <map> <key>Comment</key> @@ -4558,7 +4602,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>IgnorePixelDepth</key> <map> <key>Comment</key> @@ -4613,7 +4657,7 @@ <string>F32</string> <key>Value</key> <real>0.5</real> - </map> + </map> <key>InspectorShowTime</key> <map> <key>Comment</key> @@ -4624,7 +4668,7 @@ <string>F32</string> <key>Value</key> <real>3.0</real> - </map> + </map> <key>InstallLanguage</key> <map> <key>Comment</key> @@ -4680,17 +4724,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>InventoryDisplayOutbox</key> - <map> - <key>Comment</key> - <string>Override merchant inventory outbox display</string> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>InventoryInboxToggleState</key> <map> <key>Comment</key> @@ -4713,6 +4746,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>InventoryOutboxDisplayBoth</key> + <map> + <key>Comment</key> + <string>Show the legacy Merchant Outbox UI as well as the Marketplace Listings UI</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>InventoryOutboxLogging</key> <map> <key>Comment</key> @@ -4744,7 +4788,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <integer>21</integer> + <integer>20</integer> </map> <key>InventoryOutboxMaxFolderDepth</key> <map> @@ -4768,6 +4812,17 @@ <key>Value</key> <integer>200</integer> </map> + <key>InventoryOutboxMaxStockItemCount</key> + <map> + <key>Comment</key> + <string>Maximum number of items allowed in a stock folder.</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>200</integer> + </map> <key>InventorySortOrder</key> <map> <key>Comment</key> @@ -4779,6 +4834,17 @@ <key>Value</key> <integer>7</integer> </map> + <key>MarketplaceListingsSortOrder</key> + <map> + <key>Comment</key> + <string>Specifies sort for marketplace listings</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>2</integer> + </map> <key>InvertMouse</key> <map> <key>Comment</key> @@ -5164,7 +5230,7 @@ <key>Value</key> <string>0.0.0</string> </map> - + <key>LastSnapshotToProfileHeight</key> <map> <key>Comment</key> @@ -5628,6 +5694,17 @@ <key>Value</key> <string /> </map> + <key>MarketplaceListingsLogging</key> + <map> + <key>Comment</key> + <string>Enable debug output associated with the Marketplace Listings (SLM) API.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MarketplaceURL</key> <map> <key>Comment</key> @@ -6232,7 +6309,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>MenuAccessKeyTime</key> <map> <key>Comment</key> @@ -6275,7 +6352,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <real>0</real> + <integer>0</integer> </map> <key>MeshEnabled</key> <map> @@ -6286,7 +6363,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <real>1</real> + <integer>1</integer> </map> <key>MeshImportUseSLM</key> <map> @@ -6297,7 +6374,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <real>1</real> + <integer>1</integer> </map> <key>MeshUploadLogXML</key> <map> @@ -6308,7 +6385,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <real>0</real> + <integer>0</integer> </map> <key>MeshUploadFakeErrors</key> <map> @@ -6319,7 +6396,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>0</real> + <integer>0</integer> </map> <key>MeshUploadTimeOut</key> <map> @@ -6330,7 +6407,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>600</real> + <integer>600</integer> </map> <key>MigrateCacheDirectory</key> <map> @@ -6397,7 +6474,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>MouseSun</key> <map> <key>Comment</key> @@ -6562,7 +6639,7 @@ <string>String</string> <key>Value</key> <string /> - </map> + </map> <key>NextLoginLocation</key> <map> <key>Comment</key> @@ -6686,7 +6763,7 @@ <string>String</string> <key>Value</key> <string>toast</string> - </map> + </map> <key>NotificationFriendIMOptions</key> <map> <key>Comment</key> @@ -6742,7 +6819,7 @@ <string>String</string> <key>Value</key> <string>toast</string> - </map> + </map> <key>NotificationObjectIMOptions</key> <map> <key>Comment</key> @@ -6756,7 +6833,7 @@ <string>String</string> <key>Value</key> <string>toast</string> - </map> + </map> <key>NotificationToastLifeTime</key> <map> <key>Comment</key> @@ -7315,7 +7392,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>PlaySoundFriendIM</key> <map> <key>Comment</key> @@ -7426,7 +7503,7 @@ <key>Value</key> <real>0.9</real> </map> - + <key>PlainTextChatHistory</key> <map> <key>Comment</key> @@ -7438,7 +7515,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>PluginInstancesLow</key> <map> <key>Comment</key> @@ -7692,7 +7769,7 @@ <real>0.4</real> </array> </map> - + <key>PreviewDirection2</key> <map> <key>Comment</key> @@ -8004,7 +8081,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>5.0</real> + <real>10.0</real> </map> <key>MediaRollOffMax</key> <map> @@ -8302,7 +8379,7 @@ <key>RenderComplexityStaticMax</key> <map> <key>Comment</key> - <string>Sets a static max value for scaling of RenderComplexity + <string>Sets a static max value for scaling of RenderComplexity display (-1 for dynamic scaling)</string> <key>Persist</key> <integer>1</integer> @@ -8380,7 +8457,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>RenderLocalLights</key> <map> <key>Comment</key> @@ -8554,7 +8631,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>64</real> + <real>64.0</real> </map> <key>RenderCubeMap</key> <map> @@ -8607,7 +8684,7 @@ <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>Boolean</string> <key>Value</key> <integer>0</integer> </map> @@ -8644,7 +8721,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>RenderAnimateRes</key> <map> <key>Comment</key> @@ -8690,7 +8767,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>16</real> + <integer>16</integer> </map> <key>RenderEdgeDepthCutoff</key> @@ -8736,7 +8813,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>4</real> + <real>4.0</real> </map> <key>RenderDeferredSpotShadowBias</key> <map> @@ -8803,7 +8880,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>0</real> + <real>0.0</real> </map> <key>RenderDepthPrePass</key> @@ -8817,7 +8894,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>RenderDepthOfField</key> <map> <key>Comment</key> @@ -8946,7 +9023,7 @@ <key>Value</key> <real>0.1</real> </map> - + <key>RenderHighlightBrightness</key> <map> <key>Comment</key> @@ -8970,7 +9047,7 @@ <key>Value</key> <real>0.6</real> </map> - + <key>RenderHighlightColor</key> <map> <key>Comment</key> @@ -8997,9 +9074,9 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>0</real> + <integer>0</integer> </map> - + <key>RenderSpecularResX</key> <map> <key>Comment</key> @@ -9009,7 +9086,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>1024</real> + <integer>1024</integer> </map> <key>RenderSpecularResY</key> @@ -9021,7 +9098,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>256</real> + <integer>256</integer> </map> <key>RenderSpecularExponent</key> @@ -9177,7 +9254,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>4</real> + <integer>4</integer> </map> <key>RenderShadowBlurDistFactor</key> <map> @@ -9344,9 +9421,9 @@ <string>Vector3</string> <key>Value</key> <array> - <real>1</real> - <real>0</real> - <real>0</real> + <real>1.0</real> + <real>0.0</real> + <real>0.0</real> </array> </map> <key>RenderGlowMaxExtractAlpha</key> @@ -9904,7 +9981,7 @@ <key>Value</key> <integer>1</integer> </map> - + <key>RenderAutoMuteByteLimit</key> <map> <key>Comment</key> @@ -9947,7 +10024,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>0</real> + <integer>0</integer> </map> <key>RenderAutoMuteLogging</key> <map> @@ -9959,7 +10036,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>RenderAutoHideSurfaceAreaLimit</key> <map> <key>Comment</key> @@ -10169,7 +10246,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>250000</real> + <integer>250000</integer> </map> <key>MeshMetaDataDiscount</key> <map> @@ -10180,7 +10257,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>384</real> + <integer>384</integer> </map> <key>MeshMinimumByteSize</key> <map> @@ -10191,7 +10268,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>16</real> + <integer>16</integer> </map> <key>MeshBytesPerTriangle</key> <map> @@ -10202,7 +10279,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>16</real> + <integer>16</integer> </map> <key>Mesh2MaxConcurrentRequests</key> <map> @@ -10334,7 +10411,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>1024</real> + <integer>1024</integer> </map> <key>SceneLoadLowMemoryBound</key> <map> @@ -10345,7 +10422,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>750</real> + <integer>750</integer> </map> <key>SceneLoadMinRadius</key> <map> @@ -10445,7 +10522,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>SelectMovableOnly</key> <map> <key>Comment</key> @@ -10687,7 +10764,7 @@ <string>Boolean</string> <key>Value</key> <integer>1</integer> - </map> + </map> <key>ShowCrosshairs</key> <map> <key>Comment</key> @@ -10764,7 +10841,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>ShowMiniMapButton</key> <map> <key>Comment</key> @@ -10831,7 +10908,7 @@ <key>Value</key> <integer>1</integer> </map> - <key>ShowObjectRenderingCost</key> + <key>ShowObjectRenderingCost</key> <map> <key>Comment</key> <string>Show the object rendering cost in build tools</string> @@ -10840,9 +10917,9 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> - </map> - <key>ShowNavbarFavoritesPanel</key> + <integer>1</integer> + </map> + <key>ShowNavbarFavoritesPanel</key> <map> <key>Comment</key> <string>Show/hide navigation bar favorites panel</string> @@ -10851,9 +10928,9 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>1</integer> </map> - <key>ShowNavbarNavigationPanel</key> + <key>ShowNavbarNavigationPanel</key> <map> <key>Comment</key> <string>Show/hide navigation bar navigation panel</string> @@ -10862,7 +10939,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>1</integer> </map> <key>ShowWorldMapButton</key> <map> @@ -11018,7 +11095,7 @@ <key>Value</key> <integer>1</integer> </map> - <key>ShowPGSearchAll</key> + <key>ShowPGSearchAll</key> <map> <key>Comment</key> <string>Display results of search All that are flagged as general</string> @@ -11534,7 +11611,7 @@ <string>S32</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>SnapshotQuality</key> <map> <key>Comment</key> @@ -12138,7 +12215,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>6</real> + <integer>6</integer> </map> <key>UICheckboxctrlBtnSize</key> <map> @@ -12149,7 +12226,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>13</real> + <integer>13</integer> </map> <key>UICheckboxctrlHeight</key> <map> @@ -12160,7 +12237,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>16</real> + <integer>16</integer> </map> <key>UICheckboxctrlHPad</key> <map> @@ -12171,7 +12248,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>2</real> + <integer>2</integer> </map> <key>UICheckboxctrlSpacing</key> <map> @@ -12182,7 +12259,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>5</real> + <integer>5</integer> </map> <key>UICheckboxctrlVPad</key> <map> @@ -12193,7 +12270,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>2</real> + <integer>2</integer> </map> <key>UICloseBoxFromTop</key> <map> @@ -12204,7 +12281,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>5</real> + <integer>5</integer> </map> <key>UIExtraTriangleHeight</key> <map> @@ -12215,7 +12292,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>-1</real> + <integer>-1</integer> </map> <key>UIExtraTriangleWidth</key> <map> @@ -12226,7 +12303,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>4</real> + <integer>4</integer> </map> <key>UIFloaterCloseBoxSize</key> <map> @@ -12237,7 +12314,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>16</real> + <integer>16</integer> </map> <key>UIFloaterHPad</key> <map> @@ -12248,7 +12325,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>6</real> + <integer>6</integer> </map> <key>UIFloaterTestBool</key> <map> @@ -12403,7 +12480,7 @@ <string>String</string> <key>Value</key> <string>B56AF90D-6684-48E4-B1E4-722D3DEB2CB6</string> - </map> + </map> <key>NearByChatChannelUUID</key> <map> <key>Comment</key> @@ -12414,7 +12491,7 @@ <string>String</string> <key>Value</key> <string>E1158BD6-661C-4981-9DAD-4DCBFF062502</string> - </map> + </map> <key>NotificationChannelUUID</key> <map> <key>Comment</key> @@ -12425,7 +12502,7 @@ <string>String</string> <key>Value</key> <string>AEED3193-8709-4693-8558-7452CCA97AE5</string> - </map> + </map> <key>AlertChannelUUID</key> <map> <key>Comment</key> @@ -12436,7 +12513,7 @@ <string>String</string> <key>Value</key> <string>F3E07BC8-A973-476D-8C7F-F3B7293975D1</string> - </map> + </map> <key>UIImgWhiteUUID</key> <map> <key>Comment</key> @@ -12458,7 +12535,7 @@ <string>S32</string> <key>Value</key> <integer>2</integer> - </map> + </map> <key>UIMaxComboWidth</key> <map> <key>Comment</key> @@ -12468,7 +12545,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>500</real> + <integer>500</integer> </map> <key>UIMinimizedWidth</key> <map> @@ -12479,7 +12556,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>160</real> + <integer>160</integer> </map> <key>UIMultiSliderctrlSpacing</key> <map> @@ -12490,7 +12567,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>4</real> + <integer>4</integer> </map> <key>UIMultiTrackHeight</key> <map> @@ -13150,7 +13227,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <real>3</real> + <integer>3</integer> </map> <key>UseCircuitCodeTimeout</key> <map> @@ -13371,7 +13448,7 @@ <string>String</string> <key>Value</key> <string>[i800,i600]</string> - </map> + </map> <key>sourceid</key> <map> <key>Comment</key> @@ -14131,6 +14208,17 @@ <key>Value</key> <integer>-1</integer> </map> + <key>MaxFPS</key> + <map> + <key>Comment</key> + <string>OBSOLETE UNUSED setting.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>-1.0</real> + </map> <key>ForcePeriodicRenderingTime</key> <map> <key>Comment</key> @@ -14581,7 +14669,7 @@ <string>Boolean</string> <key>Value</key> <integer>1</integer> - </map> + </map> <key>EnablePlaceProfile</key> <map> <key>Comment</key> @@ -15158,9 +15246,9 @@ <string>Color4</string> <key>Value</key> <array> - <real>0</real> - <real>0</real> - <real>0</real> + <real>0.0</real> + <real>0.0</real> + <real>0.0</real> <real>1.0</real> </array> </map> @@ -15403,7 +15491,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>PathfindingLineWidth</key> <map> <key>Comment</key> @@ -15444,7 +15532,7 @@ <real>1.0</real> </array> </map> - + <key>HideUIControls</key> <map> <key>Comment</key> @@ -15477,7 +15565,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>2</real> + <real>2.0</real> </map> <key>TeleportLocalDelay</key> <map> @@ -15488,7 +15576,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>1</real> + <real>1.0</real> </map> <key>FMODExProfilerEnable</key> <map> diff --git a/indra/newview/app_settings/settings_crash_behavior.xml b/indra/newview/app_settings/settings_crash_behavior.xml index 97651ff4ca..97651ff4ca 100755..100644 --- a/indra/newview/app_settings/settings_crash_behavior.xml +++ b/indra/newview/app_settings/settings_crash_behavior.xml diff --git a/indra/newview/app_settings/settings_files.xml b/indra/newview/app_settings/settings_files.xml index 4a9e522a96..4a9e522a96 100755..100644 --- a/indra/newview/app_settings/settings_files.xml +++ b/indra/newview/app_settings/settings_files.xml diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml index e660c1a33b..e660c1a33b 100755..100644 --- a/indra/newview/app_settings/settings_minimal.xml +++ b/indra/newview/app_settings/settings_minimal.xml diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index c62b45ed81..c62b45ed81 100755..100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl index b631ecb7d2..b631ecb7d2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl index 767fad016c..767fad016c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl index 19203ab670..19203ab670 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl index 4296e551db..4296e551db 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl index 82db15c3ae..82db15c3ae 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index 6cd38d8ef5..3060307b21 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -37,8 +37,7 @@ mat4 getObjectSkinnedTransform() index = min(index, vec4(51.0)); index = max(index, vec4( 0.0)); - float scale = 1.0/(w.x+w.y+w.z+w.w); - w *= scale; + w *= 1.0/(w.x+w.y+w.z+w.w); int i1 = int(index.x); int i2 = int(index.y); diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl index 7a35905280..7a35905280 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl index 78b5328c9a..78b5328c9a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 2b5f001873..2b5f001873 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 506118d381..506118d381 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl index 22c9a4d14e..22c9a4d14e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl index 3f90600ace..3f90600ace 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl index c8ddefac26..c8ddefac26 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl index 01ffb862f7..01ffb862f7 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl index 662c762bca..662c762bca 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl index b809b73973..b809b73973 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl index bde1ad4e9f..bde1ad4e9f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl index 1bd8fee7c9..1bd8fee7c9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index 5264d6e1b4..5264d6e1b4 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl index 212f7e56ad..212f7e56ad 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl index 595c11fae2..58fb01d200 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl @@ -29,6 +29,7 @@ out vec4 frag_data[3]; #define frag_data gl_FragData #endif +uniform float minimum_alpha; uniform sampler2D diffuseMap; uniform sampler2D bumpMap; @@ -47,16 +48,23 @@ vec2 encode_normal(vec3 n) void main() { - vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb; - vec3 norm = texture2D(bumpMap, vary_texcoord0.xy).rgb * 2.0 - 1.0; + vec4 col = texture2D(diffuseMap, vary_texcoord0.xy); + + if(col.a < minimum_alpha) + { + discard; + } + col *= vertex_color; + + vec3 norm = texture2D(bumpMap, vary_texcoord0.xy).rgb * 2.0 - 1.0; - vec3 tnorm = vec3(dot(norm,vary_mat0), + vec3 tnorm = vec3(dot(norm,vary_mat0), dot(norm,vary_mat1), dot(norm,vary_mat2)); - frag_data[0] = vec4(col, 0.0); - frag_data[1] = vertex_color.aaaa; // spec - //frag_data[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested - vec3 nvn = normalize(tnorm); - frag_data[2] = vec4(encode_normal(nvn.xyz), vertex_color.a, 0.0); + frag_data[0] = vec4(col.rgb, 0.0); + frag_data[1] = vertex_color.aaaa; // spec + //frag_data[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested + vec3 nvn = normalize(tnorm); + frag_data[2] = vec4(encode_normal(nvn), vertex_color.a, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl index 10144f3e16..10144f3e16 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl index 9f9749394e..9f9749394e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl index 1d8ca04ccd..1d8ca04ccd 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl index 17f425475c..17f425475c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl index ccbc3c557c..ccbc3c557c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl index 7930b5d18b..7930b5d18b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl index 8525e13333..8525e13333 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl index 37d70a2412..37d70a2412 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl index 6befb1bd8b..6befb1bd8b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl index adc361d7a2..adc361d7a2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl index 9461e3e32e..9461e3e32e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl index 2487110624..2487110624 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl index 3c026796c8..3c026796c8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl index a425e5062e..a425e5062e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl index ed02c4a481..ed02c4a481 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl index 115b04797f..115b04797f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index f22b16965c..f22b16965c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index 8e899e3e0f..8e899e3e0f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl index a2b4b3b8c8..a2b4b3b8c8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index f8fdde43f9..f8fdde43f9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl index 42266e9378..42266e9378 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl index dcf474824d..dcf474824d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl index f2dc60aa5d..f2dc60aa5d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 1a464fec5d..1a464fec5d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl index eefefa640d..eefefa640d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index c08e9d361a..c08e9d361a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl index 62cfa5c316..62cfa5c316 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl index 9bceae05b7..9bceae05b7 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 106d48bd71..106d48bd71 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl index a5625fbc16..a5625fbc16 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index bf362e21a4..bf362e21a4 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl index eb5beeef39..eb5beeef39 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl index bd0cb50464..bd0cb50464 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl index 8edf5b2723..8edf5b2723 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl index 018ced4cad..018ced4cad 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl index 91a96977f0..91a96977f0 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl index 11411a605c..11411a605c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl index ef153dfc5b..ef153dfc5b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl index 3d1b182875..3d1b182875 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl index cc77a4cea0..cc77a4cea0 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl index 22f4729e2e..22f4729e2e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl index 7c02d31d43..7c02d31d43 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 760d52a9ce..760d52a9ce 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl index b59fcbe017..b59fcbe017 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index f50635a139..f50635a139 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl index 821058804c..821058804c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl index 8bc5b06379..8bc5b06379 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl index 5ca817aff6..5ca817aff6 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl index 47e9d15fbc..47e9d15fbc 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl index c0a5865bef..c0a5865bef 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl index 473d6df8fa..473d6df8fa 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl index 52a429465f..52a429465f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl index 5effee4e4e..5effee4e4e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl index 808750496f..808750496f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl index d4d2f5f571..d4d2f5f571 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl index e472a75304..e472a75304 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl index 3b6571a24a..3b6571a24a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index 1c3ad49a21..1c3ad49a21 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl index 9734acf005..9734acf005 100755..100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl index 0f5eb288fd..0f5eb288fd 100755..100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl index 1396dc6973..1396dc6973 100755..100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl index c1f6af9f57..c1f6af9f57 100755..100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl diff --git a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl index cdb2281578..cdb2281578 100755..100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl index 668a710c04..668a710c04 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl index d09c5f9247..d09c5f9247 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl index a956562396..a956562396 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl index 0d8dab0a41..0d8dab0a41 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl index 79bffab745..79bffab745 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl index 4bdfce9260..4bdfce9260 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl index 352cea7aaa..352cea7aaa 100755..100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl index f520f301d9..f520f301d9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl index 3580d1f27b..3580d1f27b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/clipF.glsl b/indra/newview/app_settings/shaders/class1/interface/clipF.glsl index ac2bc8703b..ac2bc8703b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/clipF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/clipF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/clipV.glsl b/indra/newview/app_settings/shaders/class1/interface/clipV.glsl index e376b25a71..e376b25a71 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/clipV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/clipV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl index a96d04cc39..a96d04cc39 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl index 890474d6d8..890474d6d8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl index 67c6baddbb..67c6baddbb 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl index f4d704577a..f4d704577a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl index ed803de277..ed803de277 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl index 59520bb99f..59520bb99f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl index 058f3b1b82..058f3b1b82 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl index f7970b7f78..f7970b7f78 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl index 6cc9bbbea2..6cc9bbbea2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl index 9bf7b60eb7..9bf7b60eb7 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl index 5c479d27a9..5c479d27a9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl index db130e456c..db130e456c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl index c26fa08ddc..c26fa08ddc 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl index 415181126b..415181126b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl index 6b9986c8d7..6b9986c8d7 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl index 7379360e17..7379360e17 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl index 19fa607307..19fa607307 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl index 91f252cf1e..91f252cf1e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl index da02534dbb..da02534dbb 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl index f33115d78d..f33115d78d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl index 772bb374e8..772bb374e8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl index 641d670c26..641d670c26 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl index 95679e93e7..95679e93e7 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl index 3c2f297f7f..3c2f297f7f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl index 299bfb72aa..299bfb72aa 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl index 220dafef25..220dafef25 100755..100644 --- a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl index cad5b9ff04..cad5b9ff04 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl index b9ddbc8e1c..b9ddbc8e1c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl index d6ebfcb825..d6ebfcb825 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl index 5740987ab1..5740987ab1 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl index c8771a3f1e..c8771a3f1e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl index f72f20b03d..f72f20b03d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl index 2738ff8947..2738ff8947 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl index c8282e9a51..c8282e9a51 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl index e7dbd4bbd2..e7dbd4bbd2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl index 5886fc65be..5886fc65be 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl index cddc7d8df8..cddc7d8df8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl index 6dd3bb937f..6dd3bb937f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl index d3dacf9bc4..d3dacf9bc4 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl index 63f92a8844..63f92a8844 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl index 0e68091e7c..0e68091e7c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl index 85cddc647d..85cddc647d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl index a9288b3df6..a9288b3df6 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl index 0aca768021..0aca768021 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl index 9208c148ef..9208c148ef 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl index 92628faa68..92628faa68 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl index 61841674e2..61841674e2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl index 0b6e835fd0..0b6e835fd0 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl index 24bf9b3cee..24bf9b3cee 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl index 8045809b82..8045809b82 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl index 3426fea52f..3426fea52f 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl index d9faa9b314..d9faa9b314 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl index 00609e93cd..00609e93cd 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl index 13ecb7a636..13ecb7a636 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl index 7059ff31ae..7059ff31ae 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl index 41288c21c1..41288c21c1 100755..100644 --- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl index d55f0db530..d55f0db530 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl index a7738087dc..a7738087dc 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl index 9064904191..9064904191 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl index e984deb0c8..e984deb0c8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl index a54c0caf81..a54c0caf81 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl index 5d6f14230c..5d6f14230c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl index b312665032..b312665032 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl index 79b552ee1a..79b552ee1a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl index 34bd8d445a..34bd8d445a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl index e1f3919907..e1f3919907 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl index eff75435a9..eff75435a9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl index fc20d3270e..fc20d3270e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl index 5d0ea0a8dd..5d0ea0a8dd 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl index add437d144..add437d144 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl index e90dbb115a..e90dbb115a 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl index 254c1d4fc2..254c1d4fc2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl index ca29bf3143..ca29bf3143 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl index 80ea286ac0..80ea286ac0 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/previewF.glsl b/indra/newview/app_settings/shaders/class1/objects/previewF.glsl index 284da3d0ac..284da3d0ac 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/previewF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/previewF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl index 7f3f84398b..7f3f84398b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl index f8f88e2577..f8f88e2577 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl index 591d6fc5c9..591d6fc5c9 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl index fdb3453cc5..fdb3453cc5 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl index 1e72e23eef..1e72e23eef 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl index 29a2ce617b..29a2ce617b 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl index 0be52a52af..0be52a52af 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl index cb80697d15..cb80697d15 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl index 1c6e53b187..1c6e53b187 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl index d4dee78793..d4dee78793 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl index 37a20383e2..37a20383e2 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl index 2e87ac5bbc..2e87ac5bbc 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl index fa01a27ec0..fa01a27ec0 100755..100644 --- a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl diff --git a/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl b/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl index 449d8d8b4e..449d8d8b4e 100755..100644 --- a/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl +++ b/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl diff --git a/indra/newview/app_settings/shaders/class1/transform/colorV.glsl b/indra/newview/app_settings/shaders/class1/transform/colorV.glsl index 59c4a7d895..59c4a7d895 100755..100644 --- a/indra/newview/app_settings/shaders/class1/transform/colorV.glsl +++ b/indra/newview/app_settings/shaders/class1/transform/colorV.glsl diff --git a/indra/newview/app_settings/shaders/class1/transform/normalV.glsl b/indra/newview/app_settings/shaders/class1/transform/normalV.glsl index a213aa0ae8..a213aa0ae8 100755..100644 --- a/indra/newview/app_settings/shaders/class1/transform/normalV.glsl +++ b/indra/newview/app_settings/shaders/class1/transform/normalV.glsl diff --git a/indra/newview/app_settings/shaders/class1/transform/positionV.glsl b/indra/newview/app_settings/shaders/class1/transform/positionV.glsl index 01eed18de4..01eed18de4 100755..100644 --- a/indra/newview/app_settings/shaders/class1/transform/positionV.glsl +++ b/indra/newview/app_settings/shaders/class1/transform/positionV.glsl diff --git a/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl b/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl index 0e074f3cec..0e074f3cec 100755..100644 --- a/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl +++ b/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl index aacc503e13..aacc503e13 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl index 6ff860362c..6ff860362c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl index 76d7d5059d..76d7d5059d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl index 8bdae328bd..8bdae328bd 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl index 8ec9ae617c..8ec9ae617c 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl index 636d4af006..636d4af006 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl index 8afcc20f6d..8afcc20f6d 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl index 62f4e51449..62f4e51449 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl diff --git a/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl index 7c95ecdb14..7c95ecdb14 100755..100644 --- a/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl index 5af9f5c902..5af9f5c902 100755..100644 --- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl +++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 94bd07bec6..94bd07bec6 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 1022c23f7b..1022c23f7b 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl index c840d72784..c840d72784 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 92e1ac95a6..92e1ac95a6 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 95c09d3238..95c09d3238 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index b5ff6404ea..b5ff6404ea 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl index bc5eb5181d..bc5eb5181d 100755..100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl index 3acf9fe883..3acf9fe883 100755..100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl index c9987ef3b9..c9987ef3b9 100755..100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl index fea3cbf69b..fea3cbf69b 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl index 62a034ce05..62a034ce05 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl index d174805cc0..d174805cc0 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl index 765b0927c3..765b0927c3 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl index 99dbee15ee..99dbee15ee 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl index 163ef26444..163ef26444 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl index 553f6752e6..553f6752e6 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl index 96c70651b1..96c70651b1 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl index c1dd45cd67..c1dd45cd67 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl index 478373d729..478373d729 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl index e2a2367626..e2a2367626 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl index 3788ddaf2d..3788ddaf2d 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl index 8a8e4cb0f6..8a8e4cb0f6 100755..100644 --- a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl diff --git a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl index 721054b5ad..721054b5ad 100755..100644 --- a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl index e043ac873e..e043ac873e 100755..100644 --- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl index dadff40933..dadff40933 100755..100644 --- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl diff --git a/indra/newview/app_settings/shaders/shader_hierarchy.txt b/indra/newview/app_settings/shaders/shader_hierarchy.txt index d8bbf69b38..d8bbf69b38 100755..100644 --- a/indra/newview/app_settings/shaders/shader_hierarchy.txt +++ b/indra/newview/app_settings/shaders/shader_hierarchy.txt diff --git a/indra/newview/app_settings/static_data.db2 b/indra/newview/app_settings/static_data.db2 Binary files differindex f85aa81601..f85aa81601 100755..100644 --- a/indra/newview/app_settings/static_data.db2 +++ b/indra/newview/app_settings/static_data.db2 diff --git a/indra/newview/app_settings/static_index.db2 b/indra/newview/app_settings/static_index.db2 Binary files differindex a5440f96f2..a5440f96f2 100755..100644 --- a/indra/newview/app_settings/static_index.db2 +++ b/indra/newview/app_settings/static_index.db2 diff --git a/indra/newview/app_settings/std_bump.ini b/indra/newview/app_settings/std_bump.ini index 561e04c33c..561e04c33c 100755..100644 --- a/indra/newview/app_settings/std_bump.ini +++ b/indra/newview/app_settings/std_bump.ini diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml index d61aee9a14..36e4eb91fd 100755..100644 --- a/indra/newview/app_settings/toolbars.xml +++ b/indra/newview/app_settings/toolbars.xml @@ -23,4 +23,7 @@ <command name="snapshot"/> <command name="facebook"/> </left_toolbar> + <right_toolbar + button_display_mode="icons_only"> + </right_toolbar> </toolbars> diff --git a/indra/newview/app_settings/trees.xml b/indra/newview/app_settings/trees.xml index 213ee85fc7..213ee85fc7 100755..100644 --- a/indra/newview/app_settings/trees.xml +++ b/indra/newview/app_settings/trees.xml diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index 71459e5470..71459e5470 100755..100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml diff --git a/indra/newview/app_settings/viewerart.xml b/indra/newview/app_settings/viewerart.xml index d56efeae09..d56efeae09 100755..100644 --- a/indra/newview/app_settings/viewerart.xml +++ b/indra/newview/app_settings/viewerart.xml diff --git a/indra/newview/app_settings/windlight/clouds2.tga b/indra/newview/app_settings/windlight/clouds2.tga Binary files differindex c95ce7fec4..c95ce7fec4 100755..100644 --- a/indra/newview/app_settings/windlight/clouds2.tga +++ b/indra/newview/app_settings/windlight/clouds2.tga diff --git a/indra/newview/app_settings/windlight/days/Colder%20Tones.xml b/indra/newview/app_settings/windlight/days/Colder%20Tones.xml index 63d0b099e1..63d0b099e1 100755..100644 --- a/indra/newview/app_settings/windlight/days/Colder%20Tones.xml +++ b/indra/newview/app_settings/windlight/days/Colder%20Tones.xml diff --git a/indra/newview/app_settings/windlight/days/Default.xml b/indra/newview/app_settings/windlight/days/Default.xml index 3d3afd5075..3d3afd5075 100755..100644 --- a/indra/newview/app_settings/windlight/days/Default.xml +++ b/indra/newview/app_settings/windlight/days/Default.xml diff --git a/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml b/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml index f75b52e6ed..f75b52e6ed 100755..100644 --- a/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml +++ b/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml diff --git a/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml b/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml index 6dc1ba9f4d..6dc1ba9f4d 100755..100644 --- a/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml +++ b/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml diff --git a/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml b/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml index 302af5a9ba..302af5a9ba 100755..100644 --- a/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml +++ b/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml diff --git a/indra/newview/app_settings/windlight/days/Tropicalia.xml b/indra/newview/app_settings/windlight/days/Tropicalia.xml index 89a56d4a13..89a56d4a13 100755..100644 --- a/indra/newview/app_settings/windlight/days/Tropicalia.xml +++ b/indra/newview/app_settings/windlight/days/Tropicalia.xml diff --git a/indra/newview/app_settings/windlight/days/Weird-O.xml b/indra/newview/app_settings/windlight/days/Weird-O.xml index 1e312f2464..1e312f2464 100755..100644 --- a/indra/newview/app_settings/windlight/days/Weird-O.xml +++ b/indra/newview/app_settings/windlight/days/Weird-O.xml diff --git a/indra/newview/app_settings/windlight/postprocesseffects.xml b/indra/newview/app_settings/windlight/postprocesseffects.xml index 60fbfd3483..60fbfd3483 100755..100644 --- a/indra/newview/app_settings/windlight/postprocesseffects.xml +++ b/indra/newview/app_settings/windlight/postprocesseffects.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D12AM.xml b/indra/newview/app_settings/windlight/skies/A%2D12AM.xml index 0aba31214a..0aba31214a 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D12AM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D12AM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D12PM.xml b/indra/newview/app_settings/windlight/skies/A%2D12PM.xml index 119b3e1418..119b3e1418 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D12PM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D12PM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D3AM.xml b/indra/newview/app_settings/windlight/skies/A%2D3AM.xml index f790d3d961..f790d3d961 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D3AM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D3AM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D3PM.xml b/indra/newview/app_settings/windlight/skies/A%2D3PM.xml index ec9706773e..ec9706773e 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D3PM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D3PM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D6AM.xml b/indra/newview/app_settings/windlight/skies/A%2D6AM.xml index bbc7aeec59..bbc7aeec59 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D6AM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D6AM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D6PM.xml b/indra/newview/app_settings/windlight/skies/A%2D6PM.xml index ebf08e1a3f..ebf08e1a3f 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D6PM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D6PM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D9AM.xml b/indra/newview/app_settings/windlight/skies/A%2D9AM.xml index 413e3a27d9..413e3a27d9 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D9AM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D9AM.xml diff --git a/indra/newview/app_settings/windlight/skies/A%2D9PM.xml b/indra/newview/app_settings/windlight/skies/A%2D9PM.xml index 292f6713b7..292f6713b7 100755..100644 --- a/indra/newview/app_settings/windlight/skies/A%2D9PM.xml +++ b/indra/newview/app_settings/windlight/skies/A%2D9PM.xml diff --git a/indra/newview/app_settings/windlight/skies/Barcelona.xml b/indra/newview/app_settings/windlight/skies/Barcelona.xml index ea9cab8fbb..ea9cab8fbb 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Barcelona.xml +++ b/indra/newview/app_settings/windlight/skies/Barcelona.xml diff --git a/indra/newview/app_settings/windlight/skies/Blizzard.xml b/indra/newview/app_settings/windlight/skies/Blizzard.xml index d17d2790a8..d17d2790a8 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Blizzard.xml +++ b/indra/newview/app_settings/windlight/skies/Blizzard.xml diff --git a/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml b/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml index 570f059961..570f059961 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml +++ b/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml diff --git a/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml b/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml index 4925b29eea..4925b29eea 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml +++ b/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml diff --git a/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml b/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml index f4736cf4c6..f4736cf4c6 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml +++ b/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml diff --git a/indra/newview/app_settings/windlight/skies/Default.xml b/indra/newview/app_settings/windlight/skies/Default.xml index 13a2c75046..13a2c75046 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Default.xml +++ b/indra/newview/app_settings/windlight/skies/Default.xml diff --git a/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml b/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml index b2a611163d..b2a611163d 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml +++ b/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml diff --git a/indra/newview/app_settings/windlight/skies/Fine%20Day.xml b/indra/newview/app_settings/windlight/skies/Fine%20Day.xml index e053815be1..e053815be1 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Fine%20Day.xml +++ b/indra/newview/app_settings/windlight/skies/Fine%20Day.xml diff --git a/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml b/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml index 8576ec125c..8576ec125c 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml +++ b/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml diff --git a/indra/newview/app_settings/windlight/skies/Foggy.xml b/indra/newview/app_settings/windlight/skies/Foggy.xml index cb7395d589..cb7395d589 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Foggy.xml +++ b/indra/newview/app_settings/windlight/skies/Foggy.xml diff --git a/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml b/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml index 32be0d25e6..32be0d25e6 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml +++ b/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml diff --git a/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml b/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml index ae16b2d135..ae16b2d135 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml +++ b/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml diff --git a/indra/newview/app_settings/windlight/skies/Gelatto.xml b/indra/newview/app_settings/windlight/skies/Gelatto.xml index 66b3d317b8..66b3d317b8 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Gelatto.xml +++ b/indra/newview/app_settings/windlight/skies/Gelatto.xml diff --git a/indra/newview/app_settings/windlight/skies/Ghost.xml b/indra/newview/app_settings/windlight/skies/Ghost.xml index 447202ed51..447202ed51 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Ghost.xml +++ b/indra/newview/app_settings/windlight/skies/Ghost.xml diff --git a/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml b/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml index 098844e16e..098844e16e 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml +++ b/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml diff --git a/indra/newview/app_settings/windlight/skies/Midday%201.xml b/indra/newview/app_settings/windlight/skies/Midday%201.xml index 13a2c75046..13a2c75046 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midday%201.xml +++ b/indra/newview/app_settings/windlight/skies/Midday%201.xml diff --git a/indra/newview/app_settings/windlight/skies/Midday%202.xml b/indra/newview/app_settings/windlight/skies/Midday%202.xml index 04f2ba85ee..04f2ba85ee 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midday%202.xml +++ b/indra/newview/app_settings/windlight/skies/Midday%202.xml diff --git a/indra/newview/app_settings/windlight/skies/Midday%203.xml b/indra/newview/app_settings/windlight/skies/Midday%203.xml index a23dcab60b..a23dcab60b 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midday%203.xml +++ b/indra/newview/app_settings/windlight/skies/Midday%203.xml diff --git a/indra/newview/app_settings/windlight/skies/Midday%204.xml b/indra/newview/app_settings/windlight/skies/Midday%204.xml index 255e314e0f..255e314e0f 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midday%204.xml +++ b/indra/newview/app_settings/windlight/skies/Midday%204.xml diff --git a/indra/newview/app_settings/windlight/skies/Midday.xml b/indra/newview/app_settings/windlight/skies/Midday.xml index 119b3e1418..119b3e1418 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midday.xml +++ b/indra/newview/app_settings/windlight/skies/Midday.xml diff --git a/indra/newview/app_settings/windlight/skies/Midnight.xml b/indra/newview/app_settings/windlight/skies/Midnight.xml index 0aba31214a..0aba31214a 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Midnight.xml +++ b/indra/newview/app_settings/windlight/skies/Midnight.xml diff --git a/indra/newview/app_settings/windlight/skies/Night.xml b/indra/newview/app_settings/windlight/skies/Night.xml index c4938949ce..c4938949ce 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Night.xml +++ b/indra/newview/app_settings/windlight/skies/Night.xml diff --git a/indra/newview/app_settings/windlight/skies/Pirate.xml b/indra/newview/app_settings/windlight/skies/Pirate.xml index dcb9c27ba4..dcb9c27ba4 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Pirate.xml +++ b/indra/newview/app_settings/windlight/skies/Pirate.xml diff --git a/indra/newview/app_settings/windlight/skies/Purple.xml b/indra/newview/app_settings/windlight/skies/Purple.xml index 0e9ac3f36e..0e9ac3f36e 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Purple.xml +++ b/indra/newview/app_settings/windlight/skies/Purple.xml diff --git a/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml b/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml index 70df6b0e60..70df6b0e60 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml +++ b/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml diff --git a/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml b/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml index 4c44a1bdb2..4c44a1bdb2 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml +++ b/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml diff --git a/indra/newview/app_settings/windlight/skies/Sunrise.xml b/indra/newview/app_settings/windlight/skies/Sunrise.xml index bbc7aeec59..bbc7aeec59 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Sunrise.xml +++ b/indra/newview/app_settings/windlight/skies/Sunrise.xml diff --git a/indra/newview/app_settings/windlight/skies/Sunset.xml b/indra/newview/app_settings/windlight/skies/Sunset.xml index ebf08e1a3f..ebf08e1a3f 100755..100644 --- a/indra/newview/app_settings/windlight/skies/Sunset.xml +++ b/indra/newview/app_settings/windlight/skies/Sunset.xml diff --git a/indra/newview/app_settings/windlight/water/Default.xml b/indra/newview/app_settings/windlight/water/Default.xml index dce4148c7d..dce4148c7d 100755..100644 --- a/indra/newview/app_settings/windlight/water/Default.xml +++ b/indra/newview/app_settings/windlight/water/Default.xml diff --git a/indra/newview/app_settings/windlight/water/Glassy.xml b/indra/newview/app_settings/windlight/water/Glassy.xml index 01183e4687..01183e4687 100755..100644 --- a/indra/newview/app_settings/windlight/water/Glassy.xml +++ b/indra/newview/app_settings/windlight/water/Glassy.xml diff --git a/indra/newview/app_settings/windlight/water/Murky.xml b/indra/newview/app_settings/windlight/water/Murky.xml index 1d9e022422..1d9e022422 100755..100644 --- a/indra/newview/app_settings/windlight/water/Murky.xml +++ b/indra/newview/app_settings/windlight/water/Murky.xml diff --git a/indra/newview/app_settings/windlight/water/Pond.xml b/indra/newview/app_settings/windlight/water/Pond.xml index 59e3c441ea..59e3c441ea 100755..100644 --- a/indra/newview/app_settings/windlight/water/Pond.xml +++ b/indra/newview/app_settings/windlight/water/Pond.xml diff --git a/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml b/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml index 6dbc4e8719..6dbc4e8719 100755..100644 --- a/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml +++ b/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml diff --git a/indra/newview/app_settings/windlight/water/Second%20Plague.xml b/indra/newview/app_settings/windlight/water/Second%20Plague.xml index 137483ab64..137483ab64 100755..100644 --- a/indra/newview/app_settings/windlight/water/Second%20Plague.xml +++ b/indra/newview/app_settings/windlight/water/Second%20Plague.xml diff --git a/indra/newview/app_settings/windlight/water/Valdez.xml b/indra/newview/app_settings/windlight/water/Valdez.xml index eb70a142e0..eb70a142e0 100755..100644 --- a/indra/newview/app_settings/windlight/water/Valdez.xml +++ b/indra/newview/app_settings/windlight/water/Valdez.xml diff --git a/indra/newview/character/attentions.xml b/indra/newview/character/attentions.xml index be9a2b28fc..be9a2b28fc 100755..100644 --- a/indra/newview/character/attentions.xml +++ b/indra/newview/character/attentions.xml diff --git a/indra/newview/character/attentionsN.xml b/indra/newview/character/attentionsN.xml index e7d9bb6a16..e7d9bb6a16 100755..100644 --- a/indra/newview/character/attentionsN.xml +++ b/indra/newview/character/attentionsN.xml diff --git a/indra/newview/character/avatar_eye.llm b/indra/newview/character/avatar_eye.llm Binary files differindex 8c6e74e1de..8c6e74e1de 100755..100644 --- a/indra/newview/character/avatar_eye.llm +++ b/indra/newview/character/avatar_eye.llm diff --git a/indra/newview/character/avatar_eye_1.llm b/indra/newview/character/avatar_eye_1.llm Binary files differindex 7a3b0d6f28..7a3b0d6f28 100755..100644 --- a/indra/newview/character/avatar_eye_1.llm +++ b/indra/newview/character/avatar_eye_1.llm diff --git a/indra/newview/character/avatar_eyelashes.llm b/indra/newview/character/avatar_eyelashes.llm Binary files differindex 99995b5758..99995b5758 100755..100644 --- a/indra/newview/character/avatar_eyelashes.llm +++ b/indra/newview/character/avatar_eyelashes.llm diff --git a/indra/newview/character/avatar_hair.llm b/indra/newview/character/avatar_hair.llm Binary files differindex df99de8db7..df99de8db7 100755..100644 --- a/indra/newview/character/avatar_hair.llm +++ b/indra/newview/character/avatar_hair.llm diff --git a/indra/newview/character/avatar_hair_1.llm b/indra/newview/character/avatar_hair_1.llm Binary files differindex 6de31fdc23..6de31fdc23 100755..100644 --- a/indra/newview/character/avatar_hair_1.llm +++ b/indra/newview/character/avatar_hair_1.llm diff --git a/indra/newview/character/avatar_hair_2.llm b/indra/newview/character/avatar_hair_2.llm Binary files differindex 47d02ba9ce..47d02ba9ce 100755..100644 --- a/indra/newview/character/avatar_hair_2.llm +++ b/indra/newview/character/avatar_hair_2.llm diff --git a/indra/newview/character/avatar_hair_3.llm b/indra/newview/character/avatar_hair_3.llm Binary files differindex 107f9e2a53..107f9e2a53 100755..100644 --- a/indra/newview/character/avatar_hair_3.llm +++ b/indra/newview/character/avatar_hair_3.llm diff --git a/indra/newview/character/avatar_hair_4.llm b/indra/newview/character/avatar_hair_4.llm Binary files differindex 1b9a12a0ca..1b9a12a0ca 100755..100644 --- a/indra/newview/character/avatar_hair_4.llm +++ b/indra/newview/character/avatar_hair_4.llm diff --git a/indra/newview/character/avatar_hair_5.llm b/indra/newview/character/avatar_hair_5.llm Binary files differindex 1b9a12a0ca..1b9a12a0ca 100755..100644 --- a/indra/newview/character/avatar_hair_5.llm +++ b/indra/newview/character/avatar_hair_5.llm diff --git a/indra/newview/character/avatar_head.llm b/indra/newview/character/avatar_head.llm Binary files differindex 8d8b5e0442..8d8b5e0442 100755..100644 --- a/indra/newview/character/avatar_head.llm +++ b/indra/newview/character/avatar_head.llm diff --git a/indra/newview/character/avatar_head_1.llm b/indra/newview/character/avatar_head_1.llm Binary files differindex 26291e6584..26291e6584 100755..100644 --- a/indra/newview/character/avatar_head_1.llm +++ b/indra/newview/character/avatar_head_1.llm diff --git a/indra/newview/character/avatar_head_2.llm b/indra/newview/character/avatar_head_2.llm Binary files differindex c2b808b1a6..c2b808b1a6 100755..100644 --- a/indra/newview/character/avatar_head_2.llm +++ b/indra/newview/character/avatar_head_2.llm diff --git a/indra/newview/character/avatar_head_3.llm b/indra/newview/character/avatar_head_3.llm Binary files differindex a0676b1f1c..a0676b1f1c 100755..100644 --- a/indra/newview/character/avatar_head_3.llm +++ b/indra/newview/character/avatar_head_3.llm diff --git a/indra/newview/character/avatar_head_4.llm b/indra/newview/character/avatar_head_4.llm Binary files differindex 5035585770..5035585770 100755..100644 --- a/indra/newview/character/avatar_head_4.llm +++ b/indra/newview/character/avatar_head_4.llm diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 9ec6428ee6..9ec6428ee6 100755..100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml diff --git a/indra/newview/character/avatar_lower_body.llm b/indra/newview/character/avatar_lower_body.llm Binary files differindex 0420899739..0420899739 100755..100644 --- a/indra/newview/character/avatar_lower_body.llm +++ b/indra/newview/character/avatar_lower_body.llm diff --git a/indra/newview/character/avatar_lower_body_1.llm b/indra/newview/character/avatar_lower_body_1.llm Binary files differindex 1394eb848b..1394eb848b 100755..100644 --- a/indra/newview/character/avatar_lower_body_1.llm +++ b/indra/newview/character/avatar_lower_body_1.llm diff --git a/indra/newview/character/avatar_lower_body_2.llm b/indra/newview/character/avatar_lower_body_2.llm Binary files differindex 0da9c1249e..0da9c1249e 100755..100644 --- a/indra/newview/character/avatar_lower_body_2.llm +++ b/indra/newview/character/avatar_lower_body_2.llm diff --git a/indra/newview/character/avatar_lower_body_3.llm b/indra/newview/character/avatar_lower_body_3.llm Binary files differindex f3c49a1568..f3c49a1568 100755..100644 --- a/indra/newview/character/avatar_lower_body_3.llm +++ b/indra/newview/character/avatar_lower_body_3.llm diff --git a/indra/newview/character/avatar_lower_body_4.llm b/indra/newview/character/avatar_lower_body_4.llm Binary files differindex e71721063e..e71721063e 100755..100644 --- a/indra/newview/character/avatar_lower_body_4.llm +++ b/indra/newview/character/avatar_lower_body_4.llm diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml index 6b07bbc1d3..6b07bbc1d3 100755..100644 --- a/indra/newview/character/avatar_skeleton.xml +++ b/indra/newview/character/avatar_skeleton.xml diff --git a/indra/newview/character/avatar_skirt.llm b/indra/newview/character/avatar_skirt.llm Binary files differindex 08ce3d1700..08ce3d1700 100755..100644 --- a/indra/newview/character/avatar_skirt.llm +++ b/indra/newview/character/avatar_skirt.llm diff --git a/indra/newview/character/avatar_skirt_1.llm b/indra/newview/character/avatar_skirt_1.llm Binary files differindex 88076c321f..88076c321f 100755..100644 --- a/indra/newview/character/avatar_skirt_1.llm +++ b/indra/newview/character/avatar_skirt_1.llm diff --git a/indra/newview/character/avatar_skirt_2.llm b/indra/newview/character/avatar_skirt_2.llm Binary files differindex 73b3effbc6..73b3effbc6 100755..100644 --- a/indra/newview/character/avatar_skirt_2.llm +++ b/indra/newview/character/avatar_skirt_2.llm diff --git a/indra/newview/character/avatar_skirt_3.llm b/indra/newview/character/avatar_skirt_3.llm Binary files differindex ded546fdea..ded546fdea 100755..100644 --- a/indra/newview/character/avatar_skirt_3.llm +++ b/indra/newview/character/avatar_skirt_3.llm diff --git a/indra/newview/character/avatar_skirt_4.llm b/indra/newview/character/avatar_skirt_4.llm Binary files differindex b9d5cb945e..b9d5cb945e 100755..100644 --- a/indra/newview/character/avatar_skirt_4.llm +++ b/indra/newview/character/avatar_skirt_4.llm diff --git a/indra/newview/character/avatar_upper_body.llm b/indra/newview/character/avatar_upper_body.llm Binary files differindex da7d990540..da7d990540 100755..100644 --- a/indra/newview/character/avatar_upper_body.llm +++ b/indra/newview/character/avatar_upper_body.llm diff --git a/indra/newview/character/avatar_upper_body_1.llm b/indra/newview/character/avatar_upper_body_1.llm Binary files differindex 31e104cc20..31e104cc20 100755..100644 --- a/indra/newview/character/avatar_upper_body_1.llm +++ b/indra/newview/character/avatar_upper_body_1.llm diff --git a/indra/newview/character/avatar_upper_body_2.llm b/indra/newview/character/avatar_upper_body_2.llm Binary files differindex c1f4199b9c..c1f4199b9c 100755..100644 --- a/indra/newview/character/avatar_upper_body_2.llm +++ b/indra/newview/character/avatar_upper_body_2.llm diff --git a/indra/newview/character/avatar_upper_body_3.llm b/indra/newview/character/avatar_upper_body_3.llm Binary files differindex 9e89ed8b3e..9e89ed8b3e 100755..100644 --- a/indra/newview/character/avatar_upper_body_3.llm +++ b/indra/newview/character/avatar_upper_body_3.llm diff --git a/indra/newview/character/avatar_upper_body_4.llm b/indra/newview/character/avatar_upper_body_4.llm Binary files differindex ec836d1dc3..ec836d1dc3 100755..100644 --- a/indra/newview/character/avatar_upper_body_4.llm +++ b/indra/newview/character/avatar_upper_body_4.llm diff --git a/indra/newview/character/blush_alpha.tga b/indra/newview/character/blush_alpha.tga Binary files differindex 05be7e7e3d..05be7e7e3d 100755..100644 --- a/indra/newview/character/blush_alpha.tga +++ b/indra/newview/character/blush_alpha.tga diff --git a/indra/newview/character/body_skingrain.tga b/indra/newview/character/body_skingrain.tga Binary files differindex 7264baac14..7264baac14 100755..100644 --- a/indra/newview/character/body_skingrain.tga +++ b/indra/newview/character/body_skingrain.tga diff --git a/indra/newview/character/bodyfreckles_alpha.tga b/indra/newview/character/bodyfreckles_alpha.tga Binary files differindex d30ab3d122..d30ab3d122 100755..100644 --- a/indra/newview/character/bodyfreckles_alpha.tga +++ b/indra/newview/character/bodyfreckles_alpha.tga diff --git a/indra/newview/character/bump_face_wrinkles.tga b/indra/newview/character/bump_face_wrinkles.tga Binary files differindex 54bf7a55be..54bf7a55be 100755..100644 --- a/indra/newview/character/bump_face_wrinkles.tga +++ b/indra/newview/character/bump_face_wrinkles.tga diff --git a/indra/newview/character/bump_head_base.tga b/indra/newview/character/bump_head_base.tga Binary files differindex fa3568573a..fa3568573a 100755..100644 --- a/indra/newview/character/bump_head_base.tga +++ b/indra/newview/character/bump_head_base.tga diff --git a/indra/newview/character/bump_lowerbody_base.tga b/indra/newview/character/bump_lowerbody_base.tga Binary files differindex 498ea3c721..498ea3c721 100755..100644 --- a/indra/newview/character/bump_lowerbody_base.tga +++ b/indra/newview/character/bump_lowerbody_base.tga diff --git a/indra/newview/character/bump_pants_wrinkles.tga b/indra/newview/character/bump_pants_wrinkles.tga Binary files differindex cca72415e8..cca72415e8 100755..100644 --- a/indra/newview/character/bump_pants_wrinkles.tga +++ b/indra/newview/character/bump_pants_wrinkles.tga diff --git a/indra/newview/character/bump_shirt_wrinkles.tga b/indra/newview/character/bump_shirt_wrinkles.tga Binary files differindex 9e0d757a48..9e0d757a48 100755..100644 --- a/indra/newview/character/bump_shirt_wrinkles.tga +++ b/indra/newview/character/bump_shirt_wrinkles.tga diff --git a/indra/newview/character/bump_upperbody_base.tga b/indra/newview/character/bump_upperbody_base.tga Binary files differindex e57d6352e6..e57d6352e6 100755..100644 --- a/indra/newview/character/bump_upperbody_base.tga +++ b/indra/newview/character/bump_upperbody_base.tga diff --git a/indra/newview/character/checkerboard.tga b/indra/newview/character/checkerboard.tga Binary files differindex 1950d7403d..1950d7403d 100755..100644 --- a/indra/newview/character/checkerboard.tga +++ b/indra/newview/character/checkerboard.tga diff --git a/indra/newview/character/eyebrows_alpha.tga b/indra/newview/character/eyebrows_alpha.tga Binary files differindex c363e482e1..c363e482e1 100755..100644 --- a/indra/newview/character/eyebrows_alpha.tga +++ b/indra/newview/character/eyebrows_alpha.tga diff --git a/indra/newview/character/eyeliner_alpha.tga b/indra/newview/character/eyeliner_alpha.tga Binary files differindex 1611eb3355..1611eb3355 100755..100644 --- a/indra/newview/character/eyeliner_alpha.tga +++ b/indra/newview/character/eyeliner_alpha.tga diff --git a/indra/newview/character/eyeshadow_inner_alpha.tga b/indra/newview/character/eyeshadow_inner_alpha.tga Binary files differindex 37d7919395..37d7919395 100755..100644 --- a/indra/newview/character/eyeshadow_inner_alpha.tga +++ b/indra/newview/character/eyeshadow_inner_alpha.tga diff --git a/indra/newview/character/eyeshadow_outer_alpha.tga b/indra/newview/character/eyeshadow_outer_alpha.tga Binary files differindex 00eef9d9f7..00eef9d9f7 100755..100644 --- a/indra/newview/character/eyeshadow_outer_alpha.tga +++ b/indra/newview/character/eyeshadow_outer_alpha.tga diff --git a/indra/newview/character/eyewhite.tga b/indra/newview/character/eyewhite.tga Binary files differindex a720496988..a720496988 100755..100644 --- a/indra/newview/character/eyewhite.tga +++ b/indra/newview/character/eyewhite.tga diff --git a/indra/newview/character/facehair_chincurtains_alpha.tga b/indra/newview/character/facehair_chincurtains_alpha.tga Binary files differindex b10397063c..b10397063c 100755..100644 --- a/indra/newview/character/facehair_chincurtains_alpha.tga +++ b/indra/newview/character/facehair_chincurtains_alpha.tga diff --git a/indra/newview/character/facehair_moustache_alpha.tga b/indra/newview/character/facehair_moustache_alpha.tga Binary files differindex 4068c4f2b1..4068c4f2b1 100755..100644 --- a/indra/newview/character/facehair_moustache_alpha.tga +++ b/indra/newview/character/facehair_moustache_alpha.tga diff --git a/indra/newview/character/facehair_sideburns_alpha.tga b/indra/newview/character/facehair_sideburns_alpha.tga Binary files differindex acddc2d9bd..acddc2d9bd 100755..100644 --- a/indra/newview/character/facehair_sideburns_alpha.tga +++ b/indra/newview/character/facehair_sideburns_alpha.tga diff --git a/indra/newview/character/facehair_soulpatch_alpha.tga b/indra/newview/character/facehair_soulpatch_alpha.tga Binary files differindex 687091a29f..687091a29f 100755..100644 --- a/indra/newview/character/facehair_soulpatch_alpha.tga +++ b/indra/newview/character/facehair_soulpatch_alpha.tga diff --git a/indra/newview/character/freckles_alpha.tga b/indra/newview/character/freckles_alpha.tga Binary files differindex a9a4ec0735..a9a4ec0735 100755..100644 --- a/indra/newview/character/freckles_alpha.tga +++ b/indra/newview/character/freckles_alpha.tga diff --git a/indra/newview/character/genepool.xml b/indra/newview/character/genepool.xml index 52300c2bab..52300c2bab 100755..100644 --- a/indra/newview/character/genepool.xml +++ b/indra/newview/character/genepool.xml diff --git a/indra/newview/character/glove_length_alpha.tga b/indra/newview/character/glove_length_alpha.tga Binary files differindex db89ad57e7..db89ad57e7 100755..100644 --- a/indra/newview/character/glove_length_alpha.tga +++ b/indra/newview/character/glove_length_alpha.tga diff --git a/indra/newview/character/gloves_fingers_alpha.tga b/indra/newview/character/gloves_fingers_alpha.tga Binary files differindex dba2eec277..dba2eec277 100755..100644 --- a/indra/newview/character/gloves_fingers_alpha.tga +++ b/indra/newview/character/gloves_fingers_alpha.tga diff --git a/indra/newview/character/head_alpha.tga b/indra/newview/character/head_alpha.tga Binary files differindex 8164525353..8164525353 100755..100644 --- a/indra/newview/character/head_alpha.tga +++ b/indra/newview/character/head_alpha.tga diff --git a/indra/newview/character/head_color.tga b/indra/newview/character/head_color.tga Binary files differindex 74b1b3078b..74b1b3078b 100755..100644 --- a/indra/newview/character/head_color.tga +++ b/indra/newview/character/head_color.tga diff --git a/indra/newview/character/head_hair.tga b/indra/newview/character/head_hair.tga Binary files differindex 5321f35204..5321f35204 100755..100644 --- a/indra/newview/character/head_hair.tga +++ b/indra/newview/character/head_hair.tga diff --git a/indra/newview/character/head_highlights_alpha.tga b/indra/newview/character/head_highlights_alpha.tga Binary files differindex 8dc5239f97..8dc5239f97 100755..100644 --- a/indra/newview/character/head_highlights_alpha.tga +++ b/indra/newview/character/head_highlights_alpha.tga diff --git a/indra/newview/character/head_shading_alpha.tga b/indra/newview/character/head_shading_alpha.tga Binary files differindex e8ea490109..e8ea490109 100755..100644 --- a/indra/newview/character/head_shading_alpha.tga +++ b/indra/newview/character/head_shading_alpha.tga diff --git a/indra/newview/character/head_skingrain.tga b/indra/newview/character/head_skingrain.tga Binary files differindex b42dee0809..b42dee0809 100755..100644 --- a/indra/newview/character/head_skingrain.tga +++ b/indra/newview/character/head_skingrain.tga diff --git a/indra/newview/character/invisible_head.tga b/indra/newview/character/invisible_head.tga Binary files differindex 2673a237d5..2673a237d5 100755..100644 --- a/indra/newview/character/invisible_head.tga +++ b/indra/newview/character/invisible_head.tga diff --git a/indra/newview/character/jacket_length_lower_alpha.tga b/indra/newview/character/jacket_length_lower_alpha.tga Binary files differindex 722bc192a8..722bc192a8 100755..100644 --- a/indra/newview/character/jacket_length_lower_alpha.tga +++ b/indra/newview/character/jacket_length_lower_alpha.tga diff --git a/indra/newview/character/jacket_length_upper_alpha.tga b/indra/newview/character/jacket_length_upper_alpha.tga Binary files differindex e9db7e7b1f..e9db7e7b1f 100755..100644 --- a/indra/newview/character/jacket_length_upper_alpha.tga +++ b/indra/newview/character/jacket_length_upper_alpha.tga diff --git a/indra/newview/character/jacket_open_lower_alpha.tga b/indra/newview/character/jacket_open_lower_alpha.tga Binary files differindex db0c2fb0e3..db0c2fb0e3 100755..100644 --- a/indra/newview/character/jacket_open_lower_alpha.tga +++ b/indra/newview/character/jacket_open_lower_alpha.tga diff --git a/indra/newview/character/jacket_open_upper_alpha.tga b/indra/newview/character/jacket_open_upper_alpha.tga Binary files differindex 71b8a0b805..71b8a0b805 100755..100644 --- a/indra/newview/character/jacket_open_upper_alpha.tga +++ b/indra/newview/character/jacket_open_upper_alpha.tga diff --git a/indra/newview/character/lipgloss_alpha.tga b/indra/newview/character/lipgloss_alpha.tga Binary files differindex 78ceecaf85..78ceecaf85 100755..100644 --- a/indra/newview/character/lipgloss_alpha.tga +++ b/indra/newview/character/lipgloss_alpha.tga diff --git a/indra/newview/character/lips_mask.tga b/indra/newview/character/lips_mask.tga Binary files differindex ae1401c006..ae1401c006 100755..100644 --- a/indra/newview/character/lips_mask.tga +++ b/indra/newview/character/lips_mask.tga diff --git a/indra/newview/character/lipstick_alpha.tga b/indra/newview/character/lipstick_alpha.tga Binary files differindex 2795f1bd40..2795f1bd40 100755..100644 --- a/indra/newview/character/lipstick_alpha.tga +++ b/indra/newview/character/lipstick_alpha.tga diff --git a/indra/newview/character/lowerbody_color.tga b/indra/newview/character/lowerbody_color.tga Binary files differindex a63aa12fca..a63aa12fca 100755..100644 --- a/indra/newview/character/lowerbody_color.tga +++ b/indra/newview/character/lowerbody_color.tga diff --git a/indra/newview/character/lowerbody_highlights_alpha.tga b/indra/newview/character/lowerbody_highlights_alpha.tga Binary files differindex ae3413ac8b..ae3413ac8b 100755..100644 --- a/indra/newview/character/lowerbody_highlights_alpha.tga +++ b/indra/newview/character/lowerbody_highlights_alpha.tga diff --git a/indra/newview/character/lowerbody_shading_alpha.tga b/indra/newview/character/lowerbody_shading_alpha.tga Binary files differindex 0242663a7d..0242663a7d 100755..100644 --- a/indra/newview/character/lowerbody_shading_alpha.tga +++ b/indra/newview/character/lowerbody_shading_alpha.tga diff --git a/indra/newview/character/nailpolish_alpha.tga b/indra/newview/character/nailpolish_alpha.tga Binary files differindex 91af762902..91af762902 100755..100644 --- a/indra/newview/character/nailpolish_alpha.tga +++ b/indra/newview/character/nailpolish_alpha.tga diff --git a/indra/newview/character/pants_length_alpha.tga b/indra/newview/character/pants_length_alpha.tga Binary files differindex 3c4f21c0f2..3c4f21c0f2 100755..100644 --- a/indra/newview/character/pants_length_alpha.tga +++ b/indra/newview/character/pants_length_alpha.tga diff --git a/indra/newview/character/pants_waist_alpha.tga b/indra/newview/character/pants_waist_alpha.tga Binary files differindex 35658c0896..35658c0896 100755..100644 --- a/indra/newview/character/pants_waist_alpha.tga +++ b/indra/newview/character/pants_waist_alpha.tga diff --git a/indra/newview/character/rosyface_alpha.tga b/indra/newview/character/rosyface_alpha.tga Binary files differindex a0c8513da2..a0c8513da2 100755..100644 --- a/indra/newview/character/rosyface_alpha.tga +++ b/indra/newview/character/rosyface_alpha.tga diff --git a/indra/newview/character/rouge_alpha.tga b/indra/newview/character/rouge_alpha.tga Binary files differindex a0c8513da2..a0c8513da2 100755..100644 --- a/indra/newview/character/rouge_alpha.tga +++ b/indra/newview/character/rouge_alpha.tga diff --git a/indra/newview/character/shirt_bottom_alpha.tga b/indra/newview/character/shirt_bottom_alpha.tga Binary files differindex 7cce03dbe0..7cce03dbe0 100755..100644 --- a/indra/newview/character/shirt_bottom_alpha.tga +++ b/indra/newview/character/shirt_bottom_alpha.tga diff --git a/indra/newview/character/shirt_collar_alpha.tga b/indra/newview/character/shirt_collar_alpha.tga Binary files differindex f55f635473..f55f635473 100755..100644 --- a/indra/newview/character/shirt_collar_alpha.tga +++ b/indra/newview/character/shirt_collar_alpha.tga diff --git a/indra/newview/character/shirt_collar_back_alpha.tga b/indra/newview/character/shirt_collar_back_alpha.tga Binary files differindex 43a6453107..43a6453107 100755..100644 --- a/indra/newview/character/shirt_collar_back_alpha.tga +++ b/indra/newview/character/shirt_collar_back_alpha.tga diff --git a/indra/newview/character/shirt_sleeve_alpha.tga b/indra/newview/character/shirt_sleeve_alpha.tga Binary files differindex e3b18f4fc6..e3b18f4fc6 100755..100644 --- a/indra/newview/character/shirt_sleeve_alpha.tga +++ b/indra/newview/character/shirt_sleeve_alpha.tga diff --git a/indra/newview/character/shoe_height_alpha.tga b/indra/newview/character/shoe_height_alpha.tga Binary files differindex d08dd750f3..d08dd750f3 100755..100644 --- a/indra/newview/character/shoe_height_alpha.tga +++ b/indra/newview/character/shoe_height_alpha.tga diff --git a/indra/newview/character/skirt_length_alpha.tga b/indra/newview/character/skirt_length_alpha.tga Binary files differindex c86799469d..c86799469d 100755..100644 --- a/indra/newview/character/skirt_length_alpha.tga +++ b/indra/newview/character/skirt_length_alpha.tga diff --git a/indra/newview/character/skirt_slit_back_alpha.tga b/indra/newview/character/skirt_slit_back_alpha.tga Binary files differindex 0e49688b14..0e49688b14 100755..100644 --- a/indra/newview/character/skirt_slit_back_alpha.tga +++ b/indra/newview/character/skirt_slit_back_alpha.tga diff --git a/indra/newview/character/skirt_slit_front_alpha.tga b/indra/newview/character/skirt_slit_front_alpha.tga Binary files differindex 888bbf71a1..888bbf71a1 100755..100644 --- a/indra/newview/character/skirt_slit_front_alpha.tga +++ b/indra/newview/character/skirt_slit_front_alpha.tga diff --git a/indra/newview/character/skirt_slit_left_alpha.tga b/indra/newview/character/skirt_slit_left_alpha.tga Binary files differindex 210feac1ea..210feac1ea 100755..100644 --- a/indra/newview/character/skirt_slit_left_alpha.tga +++ b/indra/newview/character/skirt_slit_left_alpha.tga diff --git a/indra/newview/character/skirt_slit_right_alpha.tga b/indra/newview/character/skirt_slit_right_alpha.tga Binary files differindex ce11c64bf6..ce11c64bf6 100755..100644 --- a/indra/newview/character/skirt_slit_right_alpha.tga +++ b/indra/newview/character/skirt_slit_right_alpha.tga diff --git a/indra/newview/character/underpants_trial_female.tga b/indra/newview/character/underpants_trial_female.tga Binary files differindex 96bf732351..96bf732351 100755..100644 --- a/indra/newview/character/underpants_trial_female.tga +++ b/indra/newview/character/underpants_trial_female.tga diff --git a/indra/newview/character/underpants_trial_male.tga b/indra/newview/character/underpants_trial_male.tga Binary files differindex 095695ca1c..095695ca1c 100755..100644 --- a/indra/newview/character/underpants_trial_male.tga +++ b/indra/newview/character/underpants_trial_male.tga diff --git a/indra/newview/character/undershirt_trial_female.tga b/indra/newview/character/undershirt_trial_female.tga Binary files differindex e17a309531..e17a309531 100755..100644 --- a/indra/newview/character/undershirt_trial_female.tga +++ b/indra/newview/character/undershirt_trial_female.tga diff --git a/indra/newview/character/upperbody_color.tga b/indra/newview/character/upperbody_color.tga Binary files differindex 85fcc41142..85fcc41142 100755..100644 --- a/indra/newview/character/upperbody_color.tga +++ b/indra/newview/character/upperbody_color.tga diff --git a/indra/newview/character/upperbody_highlights_alpha.tga b/indra/newview/character/upperbody_highlights_alpha.tga Binary files differindex 2d8102b583..2d8102b583 100755..100644 --- a/indra/newview/character/upperbody_highlights_alpha.tga +++ b/indra/newview/character/upperbody_highlights_alpha.tga diff --git a/indra/newview/character/upperbody_shading_alpha.tga b/indra/newview/character/upperbody_shading_alpha.tga Binary files differindex b420506b3e..b420506b3e 100755..100644 --- a/indra/newview/character/upperbody_shading_alpha.tga +++ b/indra/newview/character/upperbody_shading_alpha.tga diff --git a/indra/newview/character/upperbodyfreckles_alpha.tga b/indra/newview/character/upperbodyfreckles_alpha.tga Binary files differindex 76c7ce8849..76c7ce8849 100755..100644 --- a/indra/newview/character/upperbodyfreckles_alpha.tga +++ b/indra/newview/character/upperbodyfreckles_alpha.tga diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif Binary files differindex a20893b1ee..a20893b1ee 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif Binary files differindex ab84bfbcc5..ab84bfbcc5 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif Binary files differindex 400ae42943..400ae42943 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif Binary files differindex 1cae801ee3..1cae801ee3 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_NO.tif b/indra/newview/cursors_mac/UI_CURSOR_NO.tif Binary files differindex bc4a7a75e2..bc4a7a75e2 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_NO.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_NO.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif Binary files differindex 62332fc956..62332fc956 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif Binary files differindex ba6f30fa0e..ba6f30fa0e 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif Binary files differindex 830d5692fd..830d5692fd 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif Binary files differindex e05284214a..e05284214a 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif Binary files differindex c4822adf64..c4822adf64 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif Binary files differindex 5166af6e05..5166af6e05 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif Binary files differindex de2c28bbbc..de2c28bbbc 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif Binary files differindex 2676c78a4f..2676c78a4f 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif Binary files differindex 33df3392f3..33df3392f3 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif Binary files differindex 8952054c23..8952054c23 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif Binary files differindex f366026c33..f366026c33 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif Binary files differindex bbf415a2f1..bbf415a2f1 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif Binary files differindex 2ab71c8af6..2ab71c8af6 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif Binary files differindex db4ca17de9..db4ca17de9 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif Binary files differindex 366630d6b2..366630d6b2 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif Binary files differindex ad5a9ca06d..ad5a9ca06d 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif Binary files differindex 7c0bcfcbc5..7c0bcfcbc5 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif Binary files differindex e9e6a20cd9..e9e6a20cd9 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif Binary files differindex 0a89f9bd91..0a89f9bd91 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif Binary files differindex 3431887aff..3431887aff 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif Binary files differindex 55317f19aa..55317f19aa 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif Binary files differindex 796bbb78e3..796bbb78e3 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif Binary files differindex 98881561cb..98881561cb 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif Binary files differindex 316dd38c69..316dd38c69 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif Binary files differindex bea3d9d442..bea3d9d442 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif Binary files differindex 0cd06379e8..0cd06379e8 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif Binary files differindex 65f3b6de28..65f3b6de28 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif b/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif Binary files differindex c49f16a1c4..c49f16a1c4 100755..100644 --- a/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif +++ b/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif diff --git a/indra/newview/da.lproj/language.txt b/indra/newview/da.lproj/language.txt index 316d25d903..316d25d903 100755..100644 --- a/indra/newview/da.lproj/language.txt +++ b/indra/newview/da.lproj/language.txt diff --git a/indra/newview/es.lproj/language.txt b/indra/newview/es.lproj/language.txt index 6c4381495c..6c4381495c 100755..100644 --- a/indra/newview/es.lproj/language.txt +++ b/indra/newview/es.lproj/language.txt diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 4030324ecb..4030324ecb 100755..100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 6d5284c602..6d5284c602 100755..100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 628a96e988..628a96e988 100755..100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt index e7cae1abdc..e7cae1abdc 100755..100644 --- a/indra/newview/featuretable_solaris.txt +++ b/indra/newview/featuretable_solaris.txt diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 68e09d010e..68e09d010e 100755..100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt diff --git a/indra/newview/fonts/DejaVu-license.txt b/indra/newview/fonts/DejaVu-license.txt index 254e2cc42a..254e2cc42a 100755..100644 --- a/indra/newview/fonts/DejaVu-license.txt +++ b/indra/newview/fonts/DejaVu-license.txt diff --git a/indra/newview/fonts/DejaVuSans-Bold.ttf b/indra/newview/fonts/DejaVuSans-Bold.ttf Binary files differindex ec1a2ebaf2..ec1a2ebaf2 100755..100644 --- a/indra/newview/fonts/DejaVuSans-Bold.ttf +++ b/indra/newview/fonts/DejaVuSans-Bold.ttf diff --git a/indra/newview/fonts/DejaVuSans-BoldOblique.ttf b/indra/newview/fonts/DejaVuSans-BoldOblique.ttf Binary files differindex 1a5576460d..1a5576460d 100755..100644 --- a/indra/newview/fonts/DejaVuSans-BoldOblique.ttf +++ b/indra/newview/fonts/DejaVuSans-BoldOblique.ttf diff --git a/indra/newview/fonts/DejaVuSans-Oblique.ttf b/indra/newview/fonts/DejaVuSans-Oblique.ttf Binary files differindex becc549927..becc549927 100755..100644 --- a/indra/newview/fonts/DejaVuSans-Oblique.ttf +++ b/indra/newview/fonts/DejaVuSans-Oblique.ttf diff --git a/indra/newview/fonts/DejaVuSans.ttf b/indra/newview/fonts/DejaVuSans.ttf Binary files differindex c1b19d8705..c1b19d8705 100755..100644 --- a/indra/newview/fonts/DejaVuSans.ttf +++ b/indra/newview/fonts/DejaVuSans.ttf diff --git a/indra/newview/fonts/DejaVuSansMono.ttf b/indra/newview/fonts/DejaVuSansMono.ttf Binary files differindex 6bc854ddae..6bc854ddae 100755..100644 --- a/indra/newview/fonts/DejaVuSansMono.ttf +++ b/indra/newview/fonts/DejaVuSansMono.ttf diff --git a/indra/newview/fr.lproj/language.txt b/indra/newview/fr.lproj/language.txt index 717280ac26..717280ac26 100755..100644 --- a/indra/newview/fr.lproj/language.txt +++ b/indra/newview/fr.lproj/language.txt diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt deleted file mode 100755 index badbe486b9..0000000000 --- a/indra/newview/gpu_table.txt +++ /dev/null @@ -1,663 +0,0 @@ -//GPU_TABLE - that token on line 1 tags this as a gpu table file -// -// Categorizes graphics chips into various classes by name -// -// The table contains regular expressions to match -// against driver strings, a class number, and whether we claim -// to support them or not. -// -// Case is not significant in either the regular expressions or the -// driver strings; the recognizer code lowercases both before using -// them. -// -// If you modify this table, use the (perl) gpu_table_tester -// to compare the results of recognizing known cards (it is easy -// to mess this up by putting things in the wrong order): -// -// perl ../../scripts/gpu_table_tester -g gpu_table.txt tests/gpus_seen.txt | diff - tests/gpus_results.txt -// -// Format: -// Fields are separated by one or more tab (not space) characters -// <recognizer name> <regular expression> <class> <supported> <stats based> <expected OpenGL version> -// -// Class Numbers: -// 0 - Defaults to low graphics settings. No shaders on by default -// 1 - Defaults to low-mid graphics settings. Basic shaders on by default -// 2 - Defaults to mid graphics settings. Atmospherics on by default -// 3 - Defaults to mid-high graphics settings. Advanced Lighting Model on by default -// 4 - Defaults to high graphics settings. Ambient Occlusion on by default -// 5 - Defaults to high-ultra graphics settings. Shadows set to "Sun/Moon+Projectors." -// -// Supported Number: -// 0 - We claim to not support this card. -// 1 - We claim to support this card. -// - -3Dfx .*3Dfx.* 0 0 0 0 -3Dlabs .*3Dlabs.* 0 0 0 0 -Hijacker .*Mohr.*Hijacker.* 0 0 0 0 -ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 0 0 -ATI ARES .*ATI.*ARES.* 0 0 0 0 -ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 0 0 -ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 0 0 -ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 0 0 -ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 0 2.1 -ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 1 3.3 -ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 0 0 -ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 1 1 1 2.1 -ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 0 0 -ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 0 0 -ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 0 0 -ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 0 0 -ATI Radeon X1300 .*ATI.*(Radeon|Diamond|ASUS) *X13.* ?.* 2 1 1 2.1 -ATI Radeon X1400 .*ATI.*(Radeon|Diamond|ASUS) *X14.* ?.* 2 1 1 2.1 -ATI Radeon X1500 .*ATI.*(Radeon|Diamond|ASUS) *X15.* ?.* 2 1 1 2.1 -ATI Radeon X1600 .*ATI.*(Radeon|Diamond|ASUS) *X16.* ?.* 2 1 1 2.1 -ATI Radeon X1700 .*ATI.*(Radeon|Diamond|ASUS) *X17.* ?.* 2 1 1 2.1 -ATI Radeon X1800 .*ATI.*(Radeon|Diamond|ASUS) *X18.* ?.* 3 1 1 2.1 -ATI Radeon X1900 .*ATI.*(Radeon|Diamond|ASUS) *X19.* ?.* 2 1 1 2.1 -ATI Radeon X2800 .*ATI.*(Radeon|Diamond|ASUS) *X28.* ?.* 2 1 1 2.1 -ATI Display Adapter .*ATI.*display adapter.* 1 1 1 4.1 -ATI FireGL 5200 .*ATI.*FireGL V52.* 1 1 1 2.1 -ATI FireGL 5xxx .*ATI.*FireGL V5.* 2 1 1 3.3 -ATI FireGL .*ATI.*Fire.*GL.* 4 1 1 4.2 -ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 0 4.1 -ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 0 0 -ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 0 0 -ATI FirePro M7820 .*ATI.*FirePro.*M78.* 5 1 1 4.2 -ATI FireMV .*ATI.*FireMV.* 0 1 1 3.2 -ATI Generic .*ATI.*Generic.* 0 0 0 0 -ATI Hercules 9800 .*ATI.*Hercules.* 9800.* 1 1 0 0 -ATI IGP 340M .*ATI.*IGP.* 34[0-9]M.* 0 0 0 1.3 -ATI M52 .*ATI.*M52.* 1 1 0 0 -ATI M54 .*ATI.*M54.* 1 1 0 0 -ATI M56 .*ATI.*M56.* 1 1 0 0 -ATI M71 .*ATI.*M71.* 1 1 0 0 -ATI M72 .*ATI.*M72.* 1 1 0 0 -ATI M76 .*ATI.*M76.* 3 1 0 0 -ATI Mobility Radeon 4100 .*ATI.*Mobility.* 41.. 1 1 1 3.3 -ATI Mobility Radeon 5000 .*ATI.*Mobility.* 50.. 1 1 1 4.2 -ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 1 1.3 -ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 0 0 -ATI Mobility Radeon 9800 .*ATI.*Mobility.* 98.* 1 1 0 0 -ATI Mobility Radeon 9700 .*ATI.*Mobility.* 97.* 0 1 1 2.1 -ATI Mobility Radeon 9600 .*ATI.*Mobility.* 96.* 1 1 1 2.1 -ATI Mobility Radeon HD 530v .*ATI.*Mobility.*HD 530v.* 1 1 1 3.3 -ATI Mobility Radeon HD 540v .*ATI.*Mobility.*HD 540v.* 1 1 1 3.3 -ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD 545v.* 2 1 1 4 -ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD 550v.* 3 1 1 4 -ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD 560v.* 3 1 1 3.2 -ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD 565v.* 3 1 1 3.3 -ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD 23.* 0 1 1 2.1 -ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD 24.* 1 1 1 3.3 -ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD 26.* 1 1 1 3.3 -ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD 27.* 3 1 0 0 -ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD 31.* 0 1 0 0 -ATI Mobility Radeon HD 3200 .*ATI.*Mobility.*HD 32.* 0 1 0 0 -ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD 34.* 1 1 1 4 -ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD 36.* 1 1 1 4 -ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD 38.* 3 1 1 3.3 -ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD 42.* 1 1 1 4 -ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*(HD |HD)43.* 1 1 1 4 -ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD 45.* 1 1 1 4 -ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD 46.* 2 1 1 3.3 -ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD 48.* 3 1 1 3.3 -ATI Mobility Radeon HD 5000 Series .*ATI.*Mobility.*HD 50.* 3 1 1 3.2 -ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD 51.* 3 1 1 3.2 -ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD 53.* 3 1 0 0 -ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD 54.* 2 1 1 4.2 -ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD 55.* 3 1 0 4.2 -ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD 56.* 3 1 1 4.2 -ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD 57.* 3 1 1 4.1 -ATI Mobility Radeon X1000 .*ATI.*Mobility.*Radeon ?X1..* 2 1 0 2.1 -ATI Mobility Radeon X1200 .*ATI.*Mobility.*Radeon ?X12.* 2 1 0 2.1 -ATI Mobility Radeon X2000 .*ATI.*Mobility.*Radeon ?X20.* 2 1 0 2.1 -ATI Mobility Radeon X2300 .*ATI.*Mobility.*Radeon ?X23.* 2 1 0 2.1 -ATI Mobility Radeon X2500 .*ATI.*Mobility.*Radeon ?X25.* 2 1 0 2.1 -ATI Mobility Radeon XX000 .*ATI.*Mobility.*Radeon ?Xx.* 2 1 0 2.1 -ATI Radeon HD 5xx .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)5x. 1 1 1 4 -ATI Radeon HD 6200D/G/M .*ATI.*AMD Radeon.* (HD|HD )62..[DGM].* 3 1 0 4.2 -ATI Radeon HD 6300D/G/M .*ATI.*AMD Radeon.* (HD|HD )63..[DGM].* 3 1 1 4.2 -ATI Radeon HD 6400D/G/M .*ATI.*AMD Radeon.* (HD|HD )64..[DGM].* 3 1 0 4.2 -ATI Radeon HD 6500D/G/M .*ATI.*AMD Radeon.* (HD|HD )65..[DGM].* 4 1 1 4.2 -ATI Radeon HD 6600D/G/M .*ATI.*AMD Radeon.* (HD|HD )66..[DGM].* 4 1 0 4.2 -ATI Radeon HD 6700D/G/M .*ATI.*AMD Radeon.* (HD|HD )67..[DGM].* 4 1 0 4.2 -ATI Radeon HD 6800D/G/M .*ATI.*AMD Radeon.* (HD|HD )68..[DGM].* 4 1 0 4.2 -ATI Radeon HD 6900D/G/M .*ATI.*AMD Radeon.* (HD|HD )69..[DGM].* 4 1 0 4.2 -ATI Radeon HD 7200D/G/M .*ATI.*AMD Radeon.* (HD|HD )72..[DGM].* 3 1 0 4.2 -ATI Radeon HD 7300D/G/M .*ATI.*AMD Radeon.* (HD|HD )73..[DGM].* 3 1 0 4.2 -ATI Radeon HD 7400D/G/M .*ATI.*AMD Radeon.* (HD|HD )74..[DGM].* 3 1 0 4.2 -ATI Radeon HD 7500D/G/M .*ATI.*AMD Radeon.* (HD|HD )75..[DGM].* 4 1 0 4.2 -ATI Radeon HD 7600D/G/M .*ATI.*AMD Radeon.* (HD|HD )76..[DGM].* 4 1 0 4.2 -ATI Radeon HD 7700D/G/M .*ATI.*AMD Radeon.* (HD|HD )77..[DGM].* 4 1 0 4.2 -ATI Radeon HD 7800D/G/M .*ATI.*AMD Radeon.* (HD|HD )78..[DGM].* 4 1 0 4.2 -ATI Radeon HD 7900D/G/M .*ATI.*AMD Radeon.* (HD|HD )79..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8200D/G/M .*ATI.*AMD Radeon.* (HD|HD )82..[DGM].* 3 1 0 4.2 -ATI Radeon HD 8300D/G/M .*ATI.*AMD Radeon.* (HD|HD )83..[DGM].* 3 1 0 4.2 -ATI Radeon HD 8400D/G/M .*ATI.*AMD Radeon.* (HD|HD )84..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8500D/G/M .*ATI.*AMD Radeon.* (HD|HD )85..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8600D/G/M .*ATI.*AMD Radeon.* (HD|HD )86..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8700D/G/M .*ATI.*AMD Radeon.* (HD|HD )87..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8800D/G/M .*ATI.*AMD Radeon.* (HD|HD )88..[DGM].* 4 1 0 4.2 -ATI Radeon HD 8900D/G/M .*ATI.*AMD Radeon.* (HD|HD )89..[DGM].* 4 1 0 4.2 -ATI Radeon HD 2300 .*ATI.*Radeon.* (HD|HD )23.. 0 1 1 3.3 -ATI Radeon HD 2400 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)24.. 1 1 1 4 -ATI Radeon HD 2600 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)26.. 2 1 1 4 -ATI Radeon HD 2900 .*ATI.*Radeon.* (HD|HD )29.. 3 1 1 3.3 -ATI Radeon HD 3000 .*ATI.*Radeon.* (HD|HD )30.. 0 1 0 0 -ATI Radeon HD 3100 .*ATI.*Radeon.* (HD|HD )31.. 1 1 0 0 -ATI Radeon HD 3200 .*ATI.*Radeon.* (HD|HD )32.. 1 1 1 4 -ATI Radeon HD 3300 .*ATI.*Radeon.* (HD|HD )33.. 1 1 1 3.3 -ATI Radeon HD 3400 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |AH||AX|EAH)34.. 1 1 1 4 -ATI Radeon HD 3500 .*ATI.*Radeon.* (HD|HD )35.. 2 1 0 0 -ATI Radeon HD 3600 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |AH||AX|EAH)36.. 3 1 1 4 -ATI Radeon HD 3700 .*ATI.*Radeon.* (HD|HD )37.. 3 1 0 3.3 -ATI HD3700 .*ATI.* HD37.. 3 1 0 3.3 -ATI Radeon HD 3800 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH|AX|)38.. 3 1 1 4 -ATI Radeon HD 4100 .*ATI.*Radeon.* (HD|HD )41.. 1 1 0 0 -ATI Radeon HD 4200 .*ATI.*Radeon.* (HD|HD )42.. 1 1 1 4 -ATI Radeon HD 4300 .*ATI.*(Radeon|ASUS).* (AH|AX|HD4|HD 4|EAH4|4)3.. 2 1 1 4 -ATI Radeon HD 4400 .*ATI.*Radeon.* (HD|HD )44.. 2 1 0 0 -ATI Radeon HD 4500 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)45.. 2 1 1 3.3 -ATI RADEON E4690 .*ATI.*RADEON.* E46.. 3 1 1 4 -ATI Radeon HD 4600 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)46.. 3 1 1 4 -ATI Radeon HD 4700 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)47.. 3 1 1 3.3 -ATI Radeon HD 4800 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)48.. 3 1 1 4 -ATI Radeon HD 5000 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)50.. 3 1 1 4.2 -ATI Radeon HD 5400 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)54.. 3 1 1 4.2 -ATI Radeon HD 5500 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)55.. 3 1 1 4.2 -ATI Radeon HD 5600 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)56.. 3 1 1 4.2 -ATI Radeon HD 5700 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)57.. 3 1 1 4.2 -ATI Radeon HD 5800 .*ATI.*(Radeon|ASUS).* (AH|AX|HD|HD |EAH)58.. 4 1 1 4.2 -ATI Radeon HD 5900 .*ATI.*Radeon.* (HD|HD )59.. 4 1 1 4.2 -ATI Radeon HD 6200 .*ATI.*Radeon.* (HD|HD )62.. 0 1 1 4.2 -ATI Radeon HD 6300 .*ATI.*Radeon.* (HD|HD )63.. 1 1 1 4.2 -ATI Radeon HD 6400 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)64.. 3 1 1 4.2 -ATI Radeon HD 6500 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)65.. 3 1 1 4.2 -ATI Radeon HD 6600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)66.. 3 1 1 4.2 -ATI Radeon HD 6700 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)67.. 3 1 1 4.2 -ATI Radeon HD 6800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)68.. 4 1 1 4.2 -ATI Radeon HD 6900 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)69.. 5 1 1 4.2 -ATI Radeon HD 6x00 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)6x.. 5 1 1 4.2 -ATI Radeon HD 7100 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)71.* 2 1 0 0 -ATI Radeon HD 7200 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)72.* 2 1 0 4.2 -ATI Radeon HD 7300 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)73.* 2 1 0 4.2 -ATI Radeon HD 7400 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)74.* 2 1 0 4.2 -ATI Radeon HD 7500 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)75.* 3 1 1 4.2 -ATI Radeon HD 7600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)76.* 3 1 0 4.2 -ATI Radeon HD 7700 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)77.* 4 1 1 4.2 -ATI Radeon HD 7800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)78.* 5 1 1 4.2 -ATI Radeon HD 7900 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)79.* 5 1 1 4.2 -ATI Radeon HD 7000 Series .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)7000 Series.* 3 1 1 4.2 -ATI Radeon HD 8200 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)82.* 2 1 0 4.2 -ATI Radeon HD 8300 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)83.* 2 1 0 4.2 -ATI Radeon HD 8400 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)84.* 2 1 0 4.2 -ATI Radeon HD 8500 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)85.* 3 1 1 4.2 -ATI Radeon HD 8600 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)86.* 3 1 0 4.2 -ATI Radeon HD 8700 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)87.* 4 1 1 4.2 -ATI Radeon HD 8800 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)88.* 5 1 1 4.2 -ATI Radeon HD 8900 (OEM) .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)89.* 5 1 1 4.2 -ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 0 0 -ATI Radeon 2100 .*ATI.*Radeon 21.. 0 1 1 2.1 -ATI Radeon 3000 .*ATI.*Radeon 30.. 1 1 1 4 -ATI Radeon 3100 .*ATI.*Radeon 31.. 0 1 1 3.3 -ATI Radeon 5xxx .*ATI.*Radeon 5... 3 1 0 0 -ATI Radeon 6xxx .*ATI.*Radeon 6... 0 1 0 0 -ATI Radeon 7xxx .*ATI.*Radeon 7... 0 1 1 2 -ATI Radeon 8xxx .*ATI.*Radeon 8... 0 1 0 0 -ATI Radeon 9000 .*ATI.*Radeon 90.. 0 1 1 1.3 -ATI Radeon 9100 .*ATI.*Radeon 91.. 0 1 0 0 -ATI Radeon 9200 .*ATI.*Radeon 92.. 0 1 1 1.3 -ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1 1 2.1 -ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1 1 2.1 -ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1 0 0 -ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1 1 2.1 -ATI Radeon R7 .*ATI.*(Radeon|ASUS).* R7.* 4 1 0 4.2 -ATI Radeon R9 .*ATI.*(Radeon|ASUS).* R9.* 5 1 0 4.2 -ATI Radeon RV250 .*ATI.*RV250.* 0 1 0 0 -ATI Radeon RV600 .*ATI.*RV6.* 1 1 0 0 -ATI Radeon RX700 .*ATI.*RX70.* 1 1 0 0 -ATI Radeon RX800 .*ATI.*Radeon RX80.* 2 1 0 0 -ATI RS880M .*ATI.*RS880M 1 1 0 0 -ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 0 0 -ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 0 0 -ATI Radeon X300 .*ATI.*Radeon X3.* 1 1 1 2.1 -ATI RADEON X300SE .*ATI.*RADEON[ ]*X300SE* 1 1 1 2.1 -ATI Radeon X400 .*ATI.*Radeon ?X4.* 0 1 0 0 -ATI Radeon X500 .*ATI.*Radeon ?X5.* 1 1 1 2.1 -ATI Radeon X600 .*ATI.*(Radeon |ASUS Extreme A)X6.* 1 1 1 2.1 -ATI Radeon X700 .*ATI.*Radeon ?X7.* 2 1 1 2.1 -ATI Radeon X800 .*ATI.*Radeon ?X8.* 1 1 1 2.1 -ATI Radeon X900 .*ATI.*Radeon ?X9.* 2 1 0 0 -ATI Radeon X1000 .*ATI.*Radeon ?X10.* 2 1 0 2.1 -ATI Radeon X1100 .*ATI.*Radeon ?X11.* 2 1 0 2.1 -ATI Radeon X1200 .*ATI.*Radeon ?X12.* 2 1 0 2.1 -ATI Radeon X1xxx .*ATI.*Radeon ?X1xx.* 2 1 0 2.1 -ATI Radeon X12xx .*ATI.*Radeon ?X12x.* 2 1 0 2.1 -ATI Radeon X2xxx .*ATI.*Radeon ?X2x.* 2 1 0 2.1 -ATI Radeon X2300 .*ATI.*Radeon ?X23.* 2 1 0 2.1 -ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 1 1 2.1 -ATI Radeon .*ATI.*Radeon$ 3 1 0 0 -ATI Rage 128 .*ATI.*Rage 128.* 0 1 0 0 -ATI R300 (9700) .*R300.* 0 1 1 2.1 -ATI R350 (9800) .*R350.* 1 1 0 0 -ATI R580 (X1900) .*R580.* 3 1 0 0 -ATI RC410 (Xpress 200) .*RC410.* 0 0 0 0 -ATI RS48x (Xpress 200x) .*RS48.* 0 0 0 0 -ATI RS600 (Xpress 3200) .*RS600.* 0 0 0 0 -ATI RV350 (9600) .*RV350.* 0 1 0 0 -ATI RV370 (X300) .*RV370.* 0 1 0 0 -ATI RV410 (X700) .*RV410.* 1 1 0 0 -ATI RV515 .*RV515.* 1 1 0 0 -ATI RV570 (X1900 GT/PRO) .*RV570.* 3 1 0 0 -ATI RV380 .*RV380.* 0 1 0 0 -ATI RV530 .*RV530.* 1 1 0 0 -ATI RX480 (Xpress 200P) .*RX480.* 0 1 0 0 -ATI RX700 .*RX700.* 1 1 0 0 -AMD ANTILLES (HD 6990) .*(AMD|ATI).*Antilles.* 3 1 0 0 -ATI ROBSON .*(AMD|ATI).*ROBSON.* 3 1 0 4 -AMD ARUBA (HD 6800) .*(AMD|ATI).*ARUBA.* 3 1 1 2.1 -AMD BARTS (HD 6800) .*(AMD|ATI).*Barts.* 3 1 1 2.1 -AMD BA (HD 6800) .*(AMD|ATI).*BA.* 3 1 1 2.1 -AMD WRESTLER .*(AMD|ATI).*WRESTLER.* 3 1 1 4 -AMD SUMO .*(AMD|ATI).*SUMO.* 3 1 1 4.1 -AMD CAICOS (HD 6400) .*(AMD|ATI).*Caicos.* 3 1 0 0 -AMD CAYMAN (HD 6900) .*(AMD|ATI).*(Cayman|CAYMAM).* 3 1 0 0 -AMD CEDAR (HD 5450) .*(AMD|ATI).*Cedar.* 2 1 0 2.1 -AMD CYPRESS (HD 5800) .*(AMD|ATI).*Cypress.* 3 1 0 0 -AMD HEMLOCK (HD 5970) .*(AMD|ATI).*Hemlock.* 3 1 0 0 -AMD JUNIPER (HD 5700) .*(AMD|ATI).*Juniper.* 3 1 0 0 -AMD PARK .*(AMD|ATI).*Park.* 3 1 0 0 -AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*Redwood.* 3 1 0 1.4 -AMD TURKS (HD 6500/6600) .*(AMD|ATI).*Turks.* 3 1 0 2.1 -AMD PITCAIRN (HD 7870) .*(AMD|ATI).*Pitcairn.* 3 1 0 2.1 -AMD TAHITI (HD 7000) .*(AMD|ATI).*Tahiti.* 3 1 0 2.1 -AMD RS780 (HD 3200) .*RS780.* 0 1 1 2.1 -AMD RS880 (HD 4200) .*RS880.* 0 1 1 3.2 -AMD RV610 (HD 2400) .*RV610.* 1 1 0 0 -AMD RV620 (HD 3400) .*RV620.* 1 1 0 0 -AMD RV630 (HD 2600) .*RV630.* 2 1 0 0 -AMD RV635 (HD 3600) .*RV635.* 3 1 0 1.4 -AMD RV670 (HD 3800) .*RV670.* 3 1 0 0 -AMD R680 (HD 3870 X2) .*R680.* 3 1 0 0 -AMD R700 (HD 4800 X2) .*R700.* 3 1 0 0 -AMD RV710 (HD 4300) .*RV710.* 0 1 1 1.4 -AMD RV730 (HD 4600) .*RV730.* 3 1 0 1.4 -AMD RV740 (HD 4700) .*RV740.* 3 1 0 0 -AMD RV770 (HD 4800) .*RV770.* 3 1 0 0 -AMD RV790 (HD 4800) .*RV790.* 3 1 0 0 -ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1 1 3.3 -ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1 0 0 -ATI Radeon DDR .*ATI.*Radeon ?DDR.* 0 1 0 0 -ATI FirePro 2000 .*ATI.*FirePro [V]*2.* 2 1 1 4.2 -ATI FirePro 3000 .*ATI.*FirePro [V]*3.* 2 1 0 0 -ATI FirePro 4000 .*ATI.*FirePro [V]*4.* 2 1 0 4.1 -ATI FirePro 5000 .*ATI.*FirePro [V]*5.* 3 1 0 0 -ATI FirePro 7000 .*ATI.*FirePro [V]*7.* 3 1 0 0 -ATI FirePro M .*ATI.*FirePro M.* 3 1 1 4.2 -Intel X3100 .*Intel.*X3100.* 1 1 1 2.1 -Intel GMA 3600 .*Intel.* 3600.* 0 1 1 3 -Intel Royal BNA .*Intel.*Royal[ ]*BNA.* 0 0 0 0 -Intel 830M .*Intel.*830M 0 0 0 0 -Intel 845G .*Intel.*845G 0 0 1 1.4 -Intel 855GM .*Intel.*855GM 0 0 1 1.4 -Intel 865G .*Intel.*865G 0 0 1 1.4 -Intel 900 .*Intel.*900.*900 0 0 0 0 -Intel 915GM .*Intel.*915GM 0 0 1 1.4 -Intel 915G .*Intel.*915G 0 0 1 1.4 -Intel 945GM .*Intel.*945GM.* 0 1 1 1.4 -Intel 945G .*Intel.*945G.* 0 1 1 1.4 -Intel 950 .*Intel.*950.* 0 1 1 1.4 -Intel 965 .*Intel.*965.* 0 1 1 2.1 -Intel G33 .*Intel.*G33.* 1 0 1 1.4 -Intel G41 .*Intel.*G41.* 1 1 1 2.1 -Intel G45 .*Intel.*G45.* 1 1 1 2.1 -Intel Bear Lake .*Intel.*Bear Lake.* 1 0 1 1.4 -Intel Broadwater .*Intel.*Broadwater.* 0 0 1 1.4 -Intel Brookdale .*Intel.*Brookdale.* 0 0 1 1.3 -Intel Cantiga .*Intel.*Cantiga.* 0 0 1 2 -Intel Eaglelake .*Intel.*Eaglelake.* 1 1 1 2 -Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 1 1 1 2.1 -Intel HD Graphics 2500 .*Intel.*HD Graphics 25.* 2 1 0 4.2 -Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 3.1 -Intel HD Graphics 3000 .*Intel.*HD Graphics 3.* 3 1 1 3.1 -Intel HD Graphics 4200 .*Intel.*HD Graphics 42.* 3 1 0 4.2 -Intel HD Graphics 4400 .*Intel.*HD Graphics 44.* 3 1 0 4.2 -Intel HD Graphics 4600 .*Intel.*HD Graphics 46.* 3 1 0 4.2 -Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 4.2 -Intel Intel Iris Pro Graphics 5200 .*Intel.*Iris Pro Graphics 52.* 4 1 0 4 -Intel Intel Iris Graphics 5100 .*Intel.*Iris Graphics 51.* 4 1 0 4 -Intel Intel Iris OpenGL Engine .*Intel.*Iris OpenGL.* 4 1 0 4 -Intel Intel Iris Pro OpenGL Engine .*Intel.*Iris Pro OpenGL.* 5 1 0 4 -Intel HD Graphics 5000 .*Intel.*HD Graphics 5.* 4 1 0 4 -Intel HD Graphics .*Intel.*HD Graphics.* 2 1 1 4 -Intel Mobile 4 Series .*Intel.*Mobile.* 4 Series.* 0 1 1 2.1 -Intel Mobile 45 Express .*Intel.*Mobile.* 45 Express Chipset.* 0 1 0 2.1 -Intel 4 Series Internal .*Intel.* 4 Series Internal.* 1 1 1 2.1 -Intel Media Graphics HD .*Intel.*Media Graphics HD.* 0 1 0 0 -Intel Montara .*Intel.*Montara.* 0 0 1 1.3 -Intel Pineview .*Intel.*Pineview.* 0 1 1 1.4 -Intel Springdale .*Intel.*Springdale.* 0 0 1 1.3 -Intel Grantsdale .*Intel.*Grantsdale.* 1 1 0 0 -Intel Q45/Q43 .*Intel.*Q4.* 1 1 1 2.1 -Intel B45/B43 .*Intel.*B4.* 1 1 1 2.1 -Intel 3D-Analyze .*Intel.*3D-Analyze.* 2 1 0 0 -Matrox .*Matrox.* 0 0 0 0 -Mesa .*Mesa.* 1 0 1 3 -Gallium .*Gallium.* 1 1 1 2.1 -NVIDIA GeForce Pre-Release .*NVIDIA .*GeForce[ ]Pre-Release.* 2 1 1 3.3 -NVIDIA D1xP1 .*NVIDIA .*D1[0-4]P1.* 0 0 0 0 -NVIDIA Mystery PCI Card .*NVIDIA .Corporation [/]PCI]/]SSE2.* 0 0 0 0 -NVIDIA Quadro FX 770M .*Quadro.*FX 77[0-9]M.* 2 1 0 3.3 -NVIDIA Quadro FX 1500M .*Quadro.*FX 150[0-9]M.* 1 1 0 2.1 -NVIDIA Quadro FX 1600M .*Quadro.*FX 160[0-9]M.* 2 1 0 3.3 -NVIDIA Quadro FX 2500M .*Quadro.*FX 250[0-9]M.* 2 1 0 2.1 -NVIDIA Quadro FX 2700M .*Quadro.*FX 270[0-9]M.* 3 1 0 3.3 -NVIDIA Quadro FX 2800M .*Quadro.*FX 280[0-9]M.* 3 1 0 3.3 -NVIDIA Quadro FX 3500 .*Quadro.*FX 3500.* 2 1 0 2.1 -NVIDIA Quadro FX 3600 .*Quadro.*FX 3600.* 3 1 0 3.3 -NVIDIA Quadro FX 3700 .*Quadro.*FX 3700.* 3 1 0 3.3 -NVIDIA Quadro FX 3800 .*Quadro.*FX 3800.* 3 1 0 3.3 -NVIDIA Quadro FX 4500 .*Quadro.*FX 45.* 3 1 0 2.1 -NVIDIA Quadro FX 880M .*Quadro.*FX 88[0-9]M.* 3 1 0 3.3 -NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro FX 4800.* 3 1 0 3.1 -NVIDIA Quadro FX .*NVIDIA .*Quadro FX.* 1 1 0 3.3 -NVIDIA Quadro NVS 1xxM .*NVIDIA .*(Quadro)* NVS *1.[05]M.* 0 1 1 3.3 -NVIDIA Quadro NVS 300M .*NVIDIA .*(Quadro)*[ ]+NVS *30[0-9]M.* 2 1 0 0 -NVIDIA Quadro NVS 320M .*NVIDIA .*(Quadro)*[ ]+NVS *32[0-9]M.* 2 1 0 0 -NVIDIA Quadro NVS 2100M .*NVIDIA .*(Quadro)*[ ]+NVS *210[0-9]M.* 2 1 0 3.3 -NVIDIA Quadro NVS 3100M .*NVIDIA .*(Quadro)*[ ]+NVS *310[0-9]M.* 2 1 0 3.3 -NVIDIA Quadro NVS 4200M .*NVIDIA .*(Quadro)*[ ]+NVS *420[0-9]M.* 2 1 0 4.2 -NVIDIA Quadro NVS 5100M .*NVIDIA .*(Quadro)*[ ]+NVS *510[0-9]M.* 2 1 0 0 -NVIDIA Quadro NVS 5200M .*NVIDIA .*(Quadro)*[ ]+NVS *520[0-9]M.* 2 1 0 0 -NVIDIA Quadro NVS 5400M .*NVIDIA .*(Quadro)*[ ]+NVS *540[0-9]M.* 2 1 0 0 -NVIDIA Quadro NVS .*NVIDIA .*(Quadro)*[ ]+NVS 0 1 0 4.2 -NVIDIA Quadro2 .*Quadro2.* 0 1 0 1.5 -NVIDIA Quadro 1000M .*Quadro.* (K1|1)00[0-9]M.* 2 1 0 4.2 -NVIDIA Quadro 1100M .*Quadro.* *110[0-9]M.* 2 1 0 3.3 -NVIDIA Quadro K600 .*Quadro.* (K6|6)0[0-9][^0].* 2 1 0 4.2 -NVIDIA Quadro K1000 .*Quadro.* (K1|1)00[0-9].* 2 1 0 4.2 -NVIDIA Quadro 2000 M/D .*Quadro.* (K2|2)000.* 3 1 0 4.2 -NVIDIA Quadro 3000M .*Quadro.* (K3|3)00[0-9]M.* 3 1 0 4.2 -NVIDIA Quadro 4000M .*Quadro.* (K4|4)00[0-9]M.* 3 1 0 4.2 -NVIDIA Quadro 4000 .*Quadro.* (K4|4)000.* 3 1 0 4.2 -NVIDIA Quadro 50x0 M .*Quadro.* (K5|5)0.0.* 3 1 0 4.2 -NVIDIA Quadro 6000 .*Quadro.* (K6|6)000.* 3 1 0 0 -NVIDIA Quadro 400 .*Quadro.* 400.* 2 1 0 3.3 -NVIDIA Quadro 600 .*Quadro.* 600.* 2 1 0 4.2 -NVIDIA Quadro4 .*Quadro4.* 0 1 0 1.5 -NVIDIA Quadro DCC .*Quadro DCC.* 0 1 0 0 -NVIDIA Quadro CX .*Quadro.*CX.* 3 1 0 0 -NVIDIA G 100M .*NVIDIA .*G *10[0-9]M.* 1 1 1 3.3 -NVIDIA G 110M .*NVIDIA .*G *11[0-9]M.* 1 1 1 3.3 -NVIDIA G 120M .*NVIDIA .*G *12[0-9]M.* 1 1 1 3.3 -NVIDIA G 200M .*NVIDIA .*G *20[0-9]M.* 1 1 0 0 -NVIDIA G 410M .*NVIDIA .*G *41[0-9]M.* 3 1 1 4.2 -NVIDIA GT 130M .*NVIDIA .*GT *13[0-9]M.* 3 1 1 3.3 -NVIDIA GT 140M .*NVIDIA .*GT *14[0-9]M.* 3 1 1 3.3 -NVIDIA GT 150M .*NVIDIA .*GTS *15[0-9]M.* 2 1 0 0 -NVIDIA GTS 160M .*NVIDIA .*GTS *16[0-9]M.* 2 1 0 0 -NVIDIA G210M .*NVIDIA .*G *21[0-9]M.* 3 1 0 3.3 -NVIDIA GT 220M .*NVIDIA .*GT 22[0-9]M.* 3 1 1 3.3 -NVIDIA GT 230M .*NVIDIA .*GT 23[0-9]M.* 3 1 1 3.3 -NVIDIA GT 240M .*NVIDIA .*GT 24[0-9]M.* 3 1 1 3.3 -NVIDIA GT 260M .*NVIDIA .*GT 26[0-9]M.* 3 1 1 3.3 -NVIDIA GTS 250M .*NVIDIA .*GTS 25[0-9]M.* 3 1 0 3.3 -NVIDIA GTS 260M .*NVIDIA .*GTS 26[0-9]M.* 3 1 0 0 -NVIDIA GTX 260M .*NVIDIA .*GTX 26[0-9]M.* 3 1 0 3.3 -NVIDIA GTX 270M .*NVIDIA .*GTX 27[0-9]M.* 3 1 0 0 -NVIDIA GTX 280M .*NVIDIA .*GTX 28[0-9]M.* 3 1 0 3.3 -NVIDIA 300M .*NVIDIA .*GT 30[0-9]M.* 3 1 1 4.2 -NVIDIA G 310M .*NVIDIA .*G[T]* 31[0-9]M.* 2 1 0 3.3 -NVIDIA GT 320M .*NVIDIA .*G[T]* 32[0-9]M.* 3 1 0 3.3 -NVIDIA GT 330M .*NVIDIA .*G[T]* 33[0-9]M.* 3 1 1 3.3 -NVIDIA GT 340M .*NVIDIA .*G[T]* 34[0-9]M.* 4 1 1 3.3 -NVIDIA GTS 350M .*NVIDIA .*GTS 35[0-9]M.* 4 1 1 3.3 -NVIDIA GTS 360M .*NVIDIA .*GTS 36[0-9]M.* 5 1 1 3.3 -NVIDIA 310M .*NVIDIA .*31[0-9]M.* 2 1 0 3.3 -NVIDIA 320M .*NVIDIA .*320M.* 2 1 0 3.3 -NVIDIA 400M .*NVIDIA .*[ ]+40[0-9]M.* 2 1 0 0 -NVIDIA 410M .*NVIDIA .*[ ]+41[0-9]M.* 3 1 0 0 -NVIDIA GT 420M .*NVIDIA .*GT *42[0-9]M.* 3 1 1 4.3 -NVIDIA GT 430M .*NVIDIA .*GT *43[0-9]M.* 3 1 1 4.3 -NVIDIA GT 440M .*NVIDIA .*GT *44[0-9]M.* 3 1 1 4.3 -NVIDIA GT 450M .*NVIDIA .*GT *45[0-9]M.* 3 1 0 0 -NVIDIA GTX 460M .*NVIDIA .*GTX *46[0-9]M.* 4 1 1 4.3 -NVIDIA GTX 470M .*NVIDIA .*GTX *47[0-9]M.* 3 1 0 4.3 -NVIDIA GTX 480M .*NVIDIA .*GTX *48[0-9]M.* 3 1 1 4.3 -NVIDIA GT 520M .*NVIDIA .*GT *52[0-9]M.* 3 1 1 4.3 -NVIDIA GT 530M .*NVIDIA .*GT *53[0-9]M.* 3 1 1 4.3 -NVIDIA GT 540M .*NVIDIA .*GT *54[0-9]M.* 3 1 1 4.3 -NVIDIA GT 550M .*NVIDIA .*GT *55[0-9]M.* 3 1 1 4.3 -NVIDIA GTX 560M .*NVIDIA .*GTX *56[0-9]M.* 3 1 0 4.3 -NVIDIA GTX 570M .*NVIDIA .*GTX *57[0-9]M.* 5 1 0 4.3 -NVIDIA GTX 580M .*NVIDIA .*GTX *58[0-9]M.* 5 1 1 4.3 -NVIDIA 610M .*NVIDIA.* 61[0-9]M.* 3 1 1 4.3 -NVIDIA GT 620M .*NVIDIA .*GT *62[0-9]M.* 3 1 0 4.3 -NVIDIA GT 630M .*NVIDIA .*GT *63[0-9]M.* 3 1 0 4.3 -NVIDIA GT 640M .*NVIDIA .*GT *64[0-9]M.* 3 1 0 4.3 -NVIDIA GT 650M .*NVIDIA .*GT *65[0-9]M.* 3 1 0 4.3 -NVIDIA GTX 660M .*NVIDIA .*GTX *66[0-9]M.* 5 1 0 4.3 -NVIDIA GTX 670M .*NVIDIA .*GTX *67[0-9]M.* 5 1 1 4.3 -NVIDIA GTX 680M .*NVIDIA .*GTX *68[0-9]M.* 5 1 0 4.3 -NVIDIA GTX 690M .*NVIDIA .*GTX *69[0-9]M.* 5 1 0 4.3 -NVIDIA 710M .*NVIDIA.* 71[0-9]M.* 3 1 0 4.3 -NVIDIA GT 720M .*NVIDIA .*GT *72[0-9]M.* 3 1 0 4.3 -NVIDIA GT 730M .*NVIDIA .*GT *73[0-9]M.* 3 1 0 4.3 -NVIDIA GT 740M .*NVIDIA .*GT *74[0-9]M.* 3 1 0 4.3 -NVIDIA GT 750M .*NVIDIA .*GT *75[0-9]M.* 3 1 0 4.3 -NVIDIA GTX 760M .*NVIDIA .*GTX *76[0-9]M.* 5 1 0 4.3 -NVIDIA GTX 770M .*NVIDIA .*GTX *77[0-9]M.* 5 1 0 4.3 -NVIDIA GTX 780M .*NVIDIA .*GTX *78[0-9]M.* 5 1 0 4.3 -NVIDIA G100 .*NVIDIA .*G10.* 3 1 1 4.2 -NVIDIA GT 120 .*NVIDIA .*GT 12.* 2 1 0 3.3 -NVIDIA GT 130 .*NVIDIA .*GT 13.* 2 1 0 3.3 -NVIDIA GT 140 .*NVIDIA .*GT 14.* 2 1 0 3.3 -NVIDIA GT 150 .*NVIDIA .*GT 15.* 2 1 1 3.3 -NVIDIA GTS 150 .*NVIDIA .*GTS 15.* 2 1 0 0 -NVIDIA 200 .*NVIDIA .[ ]+200[^0].* 2 1 1 3.3 -NVIDIA G200 .*NVIDIA .*G[ ]*200.* 2 1 1 3.3 -NVIDIA G210 .*NVIDIA .*G[ ]*210.* 3 1 1 3.3 -NVIDIA 205 .*NVIDIA .*205[^0]*.* 3 1 1 3.3 -NVIDIA 210 .*NVIDIA .*210$ 3 1 1 3.3 -NVIDIA GeForce 210 .*NVIDIA .*(GeForce)[ ]210[^0]*$ 3 1 1 3.3 -NVIDIA GT 220 .*NVIDIA .*GT *22.* 2 1 1 3.3 -NVIDIA GT 230 .*NVIDIA .*GT *23.* 2 1 1 3.3 -NVIDIA GT 240 .*NVIDIA .*GT *24.* 4 1 1 3.3 -NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 4 1 1 3.3 -NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 4 1 1 3.3 -NVIDIA GTS 360 .*NVIDIA .*GTS *36.* 4 1 1 3.3 -NVIDIA GTX 260 .*NVIDIA .*GTX *26.* 4 1 1 3.3 -NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 3.3 -NVIDIA GTX 280 .*NVIDIA .*GTX *28.* 4 1 1 3.3 -NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 3.3 -NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 3.3 -NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 3.3 -NVIDIA GT 340 .*NVIDIA .*GT *34.* 3 1 0 0 -NVIDIA 310 .*NVIDIA .*310[^0M]*.* 3 1 1 3.3 -NVIDIA 315 .*NVIDIA .*315[^0M]*.* 3 1 1 3.3 -NVIDIA 320 .*NVIDIA .*320[^0M]*.* 3 1 1 3.3 -NVIDIA 405 .*NVIDIA .*405[^0]*.* 3 1 0 3.3 -NVIDIA 410 .*NVIDIA .*410[^0]*.* 3 1 0 3.3 -NVIDIA GT 415 .*NVIDIA .*GT *415.* 3 1 1 4.3 -NVIDIA GT 420 .*NVIDIA .*GT *42.* 3 1 1 4.3 -NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.3 -NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 1 4.3 -NVIDIA GT 450 .*NVIDIA .*GT *45.* 4 1 1 4.3 -NVIDIA GTS 450 .*NVIDIA .*GTS *45.* 4 1 1 4.3 -NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.3 -NVIDIA GTX 470 .*NVIDIA .*GTX *47.* 5 1 1 4.3 -NVIDIA GTX 480 .*NVIDIA .*GTX *48.* 5 1 1 4.3 -NVIDIA 505 .*NVIDIA .*505[^0]*.* 3 1 0 0 -NVIDIA 510 .*NVIDIA .*510[^0]*.* 3 1 0 0 -NVIDIA GT 520 .*NVIDIA .*GT *52.* 3 1 1 4.3 -NVIDIA GT 530 .*NVIDIA .*GT *53.* 3 1 1 4.3 -NVIDIA GT 540 .*NVIDIA .*GT *54.* 3 1 1 4.3 -NVIDIA GT 550 .*NVIDIA .*GT *55.* 3 1 1 4.3 -NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.3 -NVIDIA GTX 560 .*NVIDIA .*GTX *56.* 5 1 1 4.3 -NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 5 1 1 4.3 -NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.3 -NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 5 1 1 4.3 -NVIDIA 605 .*NVIDIA .*605[^0]*.* 3 1 1 4.3 -NVIDIA GT 61x .*NVIDIA .*GT 61.* 3 1 1 4.3 -NVIDIA GT 62x .*NVIDIA .*GT 62.* 3 1 0 4.3 -NVIDIA GT 63x .*NVIDIA .*GT 63.* 3 1 0 4.3 -NVIDIA GT 64x .*NVIDIA .*GT 64.* 3 1 0 4.3 -NVIDIA GT 65x .*NVIDIA .*GT 65.* 3 1 1 4.3 -NVIDIA GTX 64x .*NVIDIA .*GTX 64.* 3 1 1 4.3 -NVIDIA GTX 65x .*NVIDIA .*GTX 65.* 3 1 1 4.3 -NVIDIA GTX 66x .*NVIDIA .*GTX 66.* 5 1 0 4.3 -NVIDIA GTX 67x .*NVIDIA .*GTX 67.* 5 1 1 4.3 -NVIDIA GTX 68x .*NVIDIA .*GTX 68.* 5 1 1 4.3 -NVIDIA GTX 69x .*NVIDIA .*GTX 69.* 5 1 1 4.3 -NVIDIA GT 71x .*NVIDIA .*GT *71.* 3 1 0 4.3 -NVIDIA GT 72x .*NVIDIA .*GT *72.* 3 1 0 4.3 -NVIDIA GT 73x .*NVIDIA .*GT *73.* 3 1 0 4.3 -NVIDIA GT 74x .*NVIDIA .*GT *74.* 3 1 0 4.3 -NVIDIA GTX 75x .*NVIDIA .*GTX *75.* 3 1 0 4.3 -NVIDIA GTX 76x .*NVIDIA .*GTX *76.* 5 1 0 4.3 -NVIDIA GTX 77x .*NVIDIA .*GTX *77.* 5 1 0 4.3 -NVIDIA GTX 78x .*NVIDIA .*GTX *78.* 5 1 0 4.3 -NVIDIA GTX TITAN .*NVIDIA .*GTX *TITAN.* 5 1 0 4.3 -NVIDIA C51 .*NVIDIA .*C51.* 0 1 1 2 -NVIDIA G72 .*NVIDIA .*G72.* 1 1 0 0 -NVIDIA G73 .*NVIDIA .*G73.* 1 1 0 0 -NVIDIA G84 .*NVIDIA .*G84.* 2 1 0 0 -NVIDIA G86 .*NVIDIA .*G86.* 3 1 0 0 -NVIDIA G92 .*NVIDIA .*G92.* 3 1 0 0 -NVIDIA GK106 .*NVIDIA .*GK106.* 5 1 0 4.3 -NVIDIA GeForce .*GeForce 256.* 0 0 0 0 -NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 1 1.5 -NVIDIA GeForce 3 .*GeForce ?3 ?.* 2 1 1 2.1 -NVIDIA GeForce 3 Ti .*GeForce ?3 Ti.* 0 1 0 0 -NVIDIA GeForce 4 .*NVIDIA .*GeForce ?4.* 0 1 1 1.5 -NVIDIA GeForce 4 Go .*NVIDIA .*GeForce ?4.*Go.* 0 1 0 0 -NVIDIA GeForce 4 MX .*NVIDIA .*GeForce ?4 MX.* 0 1 0 0 -NVIDIA GeForce 4 PCX .*NVIDIA .*GeForce ?4 PCX.* 0 1 0 0 -NVIDIA GeForce 4 Ti .*NVIDIA .*GeForce ?4 Ti.* 0 1 0 0 -NVIDIA GeForce 6100 .*NVIDIA .*GeForce 61.* 3 1 1 4.2 -NVIDIA GeForce 6200 .*NVIDIA .*GeForce 62.* 0 1 1 2.1 -NVIDIA GeForce 6500 .*NVIDIA .*GeForce 65.* 1 1 1 2.1 -NVIDIA GeForce 6600 .*NVIDIA .*GeForce 66.* 2 1 1 2.1 -NVIDIA GeForce 6700 .*NVIDIA .*GeForce 67.* 2 1 1 2.1 -NVIDIA GeForce 6800 .*NVIDIA .*GeForce 68.* 1 1 1 2.1 -NVIDIA GeForce 7000 .*NVIDIA .*GeForce 70.* 1 1 1 2.1 -NVIDIA GeForce 7100 .*NVIDIA .*GeForce 71.* 1 1 1 2.1 -NVIDIA GeForce 7200 .*NVIDIA .*GeForce 72.* 1 1 0 0 -NVIDIA GeForce 7300 .*NVIDIA .*GeForce 73.* 1 1 1 2.1 -NVIDIA GeForce 7500 .*NVIDIA .*GeForce 75.* 2 1 1 2.1 -NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 1 2.1 -NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 1 2.1 -NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 3 1 1 2.1 -NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 0 3.3 -NVIDIA GeForce 8200M .*NVIDIA .*GeForce 820[0-9]M.* 1 1 0 3.3 -NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 3.3 -NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 3 1 1 3.3 -NVIDIA GeForce 8400M .*NVIDIA .*GeForce 840[0-9]M.* 1 1 1 3.3 -NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 1 3.3 -NVIDIA GeForce 8500 .*NVIDIA .*GeForce 85.* 2 1 1 3.3 -NVIDIA GeForce 8600M .*NVIDIA .*GeForce 860[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 8600 .*NVIDIA .*GeForce 86.* 3 1 1 3.3 -NVIDIA GeForce 8700M .*NVIDIA .*GeForce 870[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 0 0 -NVIDIA GeForce 8800M .*NVIDIA .*GeForce 880[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 1 3.3 -NVIDIA GeForce 9100M .*NVIDIA .*GeForce 910[0-9]M.* 0 1 0 3.3 -NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 3.3 -NVIDIA GeForce 9200M .*NVIDIA .*GeForce 920[0-9]M.* 1 1 0 3.3 -NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 3.3 -NVIDIA GeForce 9300M .*NVIDIA .*GeForce 930[0-9]M.* 1 1 1 3.3 -NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1 1 3.3 -NVIDIA GeForce 9400M .*NVIDIA .*GeForce 940[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 3 1 1 3.3 -NVIDIA GeForce 9500M .*NVIDIA .*GeForce 950[0-9]M.* 1 1 1 3.3 -NVIDIA GeForce 9500 .*NVIDIA .*GeForce 95.* 3 1 1 3.3 -NVIDIA GeForce 9600M .*NVIDIA .*GeForce 960[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 9600 .*NVIDIA .*GeForce 96.* 3 1 1 3.3 -NVIDIA GeForce 9700M .*NVIDIA .*GeForce 970[0-9]M.* 0 1 1 3.3 -NVIDIA GeForce 9800M .*NVIDIA .*GeForce 980[0-9]M.* 2 1 1 3.3 -NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 1 3.3 -NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 0 0 -NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 2.1 -NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 0 0 -NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 1 2.1 -NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 1 1 1 2.1 -NVIDIA GeForce FX 5700 .*NVIDIA .*GeForce FX 57.* 0 1 1 2.1 -NVIDIA GeForce FX 5800 .*NVIDIA .*GeForce FX 58.* 1 1 0 0 -NVIDIA GeForce FX 5900 .*NVIDIA .*GeForce FX 59.* 1 1 1 2.1 -NVIDIA GeForce FX Go5100 .*NVIDIA .*GeForce FX Go51.* 0 1 0 0 -NVIDIA GeForce FX Go5200 .*NVIDIA .*GeForce FX Go52.* 0 1 0 1.5 -NVIDIA GeForce FX Go5300 .*NVIDIA .*GeForce FX Go53.* 0 1 0 0 -NVIDIA GeForce FX Go5500 .*NVIDIA .*GeForce FX Go55.* 0 1 0 0 -NVIDIA GeForce FX Go5600 .*NVIDIA .*GeForce FX Go56.* 0 1 1 2.1 -NVIDIA GeForce FX Go5700 .*NVIDIA .*GeForce FX Go57.* 1 1 1 1.5 -NVIDIA GeForce FX Go5800 .*NVIDIA .*GeForce FX Go58.* 1 1 0 0 -NVIDIA GeForce FX Go5900 .*NVIDIA .*GeForce FX Go59.* 1 1 0 0 -NVIDIA GeForce FX Go5xxx .*NVIDIA .*GeForce FX Go.* 0 1 0 0 -NVIDIA GeForce Go 6100 .*NVIDIA .*GeForce Go 61.* 0 1 1 2.1 -NVIDIA GeForce Go 6200 .*NVIDIA .*GeForce Go 62.* 0 1 0 1.5 -NVIDIA GeForce Go 6400 .*NVIDIA .*GeForce Go 64.* 1 1 1 2.1 -NVIDIA GeForce Go 6500 .*NVIDIA .*GeForce Go 65.* 1 1 0 0 -NVIDIA GeForce Go 6600 .*NVIDIA .*GeForce Go 66.* 0 1 1 2.1 -NVIDIA GeForce Go 6700 .*NVIDIA .*GeForce Go 67.* 1 1 0 0 -NVIDIA GeForce Go 6800 .*NVIDIA .*GeForce Go 68.* 0 1 1 2.1 -NVIDIA GeForce Go 7200 .*NVIDIA .*GeForce Go 72.* 1 1 0 2.1 -NVIDIA GeForce Go 7300 LE .*NVIDIA .*GeForce Go 73.*LE.* 1 1 0 0 -NVIDIA GeForce Go 7300 .*NVIDIA .*GeForce Go 73.* 1 1 1 2.1 -NVIDIA GeForce Go 7400 .*NVIDIA .*GeForce Go 74.* 1 1 1 2.1 -NVIDIA GeForce Go 7600 .*NVIDIA .*GeForce Go 76.* 1 1 1 2.1 -NVIDIA GeForce Go 7700 .*NVIDIA .*GeForce Go 77.* 0 1 1 2.1 -NVIDIA GeForce Go 7800 .*NVIDIA .*GeForce Go 78.* 2 1 0 0 -NVIDIA GeForce Go 7900 .*NVIDIA .*GeForce Go 79.* 1 1 1 2.1 -NVIDIA D9M .*NVIDIA .*D9M.* 1 1 0 0 -NVIDIA G94 .*NVIDIA .*G94.* 3 1 0 0 -NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 0 0 -NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 0 0 -NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 0 0 -NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 0 0 -NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 0 0 -NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 0 0 -NVIDIA N10 .*NVIDIA .*N10.* 1 1 0 2.1 -NVIDIA GeForce PCX .*GeForce PCX.* 0 1 0 1.5 -NVIDIA PCI .*NVIDIA PCI[ ]* 0 0 0 2.1 -NVIDIA Generic .*NVIDIA Generic.* 0 0 0 2.1 -NVIDIA Generic Unknown .*NVIDIA .*Unknown.* 0 0 0 2.1 -NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 0 0 -NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 0 0 -NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 0 0 -NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 0 0 -NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 0 0 -NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 0 0 -NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 0 0 -NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 3.3 -NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 0 0 -NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 0 2.1 -NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 0 0 -NVIDIA MCP68 .*NVIDIA .*MCP68.* 1 1 0 0 -NVIDIA MCP73 .*NVIDIA .*MCP73.* 1 1 0 0 -NVIDIA MCP77 .*NVIDIA .*MCP77.* 1 1 0 0 -NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 0 0 -NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 0 0 -NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 0 0 -NVIDIA Corporation N12P .*NVIDIA .*N12P.* 1 1 1 4.1 -NVIDIA Corporation N11M .*NVIDIA .*N11M.* 2 1 0 3.1 -NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 1.5 -NVIDIA GRID .*NVIDIA .*GRID.* 0 0 0 1.5 -NVIDIA ION 2 .*NVIDIA .* *[I][O][N] 2.* 2 1 0 0 -NVIDIA ION a .*NVIDIA .*[I][O][N]$ 2 1 1 3.3 -NVIDIA ION b .*NVIDIA .*(Corporation) [I][O][N].* 2 1 1 3.3 -S3 .*S3 *(Graphics)*.* 0 0 1 1.4 -SiS SiS.* 0 0 1 1.5 -Trident Trident.* 0 0 0 0 -Tungsten Graphics Tungsten.* 0 0 0 0 -XGI XGI.* 0 0 0 0 -VIA VIA.* 0 0 0 0 -Apple Generic Apple.*Generic.* 0 0 0 0 -Apple Software Renderer Apple.*Software Renderer.* 0 0 0 0 -Oracle VirtualBox.* 0 1 1 2.1 -Humper Humper.* 0 1 1 2.1 -PowerVR SGX545 .*PowerVR SGX.* 1 1 1 3 -ATI GeForce Lulz .*ATI.*GeForce.* 0 0 0 0 - - diff --git a/indra/newview/groupchatlistener.cpp b/indra/newview/groupchatlistener.cpp index ef015a950d..ef015a950d 100755..100644 --- a/indra/newview/groupchatlistener.cpp +++ b/indra/newview/groupchatlistener.cpp diff --git a/indra/newview/groupchatlistener.h b/indra/newview/groupchatlistener.h index 0c76db305e..0c76db305e 100755..100644 --- a/indra/newview/groupchatlistener.h +++ b/indra/newview/groupchatlistener.h diff --git a/indra/newview/hu.lproj/language.txt b/indra/newview/hu.lproj/language.txt index 6c604cf2a9..6c604cf2a9 100755..100644 --- a/indra/newview/hu.lproj/language.txt +++ b/indra/newview/hu.lproj/language.txt diff --git a/indra/newview/icons/beta/secondlife.icns b/indra/newview/icons/beta/secondlife.icns Binary files differindex 1fa50547bb..1fa50547bb 100755..100644 --- a/indra/newview/icons/beta/secondlife.icns +++ b/indra/newview/icons/beta/secondlife.icns diff --git a/indra/newview/icons/beta/secondlife.ico b/indra/newview/icons/beta/secondlife.ico Binary files differindex 9bdd21b904..9bdd21b904 100755..100644 --- a/indra/newview/icons/beta/secondlife.ico +++ b/indra/newview/icons/beta/secondlife.ico diff --git a/indra/newview/icons/beta/secondlife_128.png b/indra/newview/icons/beta/secondlife_128.png Binary files differindex af5ae63335..af5ae63335 100755..100644 --- a/indra/newview/icons/beta/secondlife_128.png +++ b/indra/newview/icons/beta/secondlife_128.png diff --git a/indra/newview/icons/beta/secondlife_16.png b/indra/newview/icons/beta/secondlife_16.png Binary files differindex 9e6305d98f..9e6305d98f 100755..100644 --- a/indra/newview/icons/beta/secondlife_16.png +++ b/indra/newview/icons/beta/secondlife_16.png diff --git a/indra/newview/icons/beta/secondlife_256.BMP b/indra/newview/icons/beta/secondlife_256.BMP Binary files differindex 97bd67d3d6..97bd67d3d6 100755..100644 --- a/indra/newview/icons/beta/secondlife_256.BMP +++ b/indra/newview/icons/beta/secondlife_256.BMP diff --git a/indra/newview/icons/beta/secondlife_256.png b/indra/newview/icons/beta/secondlife_256.png Binary files differindex b0814fc180..b0814fc180 100755..100644 --- a/indra/newview/icons/beta/secondlife_256.png +++ b/indra/newview/icons/beta/secondlife_256.png diff --git a/indra/newview/icons/beta/secondlife_32.png b/indra/newview/icons/beta/secondlife_32.png Binary files differindex a00b3cf53c..a00b3cf53c 100755..100644 --- a/indra/newview/icons/beta/secondlife_32.png +++ b/indra/newview/icons/beta/secondlife_32.png diff --git a/indra/newview/icons/beta/secondlife_48.png b/indra/newview/icons/beta/secondlife_48.png Binary files differindex 551587b1cd..551587b1cd 100755..100644 --- a/indra/newview/icons/beta/secondlife_48.png +++ b/indra/newview/icons/beta/secondlife_48.png diff --git a/indra/newview/icons/beta/secondlife_512.png b/indra/newview/icons/beta/secondlife_512.png Binary files differindex 99226de74e..99226de74e 100755..100644 --- a/indra/newview/icons/beta/secondlife_512.png +++ b/indra/newview/icons/beta/secondlife_512.png diff --git a/indra/newview/icons/project/secondlife.icns b/indra/newview/icons/project/secondlife.icns Binary files differindex d6e26a8ed9..d6e26a8ed9 100755..100644 --- a/indra/newview/icons/project/secondlife.icns +++ b/indra/newview/icons/project/secondlife.icns diff --git a/indra/newview/icons/project/secondlife.ico b/indra/newview/icons/project/secondlife.ico Binary files differindex ebb27e5325..ebb27e5325 100755..100644 --- a/indra/newview/icons/project/secondlife.ico +++ b/indra/newview/icons/project/secondlife.ico diff --git a/indra/newview/icons/project/secondlife_128.png b/indra/newview/icons/project/secondlife_128.png Binary files differindex b1b4997306..b1b4997306 100755..100644 --- a/indra/newview/icons/project/secondlife_128.png +++ b/indra/newview/icons/project/secondlife_128.png diff --git a/indra/newview/icons/project/secondlife_16.png b/indra/newview/icons/project/secondlife_16.png Binary files differindex 7d3d74b534..7d3d74b534 100755..100644 --- a/indra/newview/icons/project/secondlife_16.png +++ b/indra/newview/icons/project/secondlife_16.png diff --git a/indra/newview/icons/project/secondlife_256.BMP b/indra/newview/icons/project/secondlife_256.BMP Binary files differindex cd890725f8..cd890725f8 100755..100644 --- a/indra/newview/icons/project/secondlife_256.BMP +++ b/indra/newview/icons/project/secondlife_256.BMP diff --git a/indra/newview/icons/project/secondlife_256.png b/indra/newview/icons/project/secondlife_256.png Binary files differindex 88ad959275..88ad959275 100755..100644 --- a/indra/newview/icons/project/secondlife_256.png +++ b/indra/newview/icons/project/secondlife_256.png diff --git a/indra/newview/icons/project/secondlife_32.png b/indra/newview/icons/project/secondlife_32.png Binary files differindex e55f75e1dd..e55f75e1dd 100755..100644 --- a/indra/newview/icons/project/secondlife_32.png +++ b/indra/newview/icons/project/secondlife_32.png diff --git a/indra/newview/icons/project/secondlife_48.png b/indra/newview/icons/project/secondlife_48.png Binary files differindex c29703e164..c29703e164 100755..100644 --- a/indra/newview/icons/project/secondlife_48.png +++ b/indra/newview/icons/project/secondlife_48.png diff --git a/indra/newview/icons/project/secondlife_512.png b/indra/newview/icons/project/secondlife_512.png Binary files differindex 4fa3474d70..4fa3474d70 100755..100644 --- a/indra/newview/icons/project/secondlife_512.png +++ b/indra/newview/icons/project/secondlife_512.png diff --git a/indra/newview/icons/release/secondlife.icns b/indra/newview/icons/release/secondlife.icns Binary files differindex e15e34140d..e15e34140d 100755..100644 --- a/indra/newview/icons/release/secondlife.icns +++ b/indra/newview/icons/release/secondlife.icns diff --git a/indra/newview/icons/release/secondlife.ico b/indra/newview/icons/release/secondlife.ico Binary files differindex 28bf1e7664..28bf1e7664 100755..100644 --- a/indra/newview/icons/release/secondlife.ico +++ b/indra/newview/icons/release/secondlife.ico diff --git a/indra/newview/icons/release/secondlife_128.png b/indra/newview/icons/release/secondlife_128.png Binary files differindex 4c9544f498..4c9544f498 100755..100644 --- a/indra/newview/icons/release/secondlife_128.png +++ b/indra/newview/icons/release/secondlife_128.png diff --git a/indra/newview/icons/release/secondlife_16.png b/indra/newview/icons/release/secondlife_16.png Binary files differindex bb3168b8be..bb3168b8be 100755..100644 --- a/indra/newview/icons/release/secondlife_16.png +++ b/indra/newview/icons/release/secondlife_16.png diff --git a/indra/newview/icons/release/secondlife_256.BMP b/indra/newview/icons/release/secondlife_256.BMP Binary files differindex 74deedd7d3..74deedd7d3 100755..100644 --- a/indra/newview/icons/release/secondlife_256.BMP +++ b/indra/newview/icons/release/secondlife_256.BMP diff --git a/indra/newview/icons/release/secondlife_256.png b/indra/newview/icons/release/secondlife_256.png Binary files differindex bece338a90..bece338a90 100755..100644 --- a/indra/newview/icons/release/secondlife_256.png +++ b/indra/newview/icons/release/secondlife_256.png diff --git a/indra/newview/icons/release/secondlife_32.png b/indra/newview/icons/release/secondlife_32.png Binary files differindex 736359c147..736359c147 100755..100644 --- a/indra/newview/icons/release/secondlife_32.png +++ b/indra/newview/icons/release/secondlife_32.png diff --git a/indra/newview/icons/release/secondlife_48.png b/indra/newview/icons/release/secondlife_48.png Binary files differindex 07d39ae585..07d39ae585 100755..100644 --- a/indra/newview/icons/release/secondlife_48.png +++ b/indra/newview/icons/release/secondlife_48.png diff --git a/indra/newview/icons/release/secondlife_512.png b/indra/newview/icons/release/secondlife_512.png Binary files differindex 53d1643f45..53d1643f45 100755..100644 --- a/indra/newview/icons/release/secondlife_512.png +++ b/indra/newview/icons/release/secondlife_512.png diff --git a/indra/newview/icons/test/secondlife.icns b/indra/newview/icons/test/secondlife.icns Binary files differindex eb8d16a7e7..eb8d16a7e7 100755..100644 --- a/indra/newview/icons/test/secondlife.icns +++ b/indra/newview/icons/test/secondlife.icns diff --git a/indra/newview/icons/test/secondlife.ico b/indra/newview/icons/test/secondlife.ico Binary files differindex ceb8e8e6eb..ceb8e8e6eb 100755..100644 --- a/indra/newview/icons/test/secondlife.ico +++ b/indra/newview/icons/test/secondlife.ico diff --git a/indra/newview/icons/test/secondlife_128.png b/indra/newview/icons/test/secondlife_128.png Binary files differindex 486772b6d3..486772b6d3 100755..100644 --- a/indra/newview/icons/test/secondlife_128.png +++ b/indra/newview/icons/test/secondlife_128.png diff --git a/indra/newview/icons/test/secondlife_16.png b/indra/newview/icons/test/secondlife_16.png Binary files differindex 7d3d74b534..7d3d74b534 100755..100644 --- a/indra/newview/icons/test/secondlife_16.png +++ b/indra/newview/icons/test/secondlife_16.png diff --git a/indra/newview/icons/test/secondlife_256.BMP b/indra/newview/icons/test/secondlife_256.BMP Binary files differindex e23fcfdbe9..e23fcfdbe9 100755..100644 --- a/indra/newview/icons/test/secondlife_256.BMP +++ b/indra/newview/icons/test/secondlife_256.BMP diff --git a/indra/newview/icons/test/secondlife_256.png b/indra/newview/icons/test/secondlife_256.png Binary files differindex 56c781788d..56c781788d 100755..100644 --- a/indra/newview/icons/test/secondlife_256.png +++ b/indra/newview/icons/test/secondlife_256.png diff --git a/indra/newview/icons/test/secondlife_32.png b/indra/newview/icons/test/secondlife_32.png Binary files differindex 476029db61..476029db61 100755..100644 --- a/indra/newview/icons/test/secondlife_32.png +++ b/indra/newview/icons/test/secondlife_32.png diff --git a/indra/newview/icons/test/secondlife_48.png b/indra/newview/icons/test/secondlife_48.png Binary files differindex d7de7849f9..d7de7849f9 100755..100644 --- a/indra/newview/icons/test/secondlife_48.png +++ b/indra/newview/icons/test/secondlife_48.png diff --git a/indra/newview/icons/test/secondlife_512.png b/indra/newview/icons/test/secondlife_512.png Binary files differindex a4b1e4974c..a4b1e4974c 100755..100644 --- a/indra/newview/icons/test/secondlife_512.png +++ b/indra/newview/icons/test/secondlife_512.png diff --git a/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns b/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns Binary files differindex da5307e389..da5307e389 100755..100644 --- a/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns +++ b/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns diff --git a/indra/newview/installers/darwin/release-dmg/background.jpg b/indra/newview/installers/darwin/release-dmg/background.jpg Binary files differindex 55294dcc9a..55294dcc9a 100755..100644 --- a/indra/newview/installers/darwin/release-dmg/background.jpg +++ b/indra/newview/installers/darwin/release-dmg/background.jpg diff --git a/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt b/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt index 185c0180fb..185c0180fb 100755..100644 --- a/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt +++ b/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt diff --git a/indra/newview/installers/windows/install_icon.BMP b/indra/newview/installers/windows/install_icon.BMP Binary files differindex 09df573870..09df573870 100755..100644 --- a/indra/newview/installers/windows/install_icon.BMP +++ b/indra/newview/installers/windows/install_icon.BMP diff --git a/indra/newview/installers/windows/install_icon.ico b/indra/newview/installers/windows/install_icon.ico Binary files differindex efe6c4f323..efe6c4f323 100755..100644 --- a/indra/newview/installers/windows/install_icon.ico +++ b/indra/newview/installers/windows/install_icon.ico diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 8c8b4971cf..b8677fd9e4 100755..100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -165,7 +165,9 @@ lbl_configure_default_lang: StrCpy $LANGUAGE $0
# For silent installs, no language prompt, use default
- IfSilent lbl_return
+ IfSilent 0 +3
+ StrCpy $SKIP_AUTORUN "true"
+ Goto lbl_return
StrCmp $SKIP_DIALOGS "true" lbl_return
lbl_build_menu:
@@ -298,6 +300,11 @@ CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \ CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
'"$INSTDIR\uninst.exe"' ''
+# Create *.bat file to specify lang params on first run from installer - see MAINT-5259
+FileOpen $9 "$INSTDIR\autorun.bat" w
+FileWrite $9 'start "$INSTDIR\$INSTEXE" "$INSTDIR\$INSTEXE" $SHORTCUT_LANG_PARAM$\r$\n'
+FileClose $9
+
# Write registry
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
@@ -682,7 +689,7 @@ Call CheckWindowsServPack # Warn if not on the latest SP before asking to launc Push $R0 # Option value, unused
StrCmp $SKIP_AUTORUN "true" +2;
# Assumes SetOutPath $INSTDIR
- Exec '"$WINDIR\explorer.exe" "$INSTDIR\$INSTEXE"'
+ Exec '"$WINDIR\explorer.exe" "$INSTDIR\autorun.bat"'
Pop $R0
FunctionEnd
diff --git a/indra/newview/installers/windows/lang_da.nsi b/indra/newview/installers/windows/lang_da.nsi Binary files differindex 83e1a3ea94..83e1a3ea94 100755..100644 --- a/indra/newview/installers/windows/lang_da.nsi +++ b/indra/newview/installers/windows/lang_da.nsi diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi Binary files differindex 866accae99..866accae99 100755..100644 --- a/indra/newview/installers/windows/lang_de.nsi +++ b/indra/newview/installers/windows/lang_de.nsi diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi Binary files differindex 343c312ddc..343c312ddc 100755..100644 --- a/indra/newview/installers/windows/lang_en-us.nsi +++ b/indra/newview/installers/windows/lang_en-us.nsi diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi Binary files differindex f4f0786332..f4f0786332 100755..100644 --- a/indra/newview/installers/windows/lang_es.nsi +++ b/indra/newview/installers/windows/lang_es.nsi diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi Binary files differindex 1b5dbfc975..1b5dbfc975 100755..100644 --- a/indra/newview/installers/windows/lang_fr.nsi +++ b/indra/newview/installers/windows/lang_fr.nsi diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi Binary files differindex a456e6e417..a456e6e417 100755..100644 --- a/indra/newview/installers/windows/lang_it.nsi +++ b/indra/newview/installers/windows/lang_it.nsi diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi Binary files differindex 5b1c5f4ce9..5b1c5f4ce9 100755..100644 --- a/indra/newview/installers/windows/lang_ja.nsi +++ b/indra/newview/installers/windows/lang_ja.nsi diff --git a/indra/newview/installers/windows/lang_pl.nsi b/indra/newview/installers/windows/lang_pl.nsi Binary files differindex a172f0cdeb..a172f0cdeb 100755..100644 --- a/indra/newview/installers/windows/lang_pl.nsi +++ b/indra/newview/installers/windows/lang_pl.nsi diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi Binary files differindex 9ef252d232..9ef252d232 100755..100644 --- a/indra/newview/installers/windows/lang_pt-br.nsi +++ b/indra/newview/installers/windows/lang_pt-br.nsi diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi Binary files differindex d7c728d3e2..d7c728d3e2 100755..100644 --- a/indra/newview/installers/windows/lang_ru.nsi +++ b/indra/newview/installers/windows/lang_ru.nsi diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi Binary files differindex 97c602f4fc..97c602f4fc 100755..100644 --- a/indra/newview/installers/windows/lang_tr.nsi +++ b/indra/newview/installers/windows/lang_tr.nsi diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi Binary files differindex 39c005a683..39c005a683 100755..100644 --- a/indra/newview/installers/windows/lang_zh.nsi +++ b/indra/newview/installers/windows/lang_zh.nsi diff --git a/indra/newview/installers/windows/language_menu.nsi b/indra/newview/installers/windows/language_menu.nsi Binary files differindex 08ad42532f..08ad42532f 100755..100644 --- a/indra/newview/installers/windows/language_menu.nsi +++ b/indra/newview/installers/windows/language_menu.nsi diff --git a/indra/newview/installers/windows/uninstall_icon.BMP b/indra/newview/installers/windows/uninstall_icon.BMP Binary files differindex 562b56676a..562b56676a 100755..100644 --- a/indra/newview/installers/windows/uninstall_icon.BMP +++ b/indra/newview/installers/windows/uninstall_icon.BMP diff --git a/indra/newview/installers/windows/uninstall_icon.ico b/indra/newview/installers/windows/uninstall_icon.ico Binary files differindex 05e1546860..05e1546860 100755..100644 --- a/indra/newview/installers/windows/uninstall_icon.ico +++ b/indra/newview/installers/windows/uninstall_icon.ico diff --git a/indra/newview/it.lproj/language.txt b/indra/newview/it.lproj/language.txt index c91971434c..c91971434c 100755..100644 --- a/indra/newview/it.lproj/language.txt +++ b/indra/newview/it.lproj/language.txt diff --git a/indra/newview/licenses-linux.txt b/indra/newview/licenses-linux.txt index b43c402e64..b43c402e64 100755..100644 --- a/indra/newview/licenses-linux.txt +++ b/indra/newview/licenses-linux.txt diff --git a/indra/newview/licenses-mac.txt b/indra/newview/licenses-mac.txt index af80bff5d9..af80bff5d9 100755..100644 --- a/indra/newview/licenses-mac.txt +++ b/indra/newview/licenses-mac.txt diff --git a/indra/newview/licenses-solaris.txt b/indra/newview/licenses-solaris.txt index c19f939a80..c19f939a80 100755..100644 --- a/indra/newview/licenses-solaris.txt +++ b/indra/newview/licenses-solaris.txt diff --git a/indra/newview/licenses-win32.txt b/indra/newview/licenses-win32.txt index 8736626907..8736626907 100755..100644 --- a/indra/newview/licenses-win32.txt +++ b/indra/newview/licenses-win32.txt diff --git a/indra/newview/linux_tools/client-readme-joystick.txt b/indra/newview/linux_tools/client-readme-joystick.txt index 4f89a73ccb..4f89a73ccb 100755..100644 --- a/indra/newview/linux_tools/client-readme-joystick.txt +++ b/indra/newview/linux_tools/client-readme-joystick.txt diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt index bfefdf3471..bfefdf3471 100755..100644 --- a/indra/newview/linux_tools/client-readme-voice.txt +++ b/indra/newview/linux_tools/client-readme-voice.txt diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt index e01b9e4bc6..e01b9e4bc6 100755..100644 --- a/indra/newview/linux_tools/client-readme.txt +++ b/indra/newview/linux_tools/client-readme.txt diff --git a/indra/newview/llaccountingcost.h b/indra/newview/llaccountingcost.h index bc770fe1d2..bc770fe1d2 100755..100644 --- a/indra/newview/llaccountingcost.h +++ b/indra/newview/llaccountingcost.h diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index a42286a9e4..a42286a9e4 100755..100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h index 3ade34c81d..3ade34c81d 100755..100644 --- a/indra/newview/llaccountingcostmanager.h +++ b/indra/newview/llaccountingcostmanager.h diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 1ec808f65e..ee4c00a646 100755..100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -275,9 +275,24 @@ bool LLAgent::isActionAllowed(const LLSD& sdname) if (param == "speak") { - if ( gAgent.isVoiceConnected() && - LLViewerParcelMgr::getInstance()->allowAgentVoice() && - ! LLVoiceClient::getInstance()->inTuningMode() ) + bool allow_agent_voice = false; + LLVoiceChannel* channel = LLVoiceChannel::getCurrentVoiceChannel(); + if (channel != NULL) + { + if (channel->getSessionName().empty() && channel->getSessionID().isNull()) + { + // default channel + allow_agent_voice = LLViewerParcelMgr::getInstance()->allowAgentVoice(); + } + else + { + allow_agent_voice = channel->isActive() && channel->callStarted(); + } + } + + if (gAgent.isVoiceConnected() && + allow_agent_voice && + !LLVoiceClient::getInstance()->inTuningMode()) { retval = true; } @@ -2843,7 +2858,7 @@ BOOL LLAgent::isInGroup(const LLUUID& group_id, BOOL ignore_god_mode /* FALSE */ // This implementation should mirror LLAgentInfo::hasPowerInGroup BOOL LLAgent::hasPowerInGroup(const LLUUID& group_id, U64 power) const { - if (isGodlike()) + if (isGodlikeWithoutAdminMenuFakery()) return true; // GP_NO_POWERS can also mean no power is enough to grant an ability. @@ -3873,6 +3888,12 @@ void LLAgent::handleTeleportFinished() LLNotificationsUtil::add("PreferredMaturityChanged", args); mIsMaturityRatingChangingDuringTeleport = false; } + + // Init SLM Marketplace connection so we know which UI should be used for the user as a merchant + // Note: Eventually, all merchant will be migrated to the new SLM system and there will be no reason to show the old UI at all. + // Note: Some regions will not support the SLM cap for a while so we need to do that check for each teleport. + // *TODO : Suppress that line from here once the whole grid migrated to SLM and move it to idle_startup() (llstartup.cpp) + check_merchant_status(); } void LLAgent::handleTeleportFailed() diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 4830cb754b..4830cb754b 100755..100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h diff --git a/indra/newview/llagentaccess.cpp b/indra/newview/llagentaccess.cpp index c4ee321e04..c4ee321e04 100755..100644 --- a/indra/newview/llagentaccess.cpp +++ b/indra/newview/llagentaccess.cpp diff --git a/indra/newview/llagentaccess.h b/indra/newview/llagentaccess.h index 4e851b0aa0..4e851b0aa0 100755..100644 --- a/indra/newview/llagentaccess.h +++ b/indra/newview/llagentaccess.h diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 7f0330ee99..aed27924fe 100755..100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -147,6 +147,7 @@ LLAgentCamera::LLAgentCamera() : mCameraUpVector(LLVector3::z_axis), // default is straight up mFocusOnAvatar(TRUE), + mAllowChangeToFollow(FALSE), mFocusGlobal(), mFocusTargetGlobal(), mFocusObject(NULL), @@ -1152,8 +1153,10 @@ void LLAgentCamera::updateCamera() mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation(); } - if (cameraThirdPerson() && mFocusOnAvatar && LLFollowCamMgr::getActiveFollowCamParams()) + if (cameraThirdPerson() && (mFocusOnAvatar || mAllowChangeToFollow) && LLFollowCamMgr::getActiveFollowCamParams()) { + mAllowChangeToFollow = FALSE; + mFocusOnAvatar = TRUE; changeCameraToFollow(); } @@ -2610,6 +2613,7 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate) { // keep camera focus point consistent, even though it is now unlocked setFocusGlobal(gAgent.getPositionGlobal() + calcThirdPersonFocusOffset(), gAgent.getID()); + mAllowChangeToFollow = FALSE; } mFocusOnAvatar = focus_on_avatar; diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 4d0f9a80de..ab793ff316 100755..100644 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -206,13 +206,15 @@ public: void setCameraPosAndFocusGlobal(const LLVector3d& pos, const LLVector3d& focus, const LLUUID &object_id); void clearFocusObject(); void setFocusObject(LLViewerObject* object); + void setAllowChangeToFollow(BOOL focus) { mAllowChangeToFollow = focus; } void setObjectTracking(BOOL track) { mTrackFocusObject = track; } const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } private: LLVector3d mCameraFocusOffset; // Offset from focus point in build mode LLVector3d mCameraFocusOffsetTarget; // Target towards which we are lerping the camera's focus offset - BOOL mFocusOnAvatar; + BOOL mFocusOnAvatar; + BOOL mAllowChangeToFollow; LLVector3d mFocusGlobal; LLVector3d mFocusTargetGlobal; LLPointer<LLViewerObject> mFocusObject; diff --git a/indra/newview/llagentdata.cpp b/indra/newview/llagentdata.cpp index 5f6a082d75..d2c644a06f 100755..100644 --- a/indra/newview/llagentdata.cpp +++ b/indra/newview/llagentdata.cpp @@ -31,3 +31,4 @@ LLUUID gAgentID; LLUUID gAgentSessionID; +std::string gAgentUsername; diff --git a/indra/newview/llagentdata.h b/indra/newview/llagentdata.h index 83d6a53d5e..efdd97f6c4 100755..100644 --- a/indra/newview/llagentdata.h +++ b/indra/newview/llagentdata.h @@ -30,5 +30,6 @@ extern LLUUID gAgentID; extern LLUUID gAgentSessionID; +extern std::string gAgentUsername; #endif diff --git a/indra/newview/llagentlanguage.cpp b/indra/newview/llagentlanguage.cpp index fe6236a32a..fe6236a32a 100755..100644 --- a/indra/newview/llagentlanguage.cpp +++ b/indra/newview/llagentlanguage.cpp diff --git a/indra/newview/llagentlanguage.h b/indra/newview/llagentlanguage.h index 2bb2eb7809..2bb2eb7809 100755..100644 --- a/indra/newview/llagentlanguage.h +++ b/indra/newview/llagentlanguage.h diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp index 7887184a11..7887184a11 100755..100644 --- a/indra/newview/llagentlistener.cpp +++ b/indra/newview/llagentlistener.cpp diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h index 9a9c4073fe..9a9c4073fe 100755..100644 --- a/indra/newview/llagentlistener.h +++ b/indra/newview/llagentlistener.h diff --git a/indra/newview/llagentpicksinfo.cpp b/indra/newview/llagentpicksinfo.cpp index 799060eeab..799060eeab 100755..100644 --- a/indra/newview/llagentpicksinfo.cpp +++ b/indra/newview/llagentpicksinfo.cpp diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h index abf7027ed2..abf7027ed2 100755..100644 --- a/indra/newview/llagentpicksinfo.h +++ b/indra/newview/llagentpicksinfo.h diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp index cfc445f998..cfc445f998 100755..100644 --- a/indra/newview/llagentpilot.cpp +++ b/indra/newview/llagentpilot.cpp diff --git a/indra/newview/llagentpilot.h b/indra/newview/llagentpilot.h index f6b6376086..f6b6376086 100755..100644 --- a/indra/newview/llagentpilot.h +++ b/indra/newview/llagentpilot.h diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 3410a37890..3410a37890 100755..100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp diff --git a/indra/newview/llagentui.h b/indra/newview/llagentui.h index bb48dad14c..bb48dad14c 100755..100644 --- a/indra/newview/llagentui.h +++ b/indra/newview/llagentui.h diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index f06ffb4fb3..b76a66ab39 100755..100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -27,6 +27,7 @@ #include "llviewerprecompiledheaders.h" #include "llagentwearables.h" +#include "llattachmentsmgr.h" #include "llaccordionctrltab.h" #include "llagent.h" #include "llagentcamera.h" @@ -633,10 +634,13 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable, BOOL removed) // the versions themselves are compatible. This code can be removed before release. if( wearable->getDefinitionVersion() == 24 ) { - wearable->setDefinitionVersion(22); - U32 index = getWearableIndex(wearable); - LL_INFOS() << "forcing wearable type " << wearable->getType() << " to version 22 from 24" << LL_ENDL; - saveWearable(wearable->getType(),index); + U32 index; + if (getWearableIndex(wearable,index)) + { + LL_INFOS() << "forcing wearable type " << wearable->getType() << " to version 22 from 24" << LL_ENDL; + wearable->setDefinitionVersion(22); + saveWearable(wearable->getType(),index); + } } checkWearableAgainstInventory(viewer_wearable); @@ -949,7 +953,7 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo LLViewerWearable* old_wearable = getViewerWearable(type,i); if (old_wearable) { - popWearable(old_wearable); + eraseWearable(old_wearable); old_wearable->removeFromAvatar(); } } @@ -961,7 +965,7 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo if (old_wearable) { - popWearable(old_wearable); + eraseWearable(old_wearable); old_wearable->removeFromAvatar(); } } @@ -982,6 +986,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it S32 matched = 0, mismatched = 0; const S32 arr_size = LLWearableType::WT_COUNT; S32 type_counts[arr_size]; + BOOL update_inventory = FALSE; std::fill(type_counts,type_counts+arr_size,0); for (S32 i = 0; i < count; i++) { @@ -1009,10 +1014,9 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it continue; } - // Don't care about this case - ordering of wearables with the same asset id has no effect. - // Causes the two-alphas error case in MAINT-4158. + // Update only inventory in this case - ordering of wearables with the same asset id has no effect. + // Updating wearables in this case causes the two-alphas error in MAINT-4158. // We should actually disallow wearing two wearables with the same asset id. -#if 0 if (curr_wearable->getName() != new_item->getName() || curr_wearable->getItemID() != new_item->getUUID()) { @@ -1020,10 +1024,9 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it << curr_wearable->getName() << " vs " << new_item->getName() << " item ids " << curr_wearable->getItemID() << " vs " << new_item->getUUID() << LL_ENDL; - mismatched++; + update_inventory = TRUE; continue; } -#endif // If we got here, everything matches. matched++; } @@ -1037,14 +1040,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it mismatched++; } } - if (mismatched == 0) + if (mismatched == 0 && !update_inventory) { LL_DEBUGS("Avatar") << "no changes, bailing out" << LL_ENDL; - mCOFChangeInProgress = false; + notifyLoadingFinished(); return; } - - + + // updating inventory + // TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later // note: shirt is the first non-body part wearable item. Update if wearable order changes. // This loop should remove all clothing, but not any body parts @@ -1065,7 +1069,8 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it if (new_wearable) { const LLWearableType::EType type = new_wearable->getType(); - + + LLUUID old_wearable_id = new_wearable->getItemID(); new_wearable->setName(new_item->getName()); new_wearable->setItemID(new_item->getUUID()); @@ -1073,11 +1078,18 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it { // exactly one wearable per body part setWearable(type,0,new_wearable); + if (old_wearable_id.notNull()) + { + // we changed id before setting wearable, update old item manually + // to complete the swap. + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_wearable_id); + } } else { pushWearable(type,new_wearable); } + const BOOL removed = FALSE; wearableUpdated(new_wearable, removed); } @@ -1085,6 +1097,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it gInventory.notifyObservers(); + if (mismatched == 0) + { + LL_DEBUGS("Avatar") << "inventory updated, wearable assets not changed, bailing out" << LL_ENDL; + notifyLoadingFinished(); + return; + } + + // updating agent avatar + if (isAgentAvatarValid()) { gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); @@ -1163,7 +1184,13 @@ bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD& { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); LLInventoryItem* new_item = gInventory.getItem(notification["payload"]["item_id"].asUUID()); - U32 index = gAgentWearables.getWearableIndex(wearable); + U32 index; + if (!gAgentWearables.getWearableIndex(wearable,index)) + { + LL_WARNS() << "Wearable not found" << LL_ENDL; + delete wearable; + return false; + } if (!new_item) { delete wearable; @@ -1344,6 +1371,7 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo if (objects_to_remove.empty()) return; + LL_DEBUGS("Avatar") << "ATT [ObjectDetach] removing " << objects_to_remove.size() << " objects" << LL_ENDL; gMessageSystem->newMessage("ObjectDetach"); gMessageSystem->nextBlockFast(_PREHASH_AgentData); gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); @@ -1357,6 +1385,10 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo //gAgentAvatarp->resetJointPositionsOnDetach(objectp); gMessageSystem->nextBlockFast(_PREHASH_ObjectData); gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, objectp->getLocalID()); + const LLUUID& item_id = objectp->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT removing object, item is " << (item ? item->getName() : "UNKNOWN") << " " << item_id << LL_ENDL; + LLAttachmentsMgr::instance().onDetachRequested(item_id); } gMessageSystem->sendReliable(gAgent.getRegionHost()); } @@ -1365,51 +1397,18 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra { // Build a compound message to send all the objects that need to be rezzed. S32 obj_count = obj_item_array.size(); - - // Limit number of packets to send - const S32 MAX_PACKETS_TO_SEND = 10; - const S32 OBJECTS_PER_PACKET = 4; - const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; - if( obj_count > MAX_OBJECTS_TO_SEND ) + if (obj_count > 0) { - obj_count = MAX_OBJECTS_TO_SEND; + LL_DEBUGS("Avatar") << "ATT attaching multiple, total obj_count " << obj_count << LL_ENDL; } - - // Create an id to keep the parts of the compound message together - LLUUID compound_msg_id; - compound_msg_id.generate(); - LLMessageSystem* msg = gMessageSystem; - for(S32 i = 0; i < obj_count; ++i) - { - if( 0 == (i % OBJECTS_PER_PACKET) ) - { - // Start a new message chunk - msg->newMessageFast(_PREHASH_RezMultipleAttachmentsFromInv); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_HeaderData); - msg->addUUIDFast(_PREHASH_CompoundMsgID, compound_msg_id ); - msg->addU8Fast(_PREHASH_TotalObjects, obj_count ); - msg->addBOOLFast(_PREHASH_FirstDetachAll, false ); - } - - const LLInventoryItem* item = obj_item_array.at(i).get(); - msg->nextBlockFast(_PREHASH_ObjectData ); - msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); - msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); - msg->addU8Fast(_PREHASH_AttachmentPt, 0 | ATTACHMENT_ADD); // Wear at the previous or default attachment point - pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); - msg->addStringFast(_PREHASH_Name, item->getName()); - msg->addStringFast(_PREHASH_Description, item->getDescription()); - - if( (i+1 == obj_count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) - { - // End of message chunk - msg->sendReliable( gAgent.getRegion()->getHost() ); - } - } + for(LLInventoryModel::item_array_t::const_iterator it = obj_item_array.begin(); + it != obj_item_array.end(); + ++it) + { + const LLInventoryItem* item = *it; + LLAttachmentsMgr::instance().addAttachmentRequest(item->getLinkedUUID(), 0, TRUE); + } } // Returns false if the given wearable is already topmost/bottommost diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 1004482020..1004482020 100755..100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index 9d887a61f1..714b456ae7 100755..100644 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -315,7 +315,8 @@ SlamFolderCommand::SlamFolderCommand(const LLUUID& folder_id, const LLSD& conten CopyLibraryCategoryCommand::CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, - LLPointer<LLInventoryCallback> callback): + LLPointer<LLInventoryCallback> callback, + bool copy_subfolders): AISCommand(callback) { std::string cap; @@ -328,6 +329,10 @@ CopyLibraryCategoryCommand::CopyLibraryCategoryCommand(const LLUUID& source_id, LLUUID tid; tid.generate(); std::string url = cap + std::string("/category/") + source_id.asString() + "?tid=" + tid.asString(); + if (!copy_subfolders) + { + url += ",depth=0"; + } LL_INFOS() << url << LL_ENDL; LLCurl::ResponderPtr responder = this; LLSD headers; diff --git a/indra/newview/llaisapi.h b/indra/newview/llaisapi.h index 5a2ec94af9..bb483fb133 100755..100644 --- a/indra/newview/llaisapi.h +++ b/indra/newview/llaisapi.h @@ -124,7 +124,7 @@ private: class CopyLibraryCategoryCommand: public AISCommand { public: - CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, LLPointer<LLInventoryCallback> callback); + CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, LLPointer<LLInventoryCallback> callback, bool copy_subfolders = true); protected: /* virtual */ bool getResponseUUID(const LLSD& content, LLUUID& id); diff --git a/indra/newview/llanimstatelabels.cpp b/indra/newview/llanimstatelabels.cpp index a0858612c2..a0858612c2 100755..100644 --- a/indra/newview/llanimstatelabels.cpp +++ b/indra/newview/llanimstatelabels.cpp diff --git a/indra/newview/llanimstatelabels.h b/indra/newview/llanimstatelabels.h index 97aabf5378..97aabf5378 100755..100644 --- a/indra/newview/llanimstatelabels.h +++ b/indra/newview/llanimstatelabels.h diff --git a/indra/newview/llappcorehttp.cpp b/indra/newview/llappcorehttp.cpp index f5f224b83e..f5f224b83e 100755..100644 --- a/indra/newview/llappcorehttp.cpp +++ b/indra/newview/llappcorehttp.cpp diff --git a/indra/newview/llappcorehttp.h b/indra/newview/llappcorehttp.h index 37d7a737e7..37d7a737e7 100755..100644 --- a/indra/newview/llappcorehttp.h +++ b/indra/newview/llappcorehttp.h diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm index 549df80fa1..549df80fa1 100755..100644 --- a/indra/newview/llappdelegate-objc.mm +++ b/indra/newview/llappdelegate-objc.mm diff --git a/indra/newview/llappearance.h b/indra/newview/llappearance.h index 05dfac4e42..05dfac4e42 100755..100644 --- a/indra/newview/llappearance.h +++ b/indra/newview/llappearance.h diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index a64d5b50b3..3d9b1a72a8 100755..100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -525,6 +525,15 @@ LLUpdateAppearanceAndEditWearableOnDestroy::LLUpdateAppearanceAndEditWearableOnD { } +LLRequestServerAppearanceUpdateOnDestroy::~LLRequestServerAppearanceUpdateOnDestroy() +{ + LL_DEBUGS("Avatar") << "ATT requesting server appearance update" << LL_ENDL; + if (!LLApp::isExiting()) + { + LLAppearanceMgr::instance().requestServerAppearanceUpdate(); + } +} + void edit_wearable_and_customize_avatar(LLUUID item_id) { // Start editing the item if previously requested. @@ -828,6 +837,12 @@ void LLWearableHoldingPattern::onAllComplete() // pre-attachment states. gAgentAvatarp->clearAttachmentPosOverrides(); + if (objects_to_remove.size() || items_to_add.size()) + { + LL_DEBUGS("Avatar") << "ATT will remove " << objects_to_remove.size() + << " and add " << items_to_add.size() << " items" << LL_ENDL; + } + // Take off the attachments that will no longer be in the outfit. LLAgentWearables::userRemoveMultipleAttachments(objects_to_remove); @@ -1338,90 +1353,131 @@ void wear_on_avatar_cb(const LLUUID& inv_item, bool do_replace = false) } } -bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, +void LLAppearanceMgr::wearItemsOnAvatar(const uuid_vec_t& item_ids_to_wear, + bool do_update, + bool replace, + LLPointer<LLInventoryCallback> cb) +{ + bool first = true; + + LLInventoryObject::const_object_list_t items_to_link; + + for (uuid_vec_t::const_iterator it = item_ids_to_wear.begin(); + it != item_ids_to_wear.end(); + ++it) + { + replace = first && replace; + first = false; + + const LLUUID& item_id_to_wear = *it; + + if (item_id_to_wear.isNull()) + { + LL_DEBUGS("Avatar") << "null id " << item_id_to_wear << LL_ENDL; + continue; + } + + LLViewerInventoryItem* item_to_wear = gInventory.getItem(item_id_to_wear); + if (!item_to_wear) + { + LL_DEBUGS("Avatar") << "inventory item not found for id " << item_id_to_wear << LL_ENDL; + continue; + } + + if (gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getLibraryRootFolderID())) + { + LL_DEBUGS("Avatar") << "inventory item in library, will copy and wear " + << item_to_wear->getName() << " id " << item_id_to_wear << LL_ENDL; + LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(wear_on_avatar_cb,_1,replace)); + copy_inventory_item(gAgent.getID(), item_to_wear->getPermissions().getOwner(), + item_to_wear->getUUID(), LLUUID::null, std::string(), cb); + continue; + } + else if (!gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getRootFolderID())) + { + // not in library and not in agent's inventory + LL_DEBUGS("Avatar") << "inventory item not in user inventory or library, skipping " + << item_to_wear->getName() << " id " << item_id_to_wear << LL_ENDL; + continue; + } + else if (gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH))) + { + LLNotificationsUtil::add("CannotWearTrash"); + LL_DEBUGS("Avatar") << "inventory item is in trash, skipping " + << item_to_wear->getName() << " id " << item_id_to_wear << LL_ENDL; + continue; + } + else if (isLinkedInCOF(item_to_wear->getUUID())) // EXT-84911 + { + LL_DEBUGS("Avatar") << "inventory item is already in COF, skipping " + << item_to_wear->getName() << " id " << item_id_to_wear << LL_ENDL; + continue; + } + + switch (item_to_wear->getType()) + { + case LLAssetType::AT_CLOTHING: + { + if (gAgentWearables.areWearablesLoaded()) + { + if (!cb && do_update) + { + cb = new LLUpdateAppearanceAndEditWearableOnDestroy(item_id_to_wear); + } + LLWearableType::EType type = item_to_wear->getWearableType(); + S32 wearable_count = gAgentWearables.getWearableCount(type); + if ((replace && wearable_count != 0) || !gAgentWearables.canAddWearable(type)) + { + LLUUID item_id = gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), + wearable_count-1); + removeCOFItemLinks(item_id, cb); + } + + items_to_link.push_back(item_to_wear); + } + } + break; + + case LLAssetType::AT_BODYPART: + { + // TODO: investigate wearables may not be loaded at this point EXT-8231 + + // Remove the existing wearables of the same type. + // Remove existing body parts anyway because we must not be able to wear e.g. two skins. + removeCOFLinksOfType(item_to_wear->getWearableType()); + if (!cb && do_update) + { + cb = new LLUpdateAppearanceAndEditWearableOnDestroy(item_id_to_wear); + } + items_to_link.push_back(item_to_wear); + } + break; + + case LLAssetType::AT_OBJECT: + { + rez_attachment(item_to_wear, NULL, replace); + } + break; + + default: continue; + } + } + + // Batch up COF link creation - more efficient if using AIS. + if (items_to_link.size()) + { + link_inventory_array(getCOF(), items_to_link, cb); + } +} + +void LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb) { - - if (item_id_to_wear.isNull()) return false; - - // *TODO: issue with multi-wearable should be fixed: - // in this case this method will be called N times - loading started for each item - // and than N times will be called - loading completed for each item. - // That means subscribers will be notified that loading is done after first item in a batch is worn. - // (loading indicator disappears for example before all selected items are worn) - // Have not fix this issue for 2.1 because of stability reason. EXT-7777. - - // Disabled for now because it is *not* acceptable to call updateAppearanceFromCOF() multiple times -// gAgentWearables.notifyLoadingStarted(); - - LLViewerInventoryItem* item_to_wear = gInventory.getItem(item_id_to_wear); - if (!item_to_wear) return false; - - if (gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getLibraryRootFolderID())) - { - LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(wear_on_avatar_cb,_1,replace)); - copy_inventory_item(gAgent.getID(), item_to_wear->getPermissions().getOwner(), item_to_wear->getUUID(), LLUUID::null, std::string(), cb); - return false; - } - else if (!gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getRootFolderID())) - { - return false; // not in library and not in agent's inventory - } - else if (gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH))) - { - LLNotificationsUtil::add("CannotWearTrash"); - return false; - } - else if (isLinkedInCOF(item_to_wear->getUUID())) // EXT-84911 - { - return false; - } - - switch (item_to_wear->getType()) - { - case LLAssetType::AT_CLOTHING: - if (gAgentWearables.areWearablesLoaded()) - { - if (!cb && do_update) - { - cb = new LLUpdateAppearanceAndEditWearableOnDestroy(item_id_to_wear); - } - S32 wearable_count = gAgentWearables.getWearableCount(item_to_wear->getWearableType()); - if ((replace && wearable_count != 0) || - (wearable_count >= LLAgentWearables::MAX_CLOTHING_PER_TYPE) ) - { - LLUUID item_id = gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), - wearable_count-1); - removeCOFItemLinks(item_id, cb); - } - - addCOFItemLink(item_to_wear, cb); - } - break; - - case LLAssetType::AT_BODYPART: - // TODO: investigate wearables may not be loaded at this point EXT-8231 - - // Remove the existing wearables of the same type. - // Remove existing body parts anyway because we must not be able to wear e.g. two skins. - removeCOFLinksOfType(item_to_wear->getWearableType()); - if (!cb && do_update) - { - cb = new LLUpdateAppearanceAndEditWearableOnDestroy(item_id_to_wear); - } - addCOFItemLink(item_to_wear, cb); - break; - - case LLAssetType::AT_OBJECT: - rez_attachment(item_to_wear, NULL, replace); - break; - - default: return false;; - } - - return true; + uuid_vec_t ids; + ids.push_back(item_id_to_wear); + wearItemsOnAvatar(ids, do_update, replace, cb); } // Update appearance from outfit folder. @@ -1730,9 +1786,15 @@ bool LLAppearanceMgr::getCanRemoveFromCOF(const LLUUID& outfit_cat_id) { return false; } - + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; LLFindWearablesEx is_worn(/*is_worn=*/ true, /*include_body_parts=*/ false); - return gInventory.hasMatchingDirectDescendent(outfit_cat_id, is_worn); + gInventory.collectDescendentsIf(outfit_cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + is_worn); + return items.size() > 0; } // static @@ -1782,6 +1844,53 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id) return items.size() > 0; } +// Moved from LLWearableList::ContextMenu for wider utility. +bool LLAppearanceMgr::canAddWearables(const uuid_vec_t& item_ids) +{ + // TODO: investigate wearables may not be loaded at this point EXT-8231 + + U32 n_objects = 0; + U32 n_clothes = 0; + + // Count given clothes (by wearable type) and objects. + for (uuid_vec_t::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it) + { + LLViewerInventoryItem* item = gInventory.getItem(*it); + if (!item) + { + return false; + } + + if (item->getType() == LLAssetType::AT_OBJECT) + { + ++n_objects; + } + else if (item->getType() == LLAssetType::AT_CLOTHING) + { + ++n_clothes; + } + else if (item->getType() == LLAssetType::AT_BODYPART || item->getType() == LLAssetType::AT_GESTURE) + { + return isAgentAvatarValid(); + } + else + { + LL_WARNS() << "Unexpected wearable type" << LL_ENDL; + return false; + } + } + + // Check whether we can add all the objects. + if (!isAgentAvatarValid() || !gAgentAvatarp->canAttachMoreObjects(n_objects)) + { + return false; + } + + // Check whether we can add all the clothes. + U32 sum_clothes = n_clothes + gAgentWearables.getClothingLayerCount(); + return sum_clothes <= LLAgentWearables::MAX_CLOTHING_LAYERS; +} + void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> cb) { LLInventoryModel::cat_array_t cats; @@ -1804,25 +1913,39 @@ void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category, LLPointer<LLIn // Keep the last N wearables of each type. For viewer 2.0, N is 1 for // both body parts and clothing items. void LLAppearanceMgr::filterWearableItems( - LLInventoryModel::item_array_t& items, S32 max_per_type) -{ - // Divvy items into arrays by wearable type. - std::vector<LLInventoryModel::item_array_t> items_by_type(LLWearableType::WT_COUNT); - divvyWearablesByType(items, items_by_type); - - // rebuild items list, retaining the last max_per_type of each array - items.clear(); - for (S32 i=0; i<LLWearableType::WT_COUNT; i++) - { - S32 size = items_by_type[i].size(); - if (size <= 0) - continue; - S32 start_index = llmax(0,size-max_per_type); - for (S32 j = start_index; j<size; j++) - { - items.push_back(items_by_type[i][j]); - } - } + LLInventoryModel::item_array_t& items, S32 max_per_type, S32 max_total) +{ + // Restrict by max total items first. + if ((max_total > 0) && (items.size() > max_total)) + { + LLInventoryModel::item_array_t items_to_keep; + for (S32 i=0; i<max_total; i++) + { + items_to_keep.push_back(items[i]); + } + items = items_to_keep; + } + + if (max_per_type > 0) + { + // Divvy items into arrays by wearable type. + std::vector<LLInventoryModel::item_array_t> items_by_type(LLWearableType::WT_COUNT); + divvyWearablesByType(items, items_by_type); + + // rebuild items list, retaining the last max_per_type of each array + items.clear(); + for (S32 i=0; i<LLWearableType::WT_COUNT; i++) + { + S32 size = items_by_type[i].size(); + if (size <= 0) + continue; + S32 start_index = llmax(0,size-max_per_type); + for (S32 j = start_index; j<size; j++) + { + items.push_back(items_by_type[i][j]); + } + } + } } void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append) @@ -1864,7 +1987,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append) reverse(body_items.begin(), body_items.end()); // Reduce body items to max of one per type. removeDuplicateItems(body_items); - filterWearableItems(body_items, 1); + filterWearableItems(body_items, 1, 0); // - Wearables: include COF contents only if appending. LLInventoryModel::item_array_t wear_items; @@ -1873,7 +1996,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append) getDescendentsOfAssetType(category, wear_items, LLAssetType::AT_CLOTHING); // Reduce wearables to max of one per type. removeDuplicateItems(wear_items); - filterWearableItems(wear_items, LLAgentWearables::MAX_CLOTHING_PER_TYPE); + filterWearableItems(wear_items, 0, LLAgentWearables::MAX_CLOTHING_LAYERS); // - Attachments: include COF contents only if appending. LLInventoryModel::item_array_t obj_items; @@ -2062,7 +2185,8 @@ void item_array_diff(LLInventoryModel::item_array_t& full_list, S32 LLAppearanceMgr::findExcessOrDuplicateItems(const LLUUID& cat_id, LLAssetType::EType type, - S32 max_items, + S32 max_items_per_type, + S32 max_items_total, LLInventoryObject::object_list_t& items_to_kill) { S32 to_kill_count = 0; @@ -2071,9 +2195,9 @@ S32 LLAppearanceMgr::findExcessOrDuplicateItems(const LLUUID& cat_id, getDescendentsOfAssetType(cat_id, items, type); LLInventoryModel::item_array_t curr_items = items; removeDuplicateItems(items); - if (max_items > 0) + if (max_items_per_type > 0 || max_items_total > 0) { - filterWearableItems(items, max_items); + filterWearableItems(items, max_items_per_type, max_items_total); } LLInventoryModel::item_array_t kill_items; item_array_diff(curr_items,items,kill_items); @@ -2092,11 +2216,11 @@ void LLAppearanceMgr::findAllExcessOrDuplicateItems(const LLUUID& cat_id, LLInventoryObject::object_list_t& items_to_kill) { findExcessOrDuplicateItems(cat_id,LLAssetType::AT_BODYPART, - 1, items_to_kill); + 1, 0, items_to_kill); findExcessOrDuplicateItems(cat_id,LLAssetType::AT_CLOTHING, - LLAgentWearables::MAX_CLOTHING_PER_TYPE, items_to_kill); + 0, LLAgentWearables::MAX_CLOTHING_LAYERS, items_to_kill); findExcessOrDuplicateItems(cat_id,LLAssetType::AT_OBJECT, - -1, items_to_kill); + 0, 0, items_to_kill); } void LLAppearanceMgr::enforceCOFItemRestrictions(LLPointer<LLInventoryCallback> cb) @@ -2351,7 +2475,7 @@ void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool LLPointer<LLInventoryCallback> copy_cb = new LLWearCategoryAfterCopy(append); LLPointer<LLInventoryCallback> track_cb = new LLTrackPhaseWrapper( std::string("wear_inventory_category_callback"), copy_cb); - LLPointer<AISCommand> cmd_ptr = new CopyLibraryCategoryCommand(category->getUUID(), parent_id, track_cb); + LLPointer<AISCommand> cmd_ptr = new CopyLibraryCategoryCommand(category->getUUID(), parent_id, track_cb, false); ais_ran=cmd_ptr->run_command(); } @@ -2588,7 +2712,6 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, item_array, LLInventoryModel::EXCLUDE_TRASH); bool linked_already = false; - U32 count = 0; for (S32 i=0; i<item_array.size(); i++) { // Are these links to the same object? @@ -2608,14 +2731,13 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, // type? If so, new item will replace old. else if ((vitem->isWearableType()) && (vitem->getWearableType() == wearable_type)) { - ++count; - if (is_body_part && inv_item->getIsLinkType() && (vitem->getWearableType() == wearable_type)) + if (is_body_part && inv_item->getIsLinkType()) { remove_inventory_item(inv_item->getUUID(), cb); } - else if (count >= LLAgentWearables::MAX_CLOTHING_PER_TYPE) + else if (!gAgentWearables.canAddWearable(wearable_type)) { - // MULTI-WEARABLES: make sure we don't go over MAX_CLOTHING_PER_TYPE + // MULTI-WEARABLES: make sure we don't go over clothing limits remove_inventory_item(inv_item->getUUID(), cb); } } @@ -2632,28 +2754,23 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, LLInventoryModel::item_array_t LLAppearanceMgr::findCOFItemLinks(const LLUUID& item_id) { - LLInventoryModel::item_array_t result; - const LLViewerInventoryItem *vitem = - dynamic_cast<const LLViewerInventoryItem*>(gInventory.getItem(item_id)); - if (vitem) - { - LLInventoryModel::cat_array_t cat_array; - LLInventoryModel::item_array_t item_array; - gInventory.collectDescendents(LLAppearanceMgr::getCOF(), - cat_array, - item_array, - LLInventoryModel::EXCLUDE_TRASH); - for (S32 i=0; i<item_array.size(); i++) - { - const LLViewerInventoryItem* inv_item = item_array.at(i).get(); - if (inv_item->getLinkedUUID() == vitem->getLinkedUUID()) - { - result.push_back(item_array.at(i)); - } - } - } + LLUUID linked_id = gInventory.getLinkedItemID(item_id); + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + gInventory.collectDescendents(LLAppearanceMgr::getCOF(), + cat_array, + item_array, + LLInventoryModel::EXCLUDE_TRASH); + for (S32 i=0; i<item_array.size(); i++) + { + const LLViewerInventoryItem* inv_item = item_array.at(i).get(); + if (inv_item->getLinkedUUID() == linked_id) + { + result.push_back(item_array.at(i)); + } + } return result; } @@ -3230,7 +3347,7 @@ void RequestAgentUpdateAppearanceResponder::onRequestRequested() } // Actually send the request. - LL_DEBUGS("Avatar") << "Will send request for cof_version " << cof_version << LL_ENDL; + LL_DEBUGS("Avatar") << "ATT sending bake request for cof_version " << cof_version << LL_ENDL; mRetryPolicy->reset(); sendRequest(); } @@ -3703,6 +3820,15 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove) { const LLUUID& id_to_remove = *it; const LLUUID& linked_item_id = gInventory.getLinkedItemID(id_to_remove); + LLViewerInventoryItem *item = gInventory.getItem(linked_item_id); + if (item && item->getType() == LLAssetType::AT_OBJECT) + { + LL_DEBUGS("Avatar") << "ATT removing attachment " << item->getName() << " id " << item->getUUID() << LL_ENDL; + } + if (item && item->getType() == LLAssetType::AT_BODYPART) + { + continue; + } removeCOFItemLinks(linked_item_id, cb); addDoomedTempAttachment(linked_item_id); } @@ -3710,10 +3836,9 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove) void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove) { - LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove); - LLPointer<LLInventoryCallback> cb = new LLUpdateAppearanceOnDestroy; - removeCOFItemLinks(linked_item_id, cb); - addDoomedTempAttachment(linked_item_id); + uuid_vec_t ids_to_remove; + ids_to_remove.push_back(id_to_remove); + removeItemsFromAvatar(ids_to_remove); } @@ -3898,37 +4023,32 @@ void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg) void LLAppearanceMgr::registerAttachment(const LLUUID& item_id) { - gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); - - if (mAttachmentInvLinkEnabled) - { - // we have to pass do_update = true to call LLAppearanceMgr::updateAppearanceFromCOF. - // it will trigger gAgentWariables.notifyLoadingFinished() - // But it is not acceptable solution. See EXT-7777 - if (!isLinkedInCOF(item_id)) - { - LLPointer<LLInventoryCallback> cb = new LLUpdateAppearanceOnDestroy(); - LLAppearanceMgr::addCOFItemLink(item_id, cb); // Add COF link for item. - } - } - else - { - //LL_INFOS() << "no link changes, inv link not enabled" << LL_ENDL; - } + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT registering attachment " + << (item ? item->getName() : "UNKNOWN") << " " << item_id << LL_ENDL; + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + + LLAttachmentsMgr::instance().onAttachmentArrived(item_id); } void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id) { - gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT unregistering attachment " + << (item ? item->getName() : "UNKNOWN") << " " << item_id << LL_ENDL; + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); - if (mAttachmentInvLinkEnabled) - { - LLAppearanceMgr::removeCOFItemLinks(item_id); - } - else - { - //LL_INFOS() << "no link changes, inv link not enabled" << LL_ENDL; - } + LLAttachmentsMgr::instance().onDetachCompleted(item_id); + if (mAttachmentInvLinkEnabled && isLinkedInCOF(item_id)) + { + LL_DEBUGS("Avatar") << "ATT removing COF link for attachment " + << (item ? item->getName() : "UNKNOWN") << " " << item_id << LL_ENDL; + LLAppearanceMgr::removeCOFItemLinks(item_id); + } + else + { + //LL_INFOS() << "no link changes, inv link not enabled" << LL_ENDL; + } } BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const @@ -3942,14 +4062,6 @@ BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const return FALSE; } -// static -bool LLAppearanceMgr::isLinkInCOF(const LLUUID& obj_id) -{ - const LLUUID& target_id = gInventory.getLinkedItemID(obj_id); - LLLinkedItemIDMatches find_links(target_id); - return gInventory.hasMatchingDirectDescendent(LLAppearanceMgr::instance().getCOF(), find_links); -} - BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const { if (!getIsInCOF(obj_id)) return FALSE; @@ -4068,19 +4180,56 @@ void callAfterCategoryFetch(const LLUUID& cat_id, nullary_func_t cb) } } +void add_wearable_type_counts(const uuid_vec_t& ids, + S32& clothing_count, + S32& bodypart_count, + S32& object_count, + S32& other_count) +{ + for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) + { + const LLUUID& item_id_to_wear = *it; + LLViewerInventoryItem* item_to_wear = gInventory.getItem(item_id_to_wear); + if (item_to_wear) + { + if (item_to_wear->getType() == LLAssetType::AT_CLOTHING) + { + clothing_count++; + } + else if (item_to_wear->getType() == LLAssetType::AT_BODYPART) + { + bodypart_count++; + } + else if (item_to_wear->getType() == LLAssetType::AT_OBJECT) + { + object_count++; + } + else + { + other_count++; + } + } + else + { + other_count++; + } + } +} + void wear_multiple(const uuid_vec_t& ids, bool replace) { - LLPointer<LLInventoryCallback> cb = new LLUpdateAppearanceOnDestroy; - - bool first = true; - uuid_vec_t::const_iterator it; - for (it = ids.begin(); it != ids.end(); ++it) - { - // if replace is requested, the first item worn will replace the current top - // item, and others will be added. - LLAppearanceMgr::instance().wearItemOnAvatar(*it,false,first && replace,cb); - first = false; - } + S32 clothing_count = 0; + S32 bodypart_count = 0; + S32 object_count = 0; + S32 other_count = 0; + add_wearable_type_counts(ids, clothing_count, bodypart_count, object_count, other_count); + + LLPointer<LLInventoryCallback> cb = NULL; + if (clothing_count > 0 || bodypart_count > 0) + { + cb = new LLUpdateAppearanceOnDestroy; + } + LLAppearanceMgr::instance().wearItemsOnAvatar(ids, true, replace, cb); } // SLapp for easy-wearing of a stock (library) avatar diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 7742a19c07..4ed8c1bfb9 100755..100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -67,7 +67,8 @@ public: void addCategoryToCurrentOutfit(const LLUUID& cat_id); S32 findExcessOrDuplicateItems(const LLUUID& cat_id, LLAssetType::EType type, - S32 max_items, + S32 max_items_per_type, + S32 max_items_total, LLInventoryObject::object_list_t& items_to_kill); void findAllExcessOrDuplicateItems(const LLUUID& cat_id, LLInventoryObject::object_list_t& items_to_kill); @@ -99,6 +100,9 @@ public: // Determine whether we can replace current outfit with the given one. bool getCanReplaceCOF(const LLUUID& outfit_cat_id); + // Can we add all referenced items to the avatar? + bool canAddWearables(const uuid_vec_t& item_ids); + // Copy all items in a category. void shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, LLPointer<LLInventoryCallback> cb); @@ -117,8 +121,13 @@ public: // find the UUID of the currently worn outfit (Base Outfit) const LLUUID getBaseOutfitUUID(); + void wearItemsOnAvatar(const uuid_vec_t& item_ids_to_wear, + bool do_update, + bool replace, + LLPointer<LLInventoryCallback> cb = NULL); + // Wear/attach an item (from a user's inventory) on the agent - bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update, bool replace = false, + void wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update, bool replace = false, LLPointer<LLInventoryCallback> cb = NULL); // Update the displayed outfit name in UI. @@ -235,7 +244,7 @@ protected: private: - void filterWearableItems(LLInventoryModel::item_array_t& items, S32 max_per_type); + void filterWearableItems(LLInventoryModel::item_array_t& items, S32 max_per_type, S32 max_total); void getDescendentsOfAssetType(const LLUUID& category, LLInventoryModel::item_array_t& items, @@ -275,11 +284,6 @@ public: BOOL getIsInCOF(const LLUUID& obj_id) const; // Is this in the COF and can the user delete it from the COF? BOOL getIsProtectedCOFItem(const LLUUID& obj_id) const; - - /** - * Checks if COF contains link to specified object. - */ - static bool isLinkInCOF(const LLUUID& obj_id); }; class LLUpdateAppearanceOnDestroy: public LLInventoryCallback @@ -311,6 +315,15 @@ private: LLUUID mItemID; }; +class LLRequestServerAppearanceUpdateOnDestroy: public LLInventoryCallback +{ +public: + LLRequestServerAppearanceUpdateOnDestroy() {} + ~LLRequestServerAppearanceUpdateOnDestroy(); + + /* virtual */ void fire(const LLUUID& item_id) {} +}; + LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name); // Invoke a given callable after category contents are fully fetched. diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 6dc71bc94e..ae85d1450e 100755..100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -105,6 +105,7 @@ // Linden library includes #include "llavatarnamecache.h" #include "lldiriterator.h" +#include "llexperiencecache.h" #include "llimagej2c.h" #include "llmemory.h" #include "llprimitive.h" @@ -123,6 +124,9 @@ #include "llleap.h" #include "stringize.h" #include "llcoros.h" +#if !LL_LINUX +#include "cef/llceflib.h" +#endif // Third party library includes #include <boost/bind.hpp> @@ -130,7 +134,6 @@ #include <boost/algorithm/string.hpp> #include <boost/regex.hpp> - #if LL_WINDOWS # include <share.h> // For _SH_DENYWR in processMarkerFiles #else @@ -326,7 +329,10 @@ BOOL gDisconnected = FALSE; // used to restore texture state after a mode switch LLFrameTimer gRestoreGLTimer; BOOL gRestoreGL = FALSE; -BOOL gUseWireframe = FALSE; +BOOL gUseWireframe = FALSE; + +//use for remember deferred mode in wireframe switch +BOOL gInitialDeferredModeForWireframe = FALSE; // VFS globals - see llappviewer.h LLVFS* gStaticVFS = NULL; @@ -1727,6 +1733,9 @@ bool LLAppViewer::cleanup() // to ensure shutdown order LLMortician::setZealous(TRUE); + // Give any remaining SLPlugin instances a chance to exit cleanly. + LLPluginProcessParent::shutdown(); + LLVoiceClient::getInstance()->terminate(); disconnectViewer(); @@ -2783,10 +2792,12 @@ bool LLAppViewer::initConfiguration() // gWindowTitle = LLTrans::getString("APP_NAME"); #if LL_DEBUG - gWindowTitle += std::string(" [DEBUG] ") + gArgs; -#else - gWindowTitle += std::string(" ") + gArgs; + gWindowTitle += std::string(" [DEBUG]"); #endif + if (!gArgs.empty()) + { + gWindowTitle += std::string(" ") + gArgs; + } LLStringUtil::truncate(gWindowTitle, 255); //RN: if we received a URL, hand it off to the existing instance. @@ -3090,8 +3101,8 @@ void LLAppViewer::initUpdater() U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); bool willing_to_test; LL_DEBUGS("UpdaterService") << "channel " << channel << LL_ENDL; - static const boost::regex is_test_channel("\\bTest$"); - if (boost::regex_search(channel, is_test_channel)) + + if (LLVersionInfo::TEST_VIEWER == LLVersionInfo::getViewerMaturity()) { LL_INFOS("UpdaterService") << "Test build: overriding willing_to_test by sending testno" << LL_ENDL; willing_to_test = false; @@ -3298,9 +3309,12 @@ LLSD LLAppViewer::getViewerInfo() const version.append(LLVersionInfo::getBuild()); info["VIEWER_VERSION"] = version; info["VIEWER_VERSION_STR"] = LLVersionInfo::getVersion(); - info["BUILD_DATE"] = __DATE__; - info["BUILD_TIME"] = __TIME__; info["CHANNEL"] = LLVersionInfo::getChannel(); + std::string build_config = LLVersionInfo::getBuildConfig(); + if (build_config != "Release") + { + info["BUILD_CONFIG"] = build_config; + } // return a URL to the release notes for this viewer, such as: // http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0.123456 @@ -3312,14 +3326,6 @@ LLSD LLAppViewer::getViewerInfo() const info["VIEWER_RELEASE_NOTES_URL"] = url; -#if LL_MSVC - info["COMPILER"] = "MSVC"; - info["COMPILER_VERSION"] = _MSC_VER; -#elif LL_GNUC - info["COMPILER"] = "GCC"; - info["COMPILER_VERSION"] = GCC_VERSION; -#endif - // Position LLViewerRegion* region = gAgent.getRegion(); if (region) @@ -3353,7 +3359,7 @@ LLSD LLAppViewer::getViewerInfo() const #endif info["OPENGL_VERSION"] = (const char*)(glGetString(GL_VERSION)); - info["LIBCURL_VERSION"] = LLCurl::getVersionString(); + info["J2C_VERSION"] = LLImageJ2C::getEngineInfo(); bool want_fullname = true; info["AUDIO_DRIVER_VERSION"] = gAudiop ? LLSD(gAudiop->getDriverName(want_fullname)) : LLSD(); @@ -3369,8 +3375,11 @@ LLSD LLAppViewer::getViewerInfo() const info["VOICE_VERSION"] = LLTrans::getString("NotConnected"); } - // TODO: Implement media plugin version query - info["QT_WEBKIT_VERSION"] = "4.7.1 (version number hard-coded)"; +#if !LL_LINUX + info["LLCEFLIB_VERSION"] = LLCEFLIB_VERSION; +#else + info["LLCEFLIB_VERSION"] = "Undefined"; +#endif S32 packets_in = LLViewerStats::instance().getRecording().getSum(LLStatViewer::PACKETS_IN); if (packets_in > 0) @@ -3443,6 +3452,10 @@ std::string LLAppViewer::getViewerInfoString() const // Now build the various pieces support << LLTrans::getString("AboutHeader", args); + if (info.has("BUILD_CONFIG")) + { + support << "\n" << LLTrans::getString("BuildConfig", args); + } if (info.has("REGION")) { support << "\n\n" << LLTrans::getString("AboutPosition", args); @@ -4698,6 +4711,32 @@ void LLAppViewer::saveNameCache() } } + +void LLAppViewer::saveExperienceCache() +{ + std::string filename = + gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "experience_cache.xml"); + LL_INFOS("ExperienceCache") << "Saving " << filename << LL_ENDL; + llofstream cache_stream(filename.c_str()); + if(cache_stream.is_open()) + { + LLExperienceCache::exportFile(cache_stream); + } +} + +void LLAppViewer::loadExperienceCache() +{ + std::string filename = + gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "experience_cache.xml"); + LL_INFOS("ExperienceCache") << "Loading " << filename << LL_ENDL; + llifstream cache_stream(filename.c_str()); + if(cache_stream.is_open()) + { + LLExperienceCache::importFile(cache_stream); + } +} + + /*! @brief This class is an LLFrameTimer that can be created with an elapsed time that starts counting up from the given value rather than 0.0. @@ -4893,7 +4932,7 @@ void LLAppViewer::idle() // floating throughout the various object lists. // idleNameCache(); - + idleExperienceCache(); idleNetwork(); @@ -4921,6 +4960,7 @@ void LLAppViewer::idle() gIdleCallbacks.callFunctions(); gInventory.idleNotifyObservers(); + LLAvatarTracker::instance().idleNotifyObservers(); } // Metrics logging (LLViewerAssetStats, etc.) @@ -5323,6 +5363,22 @@ void LLAppViewer::idleNameCache() LLAvatarNameCache::idle(); } +void LLAppViewer::idleExperienceCache() +{ + LLViewerRegion* region = gAgent.getRegion(); + if (!region) return; + + std::string lookup_url=region->getCapability("GetExperienceInfo"); + if(!lookup_url.empty() && *lookup_url.rbegin() != '/') + { + lookup_url += '/'; + } + + LLExperienceCache::setLookupURL(lookup_url); + + LLExperienceCache::idle(); +} + // // Handle messages, and all message related stuff // @@ -5485,6 +5541,7 @@ void LLAppViewer::disconnectViewer() } saveNameCache(); + saveExperienceCache(); // close inventory interface, close all windows LLFloaterInventory::cleanup(); diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index e8a1ca036b..539881c80e 100755..100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -1,6 +1,18 @@ /** - * @file llappviewer.h - * @brief The LLAppViewer class declaration + * @mainpage + * + * This is the sources for the Second Life Viewer; + * information on the open source project is at + * https://wiki.secondlife.com/wiki/Open_Source_Portal + * + * The Mercurial repository for the trunk version is at + * https://bitbucket.org/lindenlab/viewer-release + * + * @section source-license Source License + * @verbinclude LICENSE-source.txt + * + * @section artwork-license Artwork License + * @verbinclude LICENSE-logos.txt * * $LicenseInfo:firstyear=2007&license=viewerlgpl$ * Second Life Viewer Source Code @@ -22,6 +34,9 @@ * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ + * + * @file llappviewer.h + * @brief The LLAppViewer class declaration */ #ifndef LL_LLAPPVIEWER_H @@ -122,6 +137,9 @@ public: void loadNameCache(); void saveNameCache(); + void loadExperienceCache(); + void saveExperienceCache(); + void removeMarkerFiles(); void removeDumpDir(); @@ -230,6 +248,7 @@ private: void idle(); void idleShutdown(); // update avatar SLID and display name caches + void idleExperienceCache(); void idleNameCache(); void idleNetwork(); @@ -371,6 +390,7 @@ extern BOOL gDisconnected; extern LLFrameTimer gRestoreGLTimer; extern BOOL gRestoreGL; extern BOOL gUseWireframe; +extern BOOL gInitialDeferredModeForWireframe; // VFS globals - gVFS is for general use // gStaticVFS is read-only and is shipped w/ the viewer diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index f5742b29cf..f5742b29cf 100755..100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp diff --git a/indra/newview/llappviewerlinux.h b/indra/newview/llappviewerlinux.h index 0289c43043..0289c43043 100755..100644 --- a/indra/newview/llappviewerlinux.h +++ b/indra/newview/llappviewerlinux.h diff --git a/indra/newview/llappviewerlinux_api.h b/indra/newview/llappviewerlinux_api.h index 5d5fcaa3d6..5d5fcaa3d6 100755..100644 --- a/indra/newview/llappviewerlinux_api.h +++ b/indra/newview/llappviewerlinux_api.h diff --git a/indra/newview/llappviewerlinux_api.xml b/indra/newview/llappviewerlinux_api.xml index fac35b7adc..fac35b7adc 100755..100644 --- a/indra/newview/llappviewerlinux_api.xml +++ b/indra/newview/llappviewerlinux_api.xml diff --git a/indra/newview/llappviewerlinux_api_dbus.cpp b/indra/newview/llappviewerlinux_api_dbus.cpp index 6ac30bd9b8..6ac30bd9b8 100755..100644 --- a/indra/newview/llappviewerlinux_api_dbus.cpp +++ b/indra/newview/llappviewerlinux_api_dbus.cpp diff --git a/indra/newview/llappviewerlinux_api_dbus.h b/indra/newview/llappviewerlinux_api_dbus.h index 3eee25b53d..3eee25b53d 100755..100644 --- a/indra/newview/llappviewerlinux_api_dbus.h +++ b/indra/newview/llappviewerlinux_api_dbus.h diff --git a/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc b/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc index c0548e2fba..c0548e2fba 100755..100644 --- a/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc +++ b/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc diff --git a/indra/newview/llappviewerlistener.cpp b/indra/newview/llappviewerlistener.cpp index 94250f1fc2..94250f1fc2 100755..100644 --- a/indra/newview/llappviewerlistener.cpp +++ b/indra/newview/llappviewerlistener.cpp diff --git a/indra/newview/llappviewerlistener.h b/indra/newview/llappviewerlistener.h index 78c8b1909e..78c8b1909e 100755..100644 --- a/indra/newview/llappviewerlistener.h +++ b/indra/newview/llappviewerlistener.h diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 56154a2de3..09227806fd 100755..100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -62,9 +62,10 @@ namespace // They are not used immediately by the app. int gArgC; char** gArgV; - LLAppViewerMacOSX* gViewerAppPtr; + LLAppViewerMacOSX* gViewerAppPtr = NULL; void (*gOldTerminateHandler)() = NULL; + std::string gHandleSLURL; } static void exceptionTerminateHandler() @@ -107,7 +108,11 @@ bool initViewer() { LL_WARNS() << "Application init failed." << LL_ENDL; } - + else if (!gHandleSLURL.empty()) + { + dispatchUrl(gHandleSLURL); + gHandleSLURL = ""; + } return ok; } @@ -393,22 +398,31 @@ bool LLAppViewerMacOSX::getMasterSystemAudioMute() void handleUrl(const char* url_utf8) { - if (url_utf8) + if (url_utf8 && gViewerAppPtr) { - std::string url = url_utf8; - // Safari 3.2 silently mangles secondlife:///app/ URLs into - // secondlife:/app/ (only one leading slash). - // Fix them up to meet the URL specification. JC - const std::string prefix = "secondlife:/app/"; - std::string test_prefix = url.substr(0, prefix.length()); - LLStringUtil::toLower(test_prefix); - if (test_prefix == prefix) - { - url.replace(0, prefix.length(), "secondlife:///app/"); - } - - LLMediaCtrl* web = NULL; - const bool trusted_browser = false; - LLURLDispatcher::dispatch(url, "", web, trusted_browser); + gHandleSLURL = ""; + dispatchUrl(url_utf8); } + else if (url_utf8) + { + gHandleSLURL = url_utf8; + } +} + +void dispatchUrl(std::string url) +{ + // Safari 3.2 silently mangles secondlife:///app/ URLs into + // secondlife:/app/ (only one leading slash). + // Fix them up to meet the URL specification. JC + const std::string prefix = "secondlife:/app/"; + std::string test_prefix = url.substr(0, prefix.length()); + LLStringUtil::toLower(test_prefix); + if (test_prefix == prefix) + { + url.replace(0, prefix.length(), "secondlife:///app/"); + } + + LLMediaCtrl* web = NULL; + const bool trusted_browser = false; + LLURLDispatcher::dispatch(url, "", web, trusted_browser); } diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index ebb41a495c..ebb41a495c 100755..100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index 8833c57948..359ee1e221 100755..100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -168,6 +168,7 @@ void LLAssetUploadQueue::request(LLAssetUploadQueueSupplier** supplier) body["item_id"] = data.mItemId; body["is_script_running"] = data.mIsRunning; body["target"] = data.mIsTargetMono? "mono" : "lsl2"; + body["experience"] = data.mExperienceId; std::string url = ""; LLViewerObject* object = gObjectList.findObject(data.mTaskId); @@ -191,7 +192,8 @@ void LLAssetUploadQueue::queue(const std::string& filename, const LLUUID& queue_id, U8* script_data, U32 data_size, - std::string script_name) + std::string script_name, + const LLUUID& experience_id) { UploadData data; data.mTaskId = task_id; @@ -203,6 +205,7 @@ void LLAssetUploadQueue::queue(const std::string& filename, data.mData = script_data; data.mDataSize = data_size; data.mScriptName = script_name; + data.mExperienceId = experience_id; mQueue.push_back(data); diff --git a/indra/newview/llassetuploadqueue.h b/indra/newview/llassetuploadqueue.h index 434f3e5c03..2ceee8f700 100755..100644 --- a/indra/newview/llassetuploadqueue.h +++ b/indra/newview/llassetuploadqueue.h @@ -50,7 +50,8 @@ public: const LLUUID& queue_id, U8* data, U32 data_size, - std::string script_name); + std::string script_name, + const LLUUID& experience_id); bool isEmpty() const {return mQueue.empty();} @@ -69,6 +70,7 @@ private: U8* mData; U32 mDataSize; std::string mScriptName; + LLUUID mExperienceId; }; // Ownership of mSupplier passed to currently waiting responder diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index d2b1dcbf35..121ce647a6 100755..100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -618,7 +618,10 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content) case LLAssetType::AT_NOTECARD: { // Update the UI with the new asset. - LLPreviewNotecard* nc = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(item_id)); + LLSD floater_key; + floater_key["taskid"] = task_id; + floater_key["itemid"] = item_id; + LLPreviewNotecard* nc = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", floater_key); if(nc) { // *HACK: we have to delete the asset in the VFS so diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index 7fbebc7481..7fbebc7481 100755..100644 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp index 256980eb04..2a137cc39b 100755..100644 --- a/indra/newview/llattachmentsmgr.cpp +++ b/indra/newview/llattachmentsmgr.cpp @@ -27,15 +27,24 @@ #include "llviewerprecompiledheaders.h" #include "llattachmentsmgr.h" +#include "llvoavatarself.h" #include "llagent.h" +#include "llappearancemgr.h" #include "llinventorymodel.h" #include "lltooldraganddrop.h" // pack_permissions_slam #include "llviewerinventory.h" #include "llviewerregion.h" #include "message.h" +const F32 COF_LINK_BATCH_TIME = 5.0F; +const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F; +const F32 MIN_RETRY_REQUEST_TIME = 5.0F; +const F32 MAX_BAD_COF_TIME = 30.0F; -LLAttachmentsMgr::LLAttachmentsMgr() +LLAttachmentsMgr::LLAttachmentsMgr(): + mAttachmentRequests("attach",MIN_RETRY_REQUEST_TIME), + mDetachRequests("detach",MIN_RETRY_REQUEST_TIME), + mQuestionableCOFLinks("badcof",MAX_BAD_COF_TIME) { } @@ -43,15 +52,37 @@ LLAttachmentsMgr::~LLAttachmentsMgr() { } -void LLAttachmentsMgr::addAttachment(const LLUUID& item_id, - const U8 attachment_pt, - const BOOL add) +void LLAttachmentsMgr::addAttachmentRequest(const LLUUID& item_id, + const U8 attachment_pt, + const BOOL add) { + LLViewerInventoryItem *item = gInventory.getItem(item_id); + + if (mAttachmentRequests.wasRequestedRecently(item_id)) + { + LL_DEBUGS("Avatar") << "ATT not adding attachment to mPendingAttachments, recent request is already pending: " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + return; + } + + LL_DEBUGS("Avatar") << "ATT adding attachment to mPendingAttachments " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + AttachmentsInfo attachment; attachment.mItemID = item_id; attachment.mAttachmentPt = attachment_pt; attachment.mAdd = add; mPendingAttachments.push_back(attachment); + + mAttachmentRequests.addTime(item_id); +} + +void LLAttachmentsMgr::onAttachmentRequested(const LLUUID& item_id) +{ + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT attachment was requested " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + mAttachmentRequests.addTime(item_id); } // static @@ -68,31 +99,79 @@ void LLAttachmentsMgr::onIdle() return; } - S32 obj_count = mPendingAttachments.size(); + if (LLApp::isExiting()) + { + return; + } + + requestPendingAttachments(); + + linkRecentlyArrivedAttachments(); + + expireOldAttachmentRequests(); + + expireOldDetachRequests(); + + checkInvalidCOFLinks(); + + spamStatusInfo(); +} + +void LLAttachmentsMgr::requestPendingAttachments() +{ + if (mPendingAttachments.size()) + { + requestAttachments(mPendingAttachments); + } +} + +// Send request(s) for a group of attachments. As coded, this can +// request at most 40 attachments and the rest will be +// ignored. Currently the max attachments per avatar is 38, so the 40 +// limit should not be hit in practice. +void LLAttachmentsMgr::requestAttachments(attachments_vec_t& attachment_requests) +{ + // Make sure we got a region before trying anything else + if( !gAgent.getRegion() ) + { + return; + } + + // For unknown reasons, requesting many attachments at once causes + // frequent server-side failures. Here we're limiting the number + // of attachments requested per idle loop. + const S32 max_objects_per_request = 5; + S32 obj_count = llmin((S32)attachment_requests.size(),max_objects_per_request); if (obj_count == 0) { return; } - + // Limit number of packets to send const S32 MAX_PACKETS_TO_SEND = 10; const S32 OBJECTS_PER_PACKET = 4; const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; if( obj_count > MAX_OBJECTS_TO_SEND ) { + LL_WARNS() << "ATT Too many attachments requested: " << obj_count + << " exceeds limit of " << MAX_OBJECTS_TO_SEND << LL_ENDL; + obj_count = MAX_OBJECTS_TO_SEND; } + LL_DEBUGS("Avatar") << "ATT [RezMultipleAttachmentsFromInv] attaching multiple from attachment_requests," + " total obj_count " << obj_count << LL_ENDL; + LLUUID compound_msg_id; compound_msg_id.generate(); LLMessageSystem* msg = gMessageSystem; - - S32 i = 0; - for (attachments_vec_t::const_iterator iter = mPendingAttachments.begin(); - iter != mPendingAttachments.end(); - ++iter) - { + // by construction above, obj_count <= attachment_requests.size(), so no + // check against attachment_requests.empty() is needed. + llassert(obj_count <= attachment_requests.size()); + + for (S32 i=0; i<obj_count; i++) + { if( 0 == (i % OBJECTS_PER_PACKET) ) { // Start a new message chunk @@ -106,32 +185,337 @@ void LLAttachmentsMgr::onIdle() msg->addBOOLFast(_PREHASH_FirstDetachAll, false ); } - const AttachmentsInfo &attachment = (*iter); + const AttachmentsInfo& attachment = attachment_requests.front(); LLViewerInventoryItem* item = gInventory.getItem(attachment.mItemID); - if (!item) + if (item) + { + LL_DEBUGS("Avatar") << "ATT requesting from attachment_requests " << item->getName() + << " " << item->getLinkedUUID() << LL_ENDL; + S32 attachment_pt = attachment.mAttachmentPt; + if (attachment.mAdd) + attachment_pt |= ATTACHMENT_ADD; + + msg->nextBlockFast(_PREHASH_ObjectData ); + msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); + msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); + msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt); + pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); + msg->addStringFast(_PREHASH_Name, item->getName()); + msg->addStringFast(_PREHASH_Description, item->getDescription()); + } + else { - LL_INFOS() << "Attempted to add non-existant item ID:" << attachment.mItemID << LL_ENDL; - continue; + LL_WARNS("Avatar") << "ATT Attempted to add non-existent item ID:" << attachment.mItemID << LL_ENDL; } - S32 attachment_pt = attachment.mAttachmentPt; - if (attachment.mAdd) - attachment_pt |= ATTACHMENT_ADD; - - msg->nextBlockFast(_PREHASH_ObjectData ); - msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); - msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); - msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt); - pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); - msg->addStringFast(_PREHASH_Name, item->getName()); - msg->addStringFast(_PREHASH_Description, item->getDescription()); if( (i+1 == obj_count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) { // End of message chunk msg->sendReliable( gAgent.getRegion()->getHost() ); } - i++; + attachment_requests.pop_front(); } +} + +void LLAttachmentsMgr::linkRecentlyArrivedAttachments() +{ + if (mRecentlyArrivedAttachments.size()) + { + // One or more attachments have arrived but have not yet been + // processed for COF links + if (mAttachmentRequests.empty()) + { + // Not waiting for any more. + LL_DEBUGS("Avatar") << "ATT all pending attachments have arrived after " + << mCOFLinkBatchTimer.getElapsedTimeF32() << " seconds" << LL_ENDL; + } + else if (mCOFLinkBatchTimer.getElapsedTimeF32() > COF_LINK_BATCH_TIME) + { + LL_DEBUGS("Avatar") << "ATT " << mAttachmentRequests.size() + << " pending attachments have not arrived, but wait time exceeded" << LL_ENDL; + } + else + { + return; + } + + LL_DEBUGS("Avatar") << "ATT checking COF linkability for " << mRecentlyArrivedAttachments.size() + << " recently arrived items" << LL_ENDL; + + uuid_vec_t ids_to_link; + for (std::set<LLUUID>::iterator it = mRecentlyArrivedAttachments.begin(); + it != mRecentlyArrivedAttachments.end(); ++it) + { + if (isAgentAvatarValid() && + gAgentAvatarp->isWearingAttachment(*it) && + !LLAppearanceMgr::instance().isLinkedInCOF(*it)) + { + LLUUID item_id = *it; + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT adding COF link for attachment " + << (item ? item->getName() : "UNKNOWN") << " " << item_id << LL_ENDL; + ids_to_link.push_back(item_id); + } + } + if (ids_to_link.size()) + { + LLPointer<LLInventoryCallback> cb = new LLRequestServerAppearanceUpdateOnDestroy(); + for (uuid_vec_t::const_iterator uuid_it = ids_to_link.begin(); + uuid_it != ids_to_link.end(); ++uuid_it) + { + LLAppearanceMgr::instance().addCOFItemLink(*uuid_it, cb); + } + } + mRecentlyArrivedAttachments.clear(); + } +} + +LLAttachmentsMgr::LLItemRequestTimes::LLItemRequestTimes(const std::string& op_name, F32 timeout): + mOpName(op_name), + mTimeout(timeout) +{ +} + +void LLAttachmentsMgr::LLItemRequestTimes::addTime(const LLUUID& inv_item_id) +{ + LLInventoryItem *item = gInventory.getItem(inv_item_id); + LL_DEBUGS("Avatar") << "ATT " << mOpName << " adding request time " << (item ? item->getName() : "UNKNOWN") << " " << inv_item_id << LL_ENDL; + LLTimer current_time; + (*this)[inv_item_id] = current_time; +} + +void LLAttachmentsMgr::LLItemRequestTimes::removeTime(const LLUUID& inv_item_id) +{ + LLInventoryItem *item = gInventory.getItem(inv_item_id); + S32 remove_count = (*this).erase(inv_item_id); + if (remove_count) + { + LL_DEBUGS("Avatar") << "ATT " << mOpName << " removing request time " + << (item ? item->getName() : "UNKNOWN") << " " << inv_item_id << LL_ENDL; + } +} + +BOOL LLAttachmentsMgr::LLItemRequestTimes::getTime(const LLUUID& inv_item_id, LLTimer& timer) const +{ + std::map<LLUUID,LLTimer>::const_iterator it = (*this).find(inv_item_id); + if (it != (*this).end()) + { + timer = it->second; + return TRUE; + } + return FALSE; +} + +BOOL LLAttachmentsMgr::LLItemRequestTimes::wasRequestedRecently(const LLUUID& inv_item_id) const +{ + LLTimer request_time; + if (getTime(inv_item_id, request_time)) + { + F32 request_time_elapsed = request_time.getElapsedTimeF32(); + return request_time_elapsed < mTimeout; + } + else + { + return FALSE; + } +} + +// If we've been waiting for an attachment a long time, we want to +// forget the request, because if the request is invalid (say the +// object does not exist), the existence of a request that never goes +// away will gum up the COF batch logic, causing it to always wait for +// the timeout. Expiring a request means if the item does show up +// late, the COF link request may not get properly batched up, but +// behavior will be no worse than before we had the batching mechanism +// in place; the COF link will still be created, but extra +// requestServerAppearanceUpdate() calls may occur. +void LLAttachmentsMgr::expireOldAttachmentRequests() +{ + for (std::map<LLUUID,LLTimer>::iterator it = mAttachmentRequests.begin(); + it != mAttachmentRequests.end(); ) + { + std::map<LLUUID,LLTimer>::iterator curr_it = it; + ++it; + if (curr_it->second.getElapsedTimeF32() > MAX_ATTACHMENT_REQUEST_LIFETIME) + { + LLInventoryItem *item = gInventory.getItem(curr_it->first); + LL_WARNS("Avatar") << "ATT expiring request for attachment " + << (item ? item->getName() : "UNKNOWN") << " item_id " << curr_it->first + << " after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds" << LL_ENDL; + mAttachmentRequests.erase(curr_it); + } + } +} + +void LLAttachmentsMgr::expireOldDetachRequests() +{ + for (std::map<LLUUID,LLTimer>::iterator it = mDetachRequests.begin(); + it != mDetachRequests.end(); ) + { + std::map<LLUUID,LLTimer>::iterator curr_it = it; + ++it; + if (curr_it->second.getElapsedTimeF32() > MAX_ATTACHMENT_REQUEST_LIFETIME) + { + LLInventoryItem *item = gInventory.getItem(curr_it->first); + LL_WARNS("Avatar") << "ATT expiring request for detach " + << (item ? item->getName() : "UNKNOWN") << " item_id " << curr_it->first + << " after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds" << LL_ENDL; + mDetachRequests.erase(curr_it); + } + } +} + +// When an attachment arrives, we want to stop waiting for it, and add +// it to the set of recently arrived items. +void LLAttachmentsMgr::onAttachmentArrived(const LLUUID& inv_item_id) +{ + LLTimer timer; + bool expected = mAttachmentRequests.getTime(inv_item_id, timer); + if (!expected) + { + LLInventoryItem *item = gInventory.getItem(inv_item_id); + LL_WARNS() << "ATT Attachment was unexpected or arrived after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds: " + << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL; + } + mAttachmentRequests.removeTime(inv_item_id); + if (expected && mAttachmentRequests.empty()) + { + // mAttachmentRequests just emptied out + LL_DEBUGS("Avatar") << "ATT all active attachment requests have completed" << LL_ENDL; + } + if (mRecentlyArrivedAttachments.empty()) + { + // Start the timer for sending off a COF link batch. + mCOFLinkBatchTimer.reset(); + } + mRecentlyArrivedAttachments.insert(inv_item_id); +} + +void LLAttachmentsMgr::onDetachRequested(const LLUUID& inv_item_id) +{ + mDetachRequests.addTime(inv_item_id); +} + +void LLAttachmentsMgr::onDetachCompleted(const LLUUID& inv_item_id) +{ + LLTimer timer; + LLInventoryItem *item = gInventory.getItem(inv_item_id); + if (mDetachRequests.getTime(inv_item_id, timer)) + { + LL_DEBUGS("Avatar") << "ATT detach completed after " << timer.getElapsedTimeF32() + << " seconds for " << (item ? item->getName() : "UNKNOWN") << " " << inv_item_id << LL_ENDL; + mDetachRequests.removeTime(inv_item_id); + if (mDetachRequests.empty()) + { + LL_DEBUGS("Avatar") << "ATT all detach requests have completed" << LL_ENDL; + } + } + else + { + LL_WARNS() << "ATT unexpected detach for " + << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL; + } + + LL_DEBUGS("Avatar") << "ATT detached item flagging as questionable for COF link checking " + << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL; + mQuestionableCOFLinks.addTime(inv_item_id); +} + +// Check for attachments that are (a) linked in COF and (b) not +// attached to the avatar. This is a rotten function to have to +// include, because it runs the risk of either repeatedly spamming out +// COF link removals if they're failing for some reason, or getting +// into a tug of war with some other sequence of events that's in the +// process of adding the attachment in question. However, it's needed +// because we have no definitive source of authority for what things +// are actually supposed to be attached. Scripts, run on the server +// side, can remove an attachment without our expecting it. If this +// happens to an attachment that's just been added, then the COF link +// creation may still be in flight, and we will have to delete the +// link after it shows up. +// +// Note that we only flag items for possible link removal if they have +// been previously detached. This means that an attachment failure +// will leave the link in the COF, where it will hopefully resolve +// correctly on relog. +// +// See related: MAINT-5070, MAINT-4409 +// +void LLAttachmentsMgr::checkInvalidCOFLinks() +{ + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(), + cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH); + for (S32 i=0; i<item_array.size(); i++) + { + const LLViewerInventoryItem* inv_item = item_array.at(i).get(); + const LLUUID& item_id = inv_item->getLinkedUUID(); + if (inv_item->getType() == LLAssetType::AT_OBJECT) + { + LLTimer timer; + bool is_flagged_questionable = mQuestionableCOFLinks.getTime(item_id,timer); + bool is_wearing_attachment = isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item_id); + if (is_wearing_attachment && is_flagged_questionable) + { + LL_DEBUGS("Avatar") << "ATT was flagged questionable but is now " + << (is_wearing_attachment ? "attached " : "") + <<"removing flag after " + << timer.getElapsedTimeF32() << " item " + << inv_item->getName() << " id " << item_id << LL_ENDL; + mQuestionableCOFLinks.removeTime(item_id); + } + } + } + + for(LLItemRequestTimes::iterator it = mQuestionableCOFLinks.begin(); + it != mQuestionableCOFLinks.end(); ) + { + LLItemRequestTimes::iterator curr_it = it; + ++it; + const LLUUID& item_id = curr_it->first; + LLViewerInventoryItem *inv_item = gInventory.getItem(item_id); + if (curr_it->second.getElapsedTimeF32() > MAX_BAD_COF_TIME) + { + if (LLAppearanceMgr::instance().isLinkedInCOF(item_id)) + { + LL_DEBUGS("Avatar") << "ATT Linked in COF but not attached or requested, deleting link after " + << curr_it->second.getElapsedTimeF32() << " seconds for " + << (inv_item ? inv_item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + LLAppearanceMgr::instance().removeCOFItemLinks(item_id); + } + mQuestionableCOFLinks.erase(curr_it); + continue; + } + } +} + +void LLAttachmentsMgr::spamStatusInfo() +{ +#if 0 + static LLTimer spam_timer; + const F32 spam_frequency = 100.0F; - mPendingAttachments.clear(); + if (spam_timer.getElapsedTimeF32() > spam_frequency) + { + spam_timer.reset(); + + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(), + cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH); + for (S32 i=0; i<item_array.size(); i++) + { + const LLViewerInventoryItem* inv_item = item_array.at(i).get(); + if (inv_item->getType() == LLAssetType::AT_OBJECT) + { + LL_DEBUGS("Avatar") << "item_id: " << inv_item->getUUID() + << " linked_item_id: " << inv_item->getLinkedUUID() + << " name: " << inv_item->getName() + << " parent: " << inv_item->getParentUUID() + << LL_ENDL; + } + } + } +#endif } diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h index 1d8ab74dfd..d56d6eb27b 100755..100644 --- a/indra/newview/llattachmentsmgr.h +++ b/indra/newview/llattachmentsmgr.h @@ -32,42 +32,101 @@ class LLViewerInventoryItem; -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//-------------------------------------------------------------------------------- // LLAttachmentsMgr // -// The sole purpose of this class is to take attachment -// requests, queue them up, and send them all at once. -// This handles situations where the viewer may request -// a bunch of attachments at once in a short period of -// time, where each of the requests would normally be -// sent as a separate message versus being batched into -// one single message. -// -// The intent of this batching is to reduce viewer->server -// traffic. -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This class manages batching up of requests at two stages of +// attachment rezzing. +// +// First, attachments requested to rez get saved in +// mPendingAttachments and sent as a single +// RezMultipleAttachmentsFromInv request. This batching is needed +// mainly because of weaknessing the UI element->inventory item +// handling, such that we don't always know when we are requesting +// multiple items. Now they just pile up and get swept into a single +// request during the idle loop. +// +// Second, after attachments arrive, we need to generate COF links for +// them. There are both efficiency and UI correctness reasons why it +// is better to request all the COF links at once and run a single +// callback after they all complete. Given the vagaries of the +// attachment system, there is no guarantee that we will get all the +// attachments we ask for, but we frequently do. So in the common case +// that all the desired attachments arrive fairly quickly, we generate +// a single batched request for COF links. If attachments arrive late +// or not at all, we will still issue COF link requests once a timeout +// value has been exceeded. +// +// To handle attachments that never arrive, we forget about requests +// that exceed a timeout value. +//-------------------------------------------------------------------------------- class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr> { public: - LLAttachmentsMgr(); - virtual ~LLAttachmentsMgr(); - - void addAttachment(const LLUUID& item_id, - const U8 attachment_pt, - const BOOL add); - static void onIdle(void *); -protected: - void onIdle(); -private: + // Stores info for attachments that will be requested during idle. struct AttachmentsInfo { LLUUID mItemID; U8 mAttachmentPt; BOOL mAdd; }; + typedef std::deque<AttachmentsInfo> attachments_vec_t; + + LLAttachmentsMgr(); + virtual ~LLAttachmentsMgr(); + + void addAttachmentRequest(const LLUUID& item_id, + const U8 attachment_pt, + const BOOL add); + void onAttachmentRequested(const LLUUID& item_id); + void requestAttachments(attachments_vec_t& attachment_requests); + static void onIdle(void *); - typedef std::vector<AttachmentsInfo> attachments_vec_t; + void onAttachmentArrived(const LLUUID& inv_item_id); + + void onDetachRequested(const LLUUID& inv_item_id); + void onDetachCompleted(const LLUUID& inv_item_id); + +private: + + class LLItemRequestTimes: public std::map<LLUUID,LLTimer> + { + public: + LLItemRequestTimes(const std::string& op_name, F32 timeout); + void addTime(const LLUUID& inv_item_id); + void removeTime(const LLUUID& inv_item_id); + BOOL wasRequestedRecently(const LLUUID& item_id) const; + BOOL getTime(const LLUUID& inv_item_id, LLTimer& timer) const; + + private: + F32 mTimeout; + std::string mOpName; + }; + + void removeAttachmentRequestTime(const LLUUID& inv_item_id); + void onIdle(); + void requestPendingAttachments(); + void linkRecentlyArrivedAttachments(); + void expireOldAttachmentRequests(); + void expireOldDetachRequests(); + void checkInvalidCOFLinks(); + void spamStatusInfo(); + + // Attachments that we are planning to rez but haven't requested from the server yet. attachments_vec_t mPendingAttachments; + + // Attachments that have been requested from server but have not arrived yet. + LLItemRequestTimes mAttachmentRequests; + + // Attachments that have been requested to detach but have not gone away yet. + LLItemRequestTimes mDetachRequests; + + // Attachments that have arrived but have not been linked in the COF yet. + std::set<LLUUID> mRecentlyArrivedAttachments; + LLTimer mCOFLinkBatchTimer; + + // Attachments that are linked in the COF but may be invalid. + LLItemRequestTimes mQuestionableCOFLinks; }; #endif diff --git a/indra/newview/llaudiosourcevo.cpp b/indra/newview/llaudiosourcevo.cpp index b37aba6c15..b37aba6c15 100755..100644 --- a/indra/newview/llaudiosourcevo.cpp +++ b/indra/newview/llaudiosourcevo.cpp diff --git a/indra/newview/llaudiosourcevo.h b/indra/newview/llaudiosourcevo.h index f1d8ef4528..f1d8ef4528 100755..100644 --- a/indra/newview/llaudiosourcevo.h +++ b/indra/newview/llaudiosourcevo.h diff --git a/indra/newview/llautoreplace.cpp b/indra/newview/llautoreplace.cpp index dd9354fe3a..dd9354fe3a 100755..100644 --- a/indra/newview/llautoreplace.cpp +++ b/indra/newview/llautoreplace.cpp diff --git a/indra/newview/llautoreplace.h b/indra/newview/llautoreplace.h index 9eecc2d981..9eecc2d981 100755..100644 --- a/indra/newview/llautoreplace.h +++ b/indra/newview/llautoreplace.h diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 8dc8a2ff20..8dc8a2ff20 100755..100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index bd0ac24e93..bd0ac24e93 100755..100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 281e591b48..25a5df9781 100755..100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -311,6 +311,7 @@ bool LLAvatarIconCtrl::updateFromCache() else { LLIconCtrl::setValue(mDefaultIconName); + return false; } return true; diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 5b5720f4ac..5b5720f4ac 100755..100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 8846d1317d..8846d1317d 100755..100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 3542577ae3..3542577ae3 100755..100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 3e6c817dd6..3e6c817dd6 100755..100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 7ef35a746e..7ef35a746e 100755..100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp index 856eb3414e..856eb3414e 100755..100644 --- a/indra/newview/llavatarpropertiesprocessor.cpp +++ b/indra/newview/llavatarpropertiesprocessor.cpp diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h index 1dcd2c9b90..1dcd2c9b90 100755..100644 --- a/indra/newview/llavatarpropertiesprocessor.h +++ b/indra/newview/llavatarpropertiesprocessor.h diff --git a/indra/newview/llblockedlistitem.cpp b/indra/newview/llblockedlistitem.cpp index d9afd2b629..d9afd2b629 100755..100644 --- a/indra/newview/llblockedlistitem.cpp +++ b/indra/newview/llblockedlistitem.cpp diff --git a/indra/newview/llblockedlistitem.h b/indra/newview/llblockedlistitem.h index 05409e8a3b..05409e8a3b 100755..100644 --- a/indra/newview/llblockedlistitem.h +++ b/indra/newview/llblockedlistitem.h diff --git a/indra/newview/llblocklist.cpp b/indra/newview/llblocklist.cpp index 272a68bdf7..272a68bdf7 100755..100644 --- a/indra/newview/llblocklist.cpp +++ b/indra/newview/llblocklist.cpp diff --git a/indra/newview/llblocklist.h b/indra/newview/llblocklist.h index 0f7fa41c32..0f7fa41c32 100755..100644 --- a/indra/newview/llblocklist.h +++ b/indra/newview/llblocklist.h diff --git a/indra/newview/llbox.cpp b/indra/newview/llbox.cpp index faf82695fe..faf82695fe 100755..100644 --- a/indra/newview/llbox.cpp +++ b/indra/newview/llbox.cpp diff --git a/indra/newview/llbox.h b/indra/newview/llbox.h index ff641ad7cf..ff641ad7cf 100755..100644 --- a/indra/newview/llbox.h +++ b/indra/newview/llbox.h diff --git a/indra/newview/llbreadcrumbview.cpp b/indra/newview/llbreadcrumbview.cpp index 92310452dd..92310452dd 100755..100644 --- a/indra/newview/llbreadcrumbview.cpp +++ b/indra/newview/llbreadcrumbview.cpp diff --git a/indra/newview/llbreadcrumbview.h b/indra/newview/llbreadcrumbview.h index f1b53ab526..f1b53ab526 100755..100644 --- a/indra/newview/llbreadcrumbview.h +++ b/indra/newview/llbreadcrumbview.h diff --git a/indra/newview/llbreastmotion.cpp b/indra/newview/llbreastmotion.cpp index 3a88bab3b3..3a88bab3b3 100755..100644 --- a/indra/newview/llbreastmotion.cpp +++ b/indra/newview/llbreastmotion.cpp diff --git a/indra/newview/llbreastmotion.h b/indra/newview/llbreastmotion.h index aa0fdf9f8b..aa0fdf9f8b 100755..100644 --- a/indra/newview/llbreastmotion.h +++ b/indra/newview/llbreastmotion.h diff --git a/indra/newview/llbrowsernotification.cpp b/indra/newview/llbrowsernotification.cpp index 19747757db..19747757db 100755..100644 --- a/indra/newview/llbrowsernotification.cpp +++ b/indra/newview/llbrowsernotification.cpp diff --git a/indra/newview/llbuycurrencyhtml.cpp b/indra/newview/llbuycurrencyhtml.cpp index 1c69dadb12..1c69dadb12 100755..100644 --- a/indra/newview/llbuycurrencyhtml.cpp +++ b/indra/newview/llbuycurrencyhtml.cpp diff --git a/indra/newview/llbuycurrencyhtml.h b/indra/newview/llbuycurrencyhtml.h index 8d8857ffe3..8d8857ffe3 100755..100644 --- a/indra/newview/llbuycurrencyhtml.h +++ b/indra/newview/llbuycurrencyhtml.h diff --git a/indra/newview/llcallbacklist.cpp b/indra/newview/llcallbacklist.cpp index 59ecbdd0ea..59ecbdd0ea 100755..100644 --- a/indra/newview/llcallbacklist.cpp +++ b/indra/newview/llcallbacklist.cpp diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index b6c5496c17..f79d1aa609 100755..100644 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -97,7 +97,8 @@ static void on_avatar_name_cache_notify(const LLUUID& agent_id, LLAvatarTracker::LLAvatarTracker() : mTrackingData(NULL), mTrackedAgentValid(false), - mModifyMask(0x0) + mModifyMask(0x0), + mIsNotifyObservers(FALSE) { } @@ -272,7 +273,7 @@ S32 LLAvatarTracker::addBuddyList(const LLAvatarTracker::buddy_map_t& buds) << "]" << LL_ENDL; } } - notifyObservers(); + // do not notify observers here - list can be large so let it be done on idle. return new_buddy_count; } @@ -473,8 +474,25 @@ void LLAvatarTracker::removeObserver(LLFriendObserver* observer) mObservers.end()); } +void LLAvatarTracker::idleNotifyObservers() +{ + if (mModifyMask == LLFriendObserver::NONE && mChangedBuddyIDs.size() == 0) + { + return; + } + notifyObservers(); +} + void LLAvatarTracker::notifyObservers() { + if (mIsNotifyObservers) + { + // Don't allow multiple calls. + // new masks and ids will be processed later from idle. + return; + } + mIsNotifyObservers = TRUE; + observer_list_t observers(mObservers); observer_list_t::iterator it = observers.begin(); observer_list_t::iterator end = observers.end(); @@ -490,6 +508,7 @@ void LLAvatarTracker::notifyObservers() mModifyMask = LLFriendObserver::NONE; mChangedBuddyIDs.clear(); + mIsNotifyObservers = FALSE; } void LLAvatarTracker::addParticularFriendObserver(const LLUUID& buddy_id, LLFriendObserver* observer) @@ -531,7 +550,7 @@ void LLAvatarTracker::notifyParticularFriendObservers(const LLUUID& buddy_id) // store flag for change // and id of object change applies to void LLAvatarTracker::addChangedMask(U32 mask, const LLUUID& referent) -{ +{ mModifyMask |= mask; if (referent.notNull()) { diff --git a/indra/newview/llcallingcard.h b/indra/newview/llcallingcard.h index 6e5fc01cd8..1f819a42fd 100755..100644 --- a/indra/newview/llcallingcard.h +++ b/indra/newview/llcallingcard.h @@ -143,6 +143,7 @@ public: // observers left behind. void addObserver(LLFriendObserver* observer); void removeObserver(LLFriendObserver* observer); + void idleNotifyObservers(); void notifyObservers(); // Observers interested in updates of a particular avatar. @@ -209,6 +210,8 @@ private: LLAvatarTracker(const LLAvatarTracker&); bool operator==(const LLAvatarTracker&); + BOOL mIsNotifyObservers; + public: // don't you dare create or delete this object LLAvatarTracker(); diff --git a/indra/newview/llcapabilitylistener.cpp b/indra/newview/llcapabilitylistener.cpp index ef9b910ae5..ef9b910ae5 100755..100644 --- a/indra/newview/llcapabilitylistener.cpp +++ b/indra/newview/llcapabilitylistener.cpp diff --git a/indra/newview/llcapabilitylistener.h b/indra/newview/llcapabilitylistener.h index e7535013e7..e7535013e7 100755..100644 --- a/indra/newview/llcapabilitylistener.h +++ b/indra/newview/llcapabilitylistener.h diff --git a/indra/newview/llcapabilityprovider.h b/indra/newview/llcapabilityprovider.h index 9d91245597..9d91245597 100755..100644 --- a/indra/newview/llcapabilityprovider.h +++ b/indra/newview/llcapabilityprovider.h diff --git a/indra/newview/llcaphttpsender.cpp b/indra/newview/llcaphttpsender.cpp index b2524d14f8..b2524d14f8 100755..100644 --- a/indra/newview/llcaphttpsender.cpp +++ b/indra/newview/llcaphttpsender.cpp diff --git a/indra/newview/llcaphttpsender.h b/indra/newview/llcaphttpsender.h index e1f4c813f6..e1f4c813f6 100755..100644 --- a/indra/newview/llcaphttpsender.h +++ b/indra/newview/llcaphttpsender.h diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index b0537a83f1..d6240838b6 100755..100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -35,6 +35,7 @@ #include "llviewerwindow.h" #include "llrootview.h" #include "llsyswellwindow.h" +#include "llfloaternotificationstabbed.h" #include "llfloaterreg.h" #include <algorithm> @@ -131,7 +132,7 @@ void LLChannelManager::onLoginCompleted() S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); mStartUpChannel->init(channel_right_bound - channel_width, channel_right_bound); - mStartUpChannel->setMouseDownCallback(boost::bind(&LLNotificationWellWindow::onStartUpToastClick, LLNotificationWellWindow::getInstance(), _2, _3, _4)); + mStartUpChannel->setMouseDownCallback(boost::bind(&LLFloaterNotificationsTabbed::onStartUpToastClick, LLFloaterNotificationsTabbed::getInstance(), _2, _3, _4)); mStartUpChannel->setCommitCallback(boost::bind(&LLChannelManager::onStartUpToastClose, this)); mStartUpChannel->createStartUpToast(away_notifications, gSavedSettings.getS32("StartUpToastLifeTime")); diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h index a5de8a5327..a5de8a5327 100755..100644 --- a/indra/newview/llchannelmanager.h +++ b/indra/newview/llchannelmanager.h diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index 00fa6dd979..00fa6dd979 100755..100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp diff --git a/indra/newview/llchatbar.h b/indra/newview/llchatbar.h index 26ef5f1535..26ef5f1535 100755..100644 --- a/indra/newview/llchatbar.h +++ b/indra/newview/llchatbar.h diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f0bd63ba46..4b426081d0 100755..100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -376,6 +376,10 @@ public: || mSourceType == CHAT_SOURCE_SYSTEM) { mFrom = LLTrans::getString("SECOND_LIFE"); + if(!chat.mFromName.empty() && (mFrom != chat.mFromName)) + { + mFrom += " (" + chat.mFromName + ")"; + } user_name->setValue(mFrom); updateMinUserNameWidth(); } @@ -522,7 +526,7 @@ protected: showSystemContextMenu(x,y); if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_AGENT) showAvatarContextMenu(x,y); - if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom) + if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_OBJECT) showObjectContextMenu(x,y); } @@ -934,7 +938,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL // compact mode: show a timestamp and name if (use_plain_text_chat_history) { - square_brackets = chat.mFromName == SYSTEM_FROM; + square_brackets = chat.mSourceType == CHAT_SOURCE_SYSTEM; LLStyle::Params timestamp_style(body_message_params); diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 44736a0489..44736a0489 100755..100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index cfc62c07b6..cfc62c07b6 100755..100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h index f66670ec8c..f66670ec8c 100755..100644 --- a/indra/newview/llchatitemscontainerctrl.h +++ b/indra/newview/llchatitemscontainerctrl.h diff --git a/indra/newview/llchatmsgbox.cpp b/indra/newview/llchatmsgbox.cpp index aa6c9c094c..aa6c9c094c 100755..100644 --- a/indra/newview/llchatmsgbox.cpp +++ b/indra/newview/llchatmsgbox.cpp diff --git a/indra/newview/llchatmsgbox.h b/indra/newview/llchatmsgbox.h index 7e008dba46..7e008dba46 100755..100644 --- a/indra/newview/llchatmsgbox.h +++ b/indra/newview/llchatmsgbox.h diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 46b7679915..dedb06c945 100755..100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -35,6 +35,7 @@ #include "llscriptfloater.h" #include "llsingleton.h" #include "llsyswellwindow.h" +#include "llfloaternotificationstabbed.h" static LLDefaultChildRegistry::Register<LLChicletPanel> t1("chiclet_panel"); static LLDefaultChildRegistry::Register<LLNotificationChiclet> t2("chiclet_notification"); @@ -165,7 +166,7 @@ LLNotificationChiclet::LLNotificationChiclet(const Params& p) mNotificationChannel.reset(new ChicletNotificationChannel(this)); // ensure that notification well window exists, to synchronously // handle toast add/delete events. - LLNotificationWellWindow::getInstance()->setSysWellChiclet(this); + LLFloaterNotificationsTabbed::getInstance()->setSysWellChiclet(this); } void LLNotificationChiclet::onMenuItemClicked(const LLSD& user_data) @@ -173,7 +174,7 @@ void LLNotificationChiclet::onMenuItemClicked(const LLSD& user_data) std::string action = user_data.asString(); if("close all" == action) { - LLNotificationWellWindow::getInstance()->closeAll(); + LLFloaterNotificationsTabbed::getInstance()->closeAll(); LLIMWellWindow::getInstance()->closeAll(); } } @@ -224,7 +225,8 @@ bool LLNotificationChiclet::ChicletNotificationChannel::filterNotification( LLNo bool displayNotification; if ( (notification->getName() == "ScriptDialog") // special case for scripts // if there is no toast window for the notification, filter it - || (!LLNotificationWellWindow::getInstance()->findItemByID(notification->getID())) + //|| (!LLNotificationWellWindow::getInstance()->findItemByID(notification->getID())) + || (!LLFloaterNotificationsTabbed::getInstance()->findItemByID(notification->getID(), notification->getName())) ) { displayNotification = false; diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 9201c6bc00..9201c6bc00 100755..100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp index d8b04f7004..254e3f61a8 100755..100644 --- a/indra/newview/llchicletbar.cpp +++ b/indra/newview/llchicletbar.cpp @@ -31,6 +31,7 @@ #include "lllayoutstack.h" #include "llpaneltopinfobar.h" #include "llsyswellwindow.h" +#include "llfloaternotificationstabbed.h" namespace { @@ -49,7 +50,7 @@ BOOL LLChicletBar::postBuild() mToolbarStack = getChild<LLLayoutStack>("toolbar_stack"); mChicletPanel = getChild<LLChicletPanel>("chiclet_list"); - showWellButton("notification_well", !LLNotificationWellWindow::getInstance()->isWindowEmpty()); + showWellButton("notification_well", !LLFloaterNotificationsTabbed::getInstance()->isWindowEmpty()); LLPanelTopInfoBar::instance().setResizeCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this)); LLPanelTopInfoBar::instance().setVisibleCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this)); diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h index 956c82cb77..956c82cb77 100755..100644 --- a/indra/newview/llchicletbar.h +++ b/indra/newview/llchicletbar.h diff --git a/indra/newview/llclassifiedinfo.cpp b/indra/newview/llclassifiedinfo.cpp index 800aff149a..800aff149a 100755..100644 --- a/indra/newview/llclassifiedinfo.cpp +++ b/indra/newview/llclassifiedinfo.cpp diff --git a/indra/newview/llclassifiedinfo.h b/indra/newview/llclassifiedinfo.h index 3ff793b168..3ff793b168 100755..100644 --- a/indra/newview/llclassifiedinfo.h +++ b/indra/newview/llclassifiedinfo.h diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp index f1ef8e9a03..f1ef8e9a03 100755..100644 --- a/indra/newview/llclassifiedstatsresponder.cpp +++ b/indra/newview/llclassifiedstatsresponder.cpp diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h index efa4d82411..efa4d82411 100755..100644 --- a/indra/newview/llclassifiedstatsresponder.h +++ b/indra/newview/llclassifiedstatsresponder.h diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 8ce5aca909..307f93e28c 100755..100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -483,7 +483,7 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel const LLAssetType::EType item_type = item->getType(); if (item_type == LLAssetType::AT_CLOTHING) continue; LLPanelInventoryListItemBase* item_panel = NULL; - if (item_type == LLAssetType::AT_OBJECT) + if (item_type == LLAssetType::AT_OBJECT || item_type == LLAssetType::AT_GESTURE) { item_panel = buildAttachemntListItem(item); mAttachments->addItem(item_panel, item->getUUID(), ADD_BOTTOM, false); diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index 9957d6a64e..9957d6a64e 100755..100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index a03178adf6..a03178adf6 100755..100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp diff --git a/indra/newview/llcolorswatch.h b/indra/newview/llcolorswatch.h index 380fdccfa3..380fdccfa3 100755..100644 --- a/indra/newview/llcolorswatch.h +++ b/indra/newview/llcolorswatch.h diff --git a/indra/newview/llcommanddispatcherlistener.cpp b/indra/newview/llcommanddispatcherlistener.cpp index 586f45fd8f..586f45fd8f 100755..100644 --- a/indra/newview/llcommanddispatcherlistener.cpp +++ b/indra/newview/llcommanddispatcherlistener.cpp diff --git a/indra/newview/llcommanddispatcherlistener.h b/indra/newview/llcommanddispatcherlistener.h index 024cc1a18d..024cc1a18d 100755..100644 --- a/indra/newview/llcommanddispatcherlistener.h +++ b/indra/newview/llcommanddispatcherlistener.h diff --git a/indra/newview/llcommandhandler.cpp b/indra/newview/llcommandhandler.cpp index 19dba3f917..5ea7efc045 100755..100644 --- a/indra/newview/llcommandhandler.cpp +++ b/indra/newview/llcommandhandler.cpp @@ -30,6 +30,7 @@ #include "llcommandhandler.h" #include "llnotificationsutil.h" #include "llcommanddispatcherlistener.h" +#include "llstartup.h" #include "stringize.h" // system includes @@ -116,7 +117,11 @@ bool LLCommandHandlerRegistry::dispatch(const std::string& cmd, LL_WARNS_ONCE("SLURL") << "Blocked SLURL command from untrusted browser" << LL_ENDL; if (! slurl_blocked) { - LLNotificationsUtil::add("BlockedSLURL"); + if (LLStartUp::getStartupState() >= STATE_BROWSER_INIT) + { + // Note: commands can arrive before we initialize everything we need for Notification. + LLNotificationsUtil::add("BlockedSLURL"); + } slurl_blocked = true; } return true; @@ -138,7 +143,10 @@ bool LLCommandHandlerRegistry::dispatch(const std::string& cmd, LL_WARNS_ONCE("SLURL") << "Throttled SLURL command from untrusted browser" << LL_ENDL; if (! slurl_throttled) { - LLNotificationsUtil::add("ThrottledSLURL"); + if (LLStartUp::getStartupState() >= STATE_BROWSER_INIT) + { + LLNotificationsUtil::add("ThrottledSLURL"); + } slurl_throttled = true; } return true; diff --git a/indra/newview/llcommandhandler.h b/indra/newview/llcommandhandler.h index 1e0895565a..1e0895565a 100755..100644 --- a/indra/newview/llcommandhandler.h +++ b/indra/newview/llcommandhandler.h diff --git a/indra/newview/llcommandlineparser.cpp b/indra/newview/llcommandlineparser.cpp index 1819fc74ee..1819fc74ee 100755..100644 --- a/indra/newview/llcommandlineparser.cpp +++ b/indra/newview/llcommandlineparser.cpp diff --git a/indra/newview/llcommandlineparser.h b/indra/newview/llcommandlineparser.h index 71388b8217..71388b8217 100755..100644 --- a/indra/newview/llcommandlineparser.h +++ b/indra/newview/llcommandlineparser.h diff --git a/indra/newview/llcommunicationchannel.cpp b/indra/newview/llcommunicationchannel.cpp index cf98b56b4c..cf98b56b4c 100755..100644 --- a/indra/newview/llcommunicationchannel.cpp +++ b/indra/newview/llcommunicationchannel.cpp diff --git a/indra/newview/llcommunicationchannel.h b/indra/newview/llcommunicationchannel.h index 0d8f7f4387..0d8f7f4387 100755..100644 --- a/indra/newview/llcommunicationchannel.h +++ b/indra/newview/llcommunicationchannel.h diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index b0916d769a..d9fd4509a5 100755..100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -59,6 +59,8 @@ #include "lltrans.h" #include "llselectmgr.h" +#include "llexperienceassociationresponder.h" +#include "llexperiencecache.h" // *TODO: This should be separated into the script queue, and the floater views of that queue. // There should only be one floater class that can view any queue type @@ -70,11 +72,13 @@ struct LLScriptQueueData { LLUUID mQueueID; - std::string mScriptName; LLUUID mTaskId; - LLUUID mItemId; - LLScriptQueueData(const LLUUID& q_id, const std::string& name, const LLUUID& task_id, const LLUUID& item_id) : - mQueueID(q_id), mScriptName(name), mTaskId(task_id), mItemId(item_id) {} + LLPointer<LLInventoryItem> mItem; + LLHost mHost; + LLUUID mExperienceId; + std::string mExperiencename; + LLScriptQueueData(const LLUUID& q_id, const LLUUID& task_id, LLInventoryItem* item) : + mQueueID(q_id), mTaskId(task_id), mItem(new LLInventoryItem(item)) {} }; @@ -88,6 +92,7 @@ LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) : mDone(false), mMono(false) { + } // Destroys the object @@ -167,7 +172,7 @@ BOOL LLFloaterScriptQueue::start() getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM); - return nextObject(); + return startQueue(); } BOOL LLFloaterScriptQueue::isDone() const @@ -232,6 +237,40 @@ BOOL LLFloaterScriptQueue::popNext() return rv; } +BOOL LLFloaterScriptQueue::startQueue() +{ + return nextObject(); +} + +class CompileQueueExperienceResponder : public LLHTTPClient::Responder +{ +public: + CompileQueueExperienceResponder(const LLUUID& parent):mParent(parent) + { + } + + LLUUID mParent; + + /*virtual*/ void httpSuccess() + { + sendResult(getContent()); + } + /*virtual*/ void httpFailure() + { + sendResult(LLSD()); + } + void sendResult(const LLSD& content) + { + LLFloaterCompileQueue* queue = LLFloaterReg::findTypedInstance<LLFloaterCompileQueue>("compile_queue", mParent); + if(!queue) + return; + + queue->experienceIdsReceived(content["experience_ids"]); + } +}; + + + ///---------------------------------------------------------------------------- /// Class LLFloaterCompileQueue @@ -284,6 +323,21 @@ LLFloaterCompileQueue::~LLFloaterCompileQueue() { } +void LLFloaterCompileQueue::experienceIdsReceived( const LLSD& content ) +{ + for(LLSD::array_const_iterator it = content.beginArray(); it != content.endArray(); ++it) + { + mExperienceIds.insert(it->asUUID()); + } + nextObject(); +} + +BOOL LLFloaterCompileQueue::hasExperience( const LLUUID& id ) const +{ + return mExperienceIds.find(id) != mExperienceIds.end(); +} + + void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object, LLInventoryObject::object_list_t* inv) { @@ -324,25 +378,52 @@ void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object, { LLInventoryItem *itemp = iter->second; LLScriptQueueData* datap = new LLScriptQueueData(getKey().asUUID(), - itemp->getName(), - viewer_object->getID(), - itemp->getUUID()); - - //LL_INFOS() << "ITEM NAME 2: " << names.get(i) << LL_ENDL; - gAssetStorage->getInvItemAsset(viewer_object->getRegion()->getHost(), - gAgent.getID(), - gAgent.getSessionID(), - itemp->getPermissions().getOwner(), - viewer_object->getID(), - itemp->getUUID(), - itemp->getAssetUUID(), - itemp->getType(), - LLFloaterCompileQueue::scriptArrived, - (void*)datap); + viewer_object->getID(), itemp); + + ExperienceAssociationResponder::fetchAssociatedExperience(itemp->getParentUUID(), itemp->getUUID(), + boost::bind(LLFloaterCompileQueue::requestAsset, datap, _1)); + } + } +} + + +void LLFloaterCompileQueue::requestAsset( LLScriptQueueData* datap, const LLSD& experience ) +{ + LLFloaterCompileQueue* queue = LLFloaterReg::findTypedInstance<LLFloaterCompileQueue>("compile_queue", datap->mQueueID); + if(!queue) + { + delete datap; + return; + } + if(experience.has(LLExperienceCache::EXPERIENCE_ID)) + { + datap->mExperienceId=experience[LLExperienceCache::EXPERIENCE_ID].asUUID(); + if(!queue->hasExperience(datap->mExperienceId)) + { + std::string buffer = LLTrans::getString("CompileNoExperiencePerm", LLSD::emptyMap() + .with("SCRIPT", datap->mItem->getName()) + .with("EXPERIENCE", experience[LLExperienceCache::NAME].asString())); + + queue->getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM); + queue->removeItemByItemID(datap->mItem->getUUID()); + delete datap; + return; } } + //LL_INFOS() << "ITEM NAME 2: " << names.get(i) << LL_ENDL; + gAssetStorage->getInvItemAsset(datap->mHost, + gAgent.getID(), + gAgent.getSessionID(), + datap->mItem->getPermissions().getOwner(), + datap->mTaskId, + datap->mItem->getUUID(), + datap->mItem->getAssetUUID(), + datap->mItem->getType(), + LLFloaterCompileQueue::scriptArrived, + (void*)datap); } + // This is the callback for when each script arrives // static void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, @@ -382,12 +463,12 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, file.read(script_data, script_size); queue->mUploadQueue->queue(filename, data->mTaskId, - data->mItemId, is_running, queue->mMono, queue->getKey().asUUID(), - script_data, script_size, data->mScriptName); + data->mItem->getUUID(), is_running, queue->mMono, queue->getKey().asUUID(), + script_data, script_size, data->mItem->getName(), data->mExperienceId); } else { - buffer = LLTrans::getString("CompileQueueServiceUnavailable") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueServiceUnavailable") + (": ") + data->mItem->getName(); } } } @@ -399,7 +480,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound"); LLNotificationsUtil::add("SystemMessage", args); - buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mItem->getName(); } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { @@ -407,15 +488,15 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload"); LLNotificationsUtil::add("SystemMessage", args); - buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mItem->getName(); } else { - buffer = LLTrans::getString("CompileQueueUnknownFailure") + (" ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueUnknownFailure") + (" ") + data->mItem->getName(); } LL_WARNS() << "Problem downloading script asset." << LL_ENDL; - if(queue) queue->removeItemByItemID(data->mItemId); + if(queue) queue->removeItemByItemID(data->mItem->getUUID()); } if(queue && (buffer.size() > 0)) { @@ -564,6 +645,23 @@ void LLFloaterCompileQueue::removeItemByItemID(const LLUUID& asset_id) } } +BOOL LLFloaterCompileQueue::startQueue() +{ + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + std::string lookup_url=region->getCapability("GetCreatorExperiences"); + if(!lookup_url.empty()) + { + LLHTTPClient::get(lookup_url, new CompileQueueExperienceResponder(getKey().asUUID())); + return TRUE; + } + } + return nextObject(); +} + + + void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv) { diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h index 28f4625de8..54842bb302 100755..100644 --- a/indra/newview/llcompilequeue.h +++ b/indra/newview/llcompilequeue.h @@ -81,13 +81,15 @@ protected: // returns true if this is done BOOL isDone() const; + virtual BOOL startQueue(); + // go to the next object. If no objects left, it falls out // silently and waits to be killed by the deleteIfDone() callback. BOOL nextObject(); BOOL popNext(); void setStartString(const std::string& s) { mStartString = s; } - + protected: // UI LLScrollListCtrl* mMessages; @@ -131,6 +133,9 @@ public: LLAssetUploadQueue* getUploadQueue() { return mUploadQueue; } + void experienceIdsReceived( const LLSD& content ); + BOOL hasExperience(const LLUUID& id)const; + protected: LLFloaterCompileQueue(const LLSD& key); virtual ~LLFloaterCompileQueue(); @@ -139,16 +144,21 @@ protected: virtual void handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv); + static void requestAsset(struct LLScriptQueueData* datap, const LLSD& experience); + + // This is the callback for when each script arrives static void scriptArrived(LLVFS *vfs, const LLUUID& asset_id, LLAssetType::EType type, void* user_data, S32 status, LLExtStat ext_status); + virtual BOOL startQueue(); protected: LLViewerInventoryItem::item_array_t mCurrentScripts; private: LLAssetUploadQueue* mUploadQueue; + uuid_list_t mExperienceIds; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llconfirmationmanager.cpp b/indra/newview/llconfirmationmanager.cpp index 8ea59fdd83..8ea59fdd83 100755..100644 --- a/indra/newview/llconfirmationmanager.cpp +++ b/indra/newview/llconfirmationmanager.cpp diff --git a/indra/newview/llconfirmationmanager.h b/indra/newview/llconfirmationmanager.h index d791a8b41a..d791a8b41a 100755..100644 --- a/indra/newview/llconfirmationmanager.h +++ b/indra/newview/llconfirmationmanager.h diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index 05c7e6caa5..05c7e6caa5 100755..100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h index b38d472156..62f08144b9 100755..100644 --- a/indra/newview/llconversationlog.h +++ b/indra/newview/llconversationlog.h @@ -153,6 +153,7 @@ public: * file name is conversation.log */ std::string getFileName(); + LLConversation* findConversation(const LLIMModel::LLIMSession* session); private: @@ -184,7 +185,7 @@ private: void updateConversationName(const LLIMModel::LLIMSession* session, const std::string& name); void updateOfflineIMs(const LLIMModel::LLIMSession* session, BOOL new_messages); - LLConversation* findConversation(const LLIMModel::LLIMSession* session); + typedef std::vector<LLConversation> conversations_vec_t; std::vector<LLConversation> mConversations; diff --git a/indra/newview/llconversationloglist.cpp b/indra/newview/llconversationloglist.cpp index ffc235bdbf..ffc235bdbf 100755..100644 --- a/indra/newview/llconversationloglist.cpp +++ b/indra/newview/llconversationloglist.cpp diff --git a/indra/newview/llconversationloglist.h b/indra/newview/llconversationloglist.h index 62ec57e09e..62ec57e09e 100755..100644 --- a/indra/newview/llconversationloglist.h +++ b/indra/newview/llconversationloglist.h diff --git a/indra/newview/llconversationloglistitem.cpp b/indra/newview/llconversationloglistitem.cpp index 4e984d603b..4e984d603b 100755..100644 --- a/indra/newview/llconversationloglistitem.cpp +++ b/indra/newview/llconversationloglistitem.cpp diff --git a/indra/newview/llconversationloglistitem.h b/indra/newview/llconversationloglistitem.h index ee28456bbb..ee28456bbb 100755..100644 --- a/indra/newview/llconversationloglistitem.h +++ b/indra/newview/llconversationloglistitem.h diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index 6e32ce60ec..328a638f2f 100755..100644 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -136,7 +136,24 @@ void LLConversationItem::buildParticipantMenuOptions(menuentry_vec_t& items, U32 items.push_back(std::string("im")); items.push_back(std::string("offer_teleport")); items.push_back(std::string("request_teleport")); - items.push_back(std::string("voice_call")); + + if (getType() != CONV_SESSION_1_ON_1) + { + items.push_back(std::string("voice_call")); + } + else + { + LLVoiceChannel* voice_channel = LLIMModel::getInstance() ? LLIMModel::getInstance()->getVoiceChannel(this->getUUID()) : NULL; + if(voice_channel != LLVoiceChannel::getCurrentVoiceChannel()) + { + items.push_back(std::string("voice_call")); + } + else + { + items.push_back(std::string("disconnect_from_voice")); + } + } + items.push_back(std::string("chat_history")); items.push_back(std::string("separator_chat_history")); items.push_back(std::string("add_friend")); diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h index deff94ea16..af7b50802c 100644 --- a/indra/newview/llconversationmodel.h +++ b/indra/newview/llconversationmodel.h @@ -86,7 +86,7 @@ public: virtual void move( LLFolderViewModelItem* parent_listener ) { } virtual BOOL isItemCopyable() const { return FALSE; } virtual BOOL copyToClipboard() const { return FALSE; } - virtual BOOL cutToClipboard() const { return FALSE; } + virtual BOOL cutToClipboard() { return FALSE; } virtual BOOL isClipboardPasteable() const { return FALSE; } virtual void pasteFromClipboard() { } virtual void pasteLinkFromClipboard() { } diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index b4a1457f47..b4a1457f47 100755..100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp diff --git a/indra/newview/llcurrencyuimanager.h b/indra/newview/llcurrencyuimanager.h index 3f37db8db1..3f37db8db1 100755..100644 --- a/indra/newview/llcurrencyuimanager.h +++ b/indra/newview/llcurrencyuimanager.h diff --git a/indra/newview/llcylinder.cpp b/indra/newview/llcylinder.cpp index f353851a25..f353851a25 100755..100644 --- a/indra/newview/llcylinder.cpp +++ b/indra/newview/llcylinder.cpp diff --git a/indra/newview/llcylinder.h b/indra/newview/llcylinder.h index 4369f06659..4369f06659 100755..100644 --- a/indra/newview/llcylinder.h +++ b/indra/newview/llcylinder.h diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index c7fc45f61e..c7fc45f61e 100755..100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index f027d360f7..f027d360f7 100755..100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h diff --git a/indra/newview/lldaycyclemanager.cpp b/indra/newview/lldaycyclemanager.cpp index 803e2b2fb2..803e2b2fb2 100755..100644 --- a/indra/newview/lldaycyclemanager.cpp +++ b/indra/newview/lldaycyclemanager.cpp diff --git a/indra/newview/lldaycyclemanager.h b/indra/newview/lldaycyclemanager.h index 3d2144960d..3d2144960d 100755..100644 --- a/indra/newview/lldaycyclemanager.h +++ b/indra/newview/lldaycyclemanager.h diff --git a/indra/newview/lldebugmessagebox.cpp b/indra/newview/lldebugmessagebox.cpp index c8b9b1ac63..c8b9b1ac63 100755..100644 --- a/indra/newview/lldebugmessagebox.cpp +++ b/indra/newview/lldebugmessagebox.cpp diff --git a/indra/newview/lldebugmessagebox.h b/indra/newview/lldebugmessagebox.h index 87a0910662..87a0910662 100755..100644 --- a/indra/newview/lldebugmessagebox.h +++ b/indra/newview/lldebugmessagebox.h diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp index dc1c085c88..dc1c085c88 100755..100644 --- a/indra/newview/lldebugview.cpp +++ b/indra/newview/lldebugview.cpp diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h index a6490c876c..a6490c876c 100755..100644 --- a/indra/newview/lldebugview.h +++ b/indra/newview/lldebugview.h diff --git a/indra/newview/lldeferredsounds.cpp b/indra/newview/lldeferredsounds.cpp index e1613e4719..e1613e4719 100755..100644 --- a/indra/newview/lldeferredsounds.cpp +++ b/indra/newview/lldeferredsounds.cpp diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h index bf1eb62957..bf1eb62957 100755..100644 --- a/indra/newview/lldeferredsounds.h +++ b/indra/newview/lldeferredsounds.h diff --git a/indra/newview/lldelayedgestureerror.cpp b/indra/newview/lldelayedgestureerror.cpp index ef1b644ad4..ef1b644ad4 100755..100644 --- a/indra/newview/lldelayedgestureerror.cpp +++ b/indra/newview/lldelayedgestureerror.cpp diff --git a/indra/newview/lldelayedgestureerror.h b/indra/newview/lldelayedgestureerror.h index 7ecadb4e7d..7ecadb4e7d 100755..100644 --- a/indra/newview/lldelayedgestureerror.h +++ b/indra/newview/lldelayedgestureerror.h diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index 5c4f0f4d5d..5c4f0f4d5d 100755..100644 --- a/indra/newview/lldirpicker.cpp +++ b/indra/newview/lldirpicker.cpp diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h index 8656b23afd..8656b23afd 100755..100644 --- a/indra/newview/lldirpicker.h +++ b/indra/newview/lldirpicker.h diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp index 7c9dda6b1d..7c9dda6b1d 100755..100644 --- a/indra/newview/lldndbutton.cpp +++ b/indra/newview/lldndbutton.cpp diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h index 53ea2f5ea7..53ea2f5ea7 100755..100644 --- a/indra/newview/lldndbutton.h +++ b/indra/newview/lldndbutton.h diff --git a/indra/newview/lldonotdisturbnotificationstorage.cpp b/indra/newview/lldonotdisturbnotificationstorage.cpp index 7836e2cb94..7836e2cb94 100755..100644 --- a/indra/newview/lldonotdisturbnotificationstorage.cpp +++ b/indra/newview/lldonotdisturbnotificationstorage.cpp diff --git a/indra/newview/lldonotdisturbnotificationstorage.h b/indra/newview/lldonotdisturbnotificationstorage.h index 6e68b0d1be..6e68b0d1be 100755..100644 --- a/indra/newview/lldonotdisturbnotificationstorage.h +++ b/indra/newview/lldonotdisturbnotificationstorage.h diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index f956023358..f956023358 100755..100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index a3461d4c01..a3461d4c01 100755..100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index f74164aea6..f74164aea6 100755..100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index bc299cc89f..bc299cc89f 100755..100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 84ead0bdde..84ead0bdde 100755..100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h index d064a3a324..d064a3a324 100755..100644 --- a/indra/newview/lldrawpoolalpha.h +++ b/indra/newview/lldrawpoolalpha.h diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index e1d3d1a905..8bbc529244 100755..100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1553,7 +1553,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* (drawable && drawable->isState(LLDrawable::REBUILD_ALL))) { if (drawable && drawable->isState(LLDrawable::REBUILD_ALL)) - { //rebuild EVERY face in the drawable, not just this one, to avoid missing drawable wide rebuild issues + { + //rebuild EVERY face in the drawable, not just this one, to avoid missing drawable wide rebuild issues for (S32 i = 0; i < drawable->getNumFaces(); ++i) { LLFace* facep = drawable->getFace(i); @@ -1570,13 +1571,15 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* buffer = face->getVertexBuffer(); } else - { //just rebuild this face + { + //just rebuild this face getRiggedGeometry(face, buffer, data_mask, skin, volume, vol_face); } } if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime()) - { //perform software vertex skinning for this face + { + //perform software vertex skinning for this face LLStrider<LLVector3> position; LLStrider<LLVector3> normal; @@ -1600,6 +1603,10 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* for (U32 j = 0; j < count; ++j) { LLJoint* joint = avatar->getJoint(skin->mJointNames[j]); + if (!joint) + { + joint = avatar->getJoint("mPelvis"); + } if (joint) { mat[j] = skin->mInvBindMatrix[j]; @@ -1624,12 +1631,13 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* { F32 w = weight[j][k]; - idx[k] = llclamp((S32) floorf(w), 0, JOINT_COUNT-1); + idx[k] = llclamp((S32) floorf(w), (S32)0, (S32)JOINT_COUNT-1); wght[k] = w - floorf(w); scale += wght[k]; } - + // This is enforced in unpackVolumeFaces() + llassert(scale>0.f); wght *= 1.f/scale; for (U32 k = 0; k < 4; k++) @@ -1729,6 +1737,10 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) for (U32 i = 0; i < count; ++i) { LLJoint* joint = avatar->getJoint(skin->mJointNames[i]); + if (!joint) + { + joint = avatar->getJoint("mPelvis"); + } if (joint) { mat[i] = skin->mInvBindMatrix[i]; @@ -1797,9 +1809,12 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) if (mat) { - gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP)); - gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); + //order is important here LLRender::DIFFUSE_MAP should be last, becouse it change + //(gGL).mCurrTextureUnitIndex gGL.getTexUnit(specular_channel)->bind(face->getTexture(LLRender::SPECULAR_MAP)); + gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); + gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP), false, true); + LLColor4 col = mat->getSpecularLightColor(); F32 spec = mat->getSpecularLightExponent()/255.f; diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h index b9d2204052..b9d2204052 100755..100644 --- a/indra/newview/lldrawpoolavatar.h +++ b/indra/newview/lldrawpoolavatar.h diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 33f7bc305c..7b9fd5c6c6 100755..100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -864,6 +864,7 @@ void LLDrawPoolBump::renderDeferred(S32 pass) { LLDrawInfo& params = **i; + gDeferredBumpProgram.setMinimumAlpha(params.mAlphaMaskCutoff); LLDrawPoolBump::bindBumpMap(params, bump_channel); pushBatch(params, mask, TRUE); } diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h index 476b1d41b7..476b1d41b7 100755..100644 --- a/indra/newview/lldrawpoolbump.h +++ b/indra/newview/lldrawpoolbump.h diff --git a/indra/newview/lldrawpoolground.cpp b/indra/newview/lldrawpoolground.cpp index 59c3fbf7a1..59c3fbf7a1 100755..100644 --- a/indra/newview/lldrawpoolground.cpp +++ b/indra/newview/lldrawpoolground.cpp diff --git a/indra/newview/lldrawpoolground.h b/indra/newview/lldrawpoolground.h index a4f8a3fcf5..a4f8a3fcf5 100755..100644 --- a/indra/newview/lldrawpoolground.h +++ b/indra/newview/lldrawpoolground.h diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index bd180de6c6..bd180de6c6 100755..100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h index 608ad9e1eb..608ad9e1eb 100755..100644 --- a/indra/newview/lldrawpoolsimple.h +++ b/indra/newview/lldrawpoolsimple.h diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index bdb16abc78..bdb16abc78 100755..100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp diff --git a/indra/newview/lldrawpoolsky.h b/indra/newview/lldrawpoolsky.h index 098bd2134a..098bd2134a 100755..100644 --- a/indra/newview/lldrawpoolsky.h +++ b/indra/newview/lldrawpoolsky.h diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp index 33ce3d0111..33675bd261 100755..100644 --- a/indra/newview/lldrawpoolterrain.cpp +++ b/indra/newview/lldrawpoolterrain.cpp @@ -220,24 +220,7 @@ void LLDrawPoolTerrain::render(S32 pass) // Special-case for land ownership feedback if (gSavedSettings.getBOOL("ShowParcelOwners")) { - if (mVertexShaderLevel > 1) - { //use fullbright shader for highlighting - LLGLSLShader* old_shader = sShader; - sShader->unbind(); - sShader = &gHighlightProgram; - sShader->bind(); - gGL.diffuseColor4f(1,1,1,1); - LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(-1.0f, -1.0f); - renderOwnership(); - sShader = old_shader; - sShader->bind(); - } - else - { - gPipeline.disableLights(); - renderOwnership(); - } + hilightParcelOwners(); } } @@ -265,7 +248,15 @@ void LLDrawPoolTerrain::renderDeferred(S32 pass) { return; } + renderFullShader(); + + // Special-case for land ownership feedback + if (gSavedSettings.getBOOL("ShowParcelOwners")) + { + hilightParcelOwners(); + } + } void LLDrawPoolTerrain::beginShadowPass(S32 pass) @@ -454,6 +445,28 @@ void LLDrawPoolTerrain::renderFullShader() gGL.matrixMode(LLRender::MM_MODELVIEW); } +void LLDrawPoolTerrain::hilightParcelOwners() +{ + if (mVertexShaderLevel > 1) + { //use fullbright shader for highlighting + LLGLSLShader* old_shader = sShader; + sShader->unbind(); + sShader = &gHighlightProgram; + sShader->bind(); + gGL.diffuseColor4f(1, 1, 1, 1); + LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(-1.0f, -1.0f); + renderOwnership(); + sShader = old_shader; + sShader->bind(); + } + else + { + gPipeline.disableLights(); + renderOwnership(); + } +} + void LLDrawPoolTerrain::renderFull4TU() { // Hack! Get the region that this draw pool is rendering from! diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h index 2163d087e1..55f75e2644 100755..100644 --- a/indra/newview/lldrawpoolterrain.h +++ b/indra/newview/lldrawpoolterrain.h @@ -76,6 +76,7 @@ public: static S32 sDetailMode; static F32 sDetailScale; // meters per texture + protected: void renderSimple(); void renderOwnership(); @@ -84,6 +85,9 @@ protected: void renderFull4TU(); void renderFullShader(); void drawLoop(); + +private: + void hilightParcelOwners(); }; #endif // LL_LLDRAWPOOLSIMPLE_H diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp index b1f40781f7..b1f40781f7 100755..100644 --- a/indra/newview/lldrawpooltree.cpp +++ b/indra/newview/lldrawpooltree.cpp diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h index e7e25453cf..e7e25453cf 100755..100644 --- a/indra/newview/lldrawpooltree.h +++ b/indra/newview/lldrawpooltree.h diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index df06ad31e6..df06ad31e6 100755..100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h index aeeba179d6..aeeba179d6 100755..100644 --- a/indra/newview/lldrawpoolwater.h +++ b/indra/newview/lldrawpoolwater.h diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 309f535c39..309f535c39 100755..100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h index cd15c991ee..cd15c991ee 100755..100644 --- a/indra/newview/lldrawpoolwlsky.h +++ b/indra/newview/lldrawpoolwlsky.h diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index fa9a0712fa..fa9a0712fa 100755..100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h index f3f57c9a6b..f3f57c9a6b 100755..100644 --- a/indra/newview/lldynamictexture.h +++ b/indra/newview/lldynamictexture.h diff --git a/indra/newview/llemote.cpp b/indra/newview/llemote.cpp index b9ef297c00..b9ef297c00 100755..100644 --- a/indra/newview/llemote.cpp +++ b/indra/newview/llemote.cpp diff --git a/indra/newview/llemote.h b/indra/newview/llemote.h index 4c516998dc..4c516998dc 100755..100644 --- a/indra/newview/llemote.h +++ b/indra/newview/llemote.h diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp index a626ad1bff..a626ad1bff 100755..100644 --- a/indra/newview/llenvmanager.cpp +++ b/indra/newview/llenvmanager.cpp diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h index c7877303fc..c7877303fc 100755..100644 --- a/indra/newview/llenvmanager.h +++ b/indra/newview/llenvmanager.h diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp index 78d619a315..78d619a315 100755..100644 --- a/indra/newview/llestateinfomodel.cpp +++ b/indra/newview/llestateinfomodel.cpp diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h index 538f2f7c75..538f2f7c75 100755..100644 --- a/indra/newview/llestateinfomodel.h +++ b/indra/newview/llestateinfomodel.h diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index e3c17f9877..e3c17f9877 100755..100644 --- a/indra/newview/lleventnotifier.cpp +++ b/indra/newview/lleventnotifier.cpp diff --git a/indra/newview/lleventnotifier.h b/indra/newview/lleventnotifier.h index 3fee46c2f6..3fee46c2f6 100755..100644 --- a/indra/newview/lleventnotifier.h +++ b/indra/newview/lleventnotifier.h diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 4de6ad4d2f..4de6ad4d2f 100755..100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp diff --git a/indra/newview/lleventpoll.h b/indra/newview/lleventpoll.h index e8d98062aa..e8d98062aa 100755..100644 --- a/indra/newview/lleventpoll.h +++ b/indra/newview/lleventpoll.h diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index a50184460b..61b5748201 100755..100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -116,7 +116,7 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p) mExpanderVisible(false) { setIsChrome(TRUE); - + setMaxTextLength(p.max_text_length); } void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -237,6 +237,7 @@ LLExpandableTextBox::LLExpandableTextBox(const Params& p) LLTextBoxEx::Params textbox_params = p.textbox; textbox_params.rect(rc); mTextBox = LLUICtrlFactory::create<LLTextBoxEx>(textbox_params); + mTextBox->setContentTrusted(false); mScroll->addChild(mTextBox); updateTextBoxRect(); @@ -260,6 +261,11 @@ void LLExpandableTextBox::draw() LLUICtrl::draw(); } +void LLExpandableTextBox::setContentTrusted(bool trusted_content) +{ + mTextBox->setContentTrusted(trusted_content); +} + void LLExpandableTextBox::collapseIfPosChanged() { if(mExpanded) diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index 399e48bea2..90d46ab262 100755..100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -103,7 +103,7 @@ public: Optional<LLScrollContainer::Params> scroll; Optional<S32> max_height; - + Optional<bool> bg_visible, expanded_bg_visible; @@ -194,6 +194,8 @@ protected: */ virtual S32 recalculateTextDelta(S32 text_delta); + void setContentTrusted(bool trusted_content); + protected: std::string mText; diff --git a/indra/newview/llexperienceassociationresponder.cpp b/indra/newview/llexperienceassociationresponder.cpp new file mode 100644 index 0000000000..f62ca7d75f --- /dev/null +++ b/indra/newview/llexperienceassociationresponder.cpp @@ -0,0 +1,116 @@ +/** + * @file llexperienceassociationresponder.cpp + * @brief llexperienceassociationresponder implementation. This class combines + * a lookup for a script association and an experience details request. The first + * is always async, but the second may be cached locally. + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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" +#include "llexperienceassociationresponder.h" +#include "llexperiencecache.h" +#include "llviewerobjectlist.h" +#include "llviewerregion.h" +#include "llagent.h" + +ExperienceAssociationResponder::ExperienceAssociationResponder(ExperienceAssociationResponder::callback_t callback):mCallback(callback) +{ + ref(); +} + +void ExperienceAssociationResponder::fetchAssociatedExperience( const LLUUID& object_id, const LLUUID& item_id, callback_t callback ) +{ + LLSD request; + request["object-id"]=object_id; + request["item-id"]=item_id; + fetchAssociatedExperience(request, callback); +} + +void ExperienceAssociationResponder::fetchAssociatedExperience(LLSD& request, callback_t callback) +{ + LLViewerObject* object = gObjectList.findObject(request["object-id"]); + if (!object) + { + LL_DEBUGS() << "Object with ID " << request["object-id"] << " not found via gObjectList.findObject() in fetchAssociatedExperience" << LL_ENDL; + LL_DEBUGS() << "Using gAgent.getRegion() instead of object->getRegion()" << LL_ENDL; + } + LLViewerRegion* region = NULL; + if (object) + { + region = object->getRegion(); + } + else + { + region = gAgent.getRegion(); + } + if (region) + { + std::string lookup_url=region->getCapability("GetMetadata"); + if(!lookup_url.empty()) + { + LLSD fields; + fields.append("experience"); + request["fields"] = fields; + LLHTTPClient::post(lookup_url, request, new ExperienceAssociationResponder(callback)); + } + } + else + { + LL_WARNS() << "Failed to lookup region in fetchAssociatedExperience. Fetch request not sent." << LL_ENDL; + } +} + +void ExperienceAssociationResponder::httpFailure() +{ + LLSD msg; + msg["error"]=(LLSD::Integer)getStatus(); + msg["message"]=getReason(); + LL_INFOS("ExperienceAssociation") << "Failed to look up associated experience: " << getStatus() << ": " << getReason() << LL_ENDL; + + sendResult(msg); + +} +void ExperienceAssociationResponder::httpSuccess() +{ + if(!getContent().has("experience")) + { + + LLSD msg; + msg["message"]="no experience"; + msg["error"]=-1; + sendResult(msg); + return; + } + + LLExperienceCache::get(getContent()["experience"].asUUID(), boost::bind(&ExperienceAssociationResponder::sendResult, this, _1)); + +} + +void ExperienceAssociationResponder::sendResult( const LLSD& experience ) +{ + mCallback(experience); + unref(); +} + + + diff --git a/indra/newview/llexperienceassociationresponder.h b/indra/newview/llexperienceassociationresponder.h new file mode 100644 index 0000000000..2bdc3d251b --- /dev/null +++ b/indra/newview/llexperienceassociationresponder.h @@ -0,0 +1,58 @@ +#include "llhttpclient.h" +#include "llsd.h" +/** + * @file llexperienceassociationresponder.h + * @brief llexperienceassociationresponder and related class definitions + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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_LLEXPERIENCEASSOCIATIONRESPONDER_H +#define LL_LLEXPERIENCEASSOCIATIONRESPONDER_H + +#include "llhttpclient.h" +#include "llsd.h" + +class ExperienceAssociationResponder : public LLHTTPClient::Responder +{ +public: + typedef boost::function<void(const LLSD& experience)> callback_t; + + ExperienceAssociationResponder(callback_t callback); + + /*virtual*/ void httpSuccess(); + /*virtual*/ void httpFailure(); + + static void fetchAssociatedExperience(const LLUUID& object_it, const LLUUID& item_id, callback_t callback); + +private: + static void fetchAssociatedExperience(LLSD& request, callback_t callback); + + void sendResult(const LLSD& experience); + + callback_t mCallback; + +}; + +#endif // LL_LLEXPERIENCEASSOCIATIONRESPONDER_H diff --git a/indra/newview/llexperiencelog.cpp b/indra/newview/llexperiencelog.cpp new file mode 100644 index 0000000000..ee5d561927 --- /dev/null +++ b/indra/newview/llexperiencelog.cpp @@ -0,0 +1,288 @@ +/** + * @file llexperiencelog.cpp + * @brief llexperiencelog implementation + * + * $LicenseInfo:firstyear=2014&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, 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" +#include "llexperiencelog.h" + +#include "lldispatcher.h" +#include "llsdserialize.h" +#include "llviewergenericmessage.h" +#include "llnotificationsutil.h" +#include "lltrans.h" +#include "llerror.h" +#include "lldate.h" + + +class LLExperienceLogDispatchHandler : public LLDispatchHandler +{ +public: + virtual bool operator()( + const LLDispatcher* dispatcher, + const std::string& key, + const LLUUID& invoice, + const sparam_t& strings) + { + LLSD message; + + sparam_t::const_iterator it = strings.begin(); + if(it != strings.end()){ + const std::string& llsdRaw = *it++; + std::istringstream llsdData(llsdRaw); + if (!LLSDSerialize::deserialize(message, llsdData, llsdRaw.length())) + { + LL_WARNS() << "LLExperienceLogDispatchHandler: Attempted to read parameter data into LLSD but failed:" << llsdRaw << LL_ENDL; + } + } + message["public_id"] = invoice; + + // Object Name + if(it != strings.end()) + { + message["ObjectName"] = *it++; + } + + // parcel Name + if(it != strings.end()) + { + message["ParcelName"] = *it++; + } + message["Count"] = 1; + + LLExperienceLog::instance().handleExperienceMessage(message); + return true; + } +}; + +static LLExperienceLogDispatchHandler experience_log_dispatch_handler; + +void LLExperienceLog::handleExperienceMessage(LLSD& message) +{ + time_t now; + time(&now); + char daybuf[16];/* Flawfinder: ignore */ + char time_of_day[16];/* Flawfinder: ignore */ + strftime(daybuf, 16, "%Y-%m-%d", localtime(&now)); + strftime(time_of_day, 16, " %H:%M:%S", localtime(&now)); + message["Time"] = time_of_day; + + std::string day = daybuf; + + if(!mEvents.has(day)) + { + mEvents[day] = LLSD::emptyArray(); + } + LLSD& dayEvents = mEvents[day]; + if(dayEvents.size() > 0) + { + LLSD& last = *(dayEvents.rbeginArray()); + if( last["public_id"].asUUID() == message["public_id"].asUUID() + && last["ObjectName"].asString() == message["ObjectName"].asString() + && last["OwnerID"].asUUID() == message["OwnerID"].asUUID() + && last["ParcelName"].asString() == message["ParcelName"].asString() + && last["Permission"].asInteger() == message["Permission"].asInteger()) + { + last["Count"] = last["Count"].asInteger() + 1; + last["Time"] = time_of_day; + mSignals(last); + return; + } + } + message["Time"] = time_of_day; + mEvents[day].append(message); + mEventsToSave[day].append(message); + mSignals(message); +} + +LLExperienceLog::LLExperienceLog() + : mMaxDays(7) + , mPageSize(25) + , mNotifyNewEvent(false) +{ +} + +void LLExperienceLog::initialize() +{ + loadEvents(); + if(!gGenericDispatcher.isHandlerPresent("ExperienceEvent")) + { + gGenericDispatcher.addHandler("ExperienceEvent", &experience_log_dispatch_handler); + } +} + +std::string LLExperienceLog::getFilename() +{ + return gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "experience_events.xml"); +} + + +std::string LLExperienceLog::getPermissionString( const LLSD& message, const std::string& base ) +{ + std::ostringstream buf; + if(message.has("Permission")) + { + buf << base << message["Permission"].asInteger(); + std::string entry; + if(LLTrans::findString(entry, buf.str())) + { + buf.str(entry); + } + else + { + buf.str(); + } + } + + if(buf.str().empty()) + { + buf << base << "Unknown"; + + buf.str(LLTrans::getString(buf.str(), message)); + } + + return buf.str(); +} + +void LLExperienceLog::notify( LLSD& message ) +{ + message["EventType"] = getPermissionString(message, "ExperiencePermission"); + if(message.has("IsAttachment") && message["IsAttachment"].asBoolean()) + { + LLNotificationsUtil::add("ExperienceEventAttachment", message); + } + else + { + LLNotificationsUtil::add("ExperienceEvent", message); + } + message.erase("EventType"); +} + +void LLExperienceLog::saveEvents() +{ + std::string filename = getFilename(); + LLSD settings = LLSD::emptyMap().with("Events", mEventsToSave); + + settings["MaxDays"] = (int)mMaxDays; + settings["Notify"] = mNotifyNewEvent; + settings["PageSize"] = (int)mPageSize; + + llofstream stream(filename.c_str()); + LLSDSerialize::toPrettyXML(settings, stream); +} + + +void LLExperienceLog::loadEvents() +{ + LLSD settings = LLSD::emptyMap(); + + std::string filename = getFilename(); + llifstream stream(filename.c_str()); + LLSDSerialize::fromXMLDocument(settings, stream); + + if(settings.has("MaxDays")) + { + setMaxDays((U32)settings["MaxDays"].asInteger()); + } + if(settings.has("Notify")) + { + setNotifyNewEvent(settings["Notify"].asBoolean()); + } + if(settings.has("PageSize")) + { + setPageSize((U32)settings["PageSize"].asInteger()); + } + mEvents.clear(); + if(mMaxDays > 0 && settings.has("Events")) + { + mEvents = settings["Events"]; + mEventsToSave = mEvents; + } +} + +LLExperienceLog::~LLExperienceLog() +{ + saveEvents(); +} + +void LLExperienceLog::eraseExpired() +{ + while(mEvents.size() > mMaxDays && mMaxDays > 0) + { + mEvents.erase(mEvents.beginMap()->first); + } +} + +bool LLExperienceLog::isNotExpired(std::string& date) +{ + LLDate event_date; + S32 month, day, year; + S32 matched = sscanf(date.c_str(), "%d-%d-%d", &year, &month, &day); + if (matched != 3) return false; + event_date.fromYMDHMS(year, month, day); + const U32 seconds_in_day = 24 * 60 * 60; + S32 curr_year = 0, curr_month = 0, curr_day = 0; + + + LLDate curr_date = LLDate::now(); + curr_date.split(&curr_year, &curr_month, &curr_day); + curr_date.fromYMDHMS(curr_year, curr_month, curr_day); // Set hour, min, and sec to 0 + + LLDate boundary_date = LLDate(curr_date.secondsSinceEpoch() - seconds_in_day*getMaxDays()); + return event_date >= boundary_date; + +} + +const LLSD& LLExperienceLog::getEvents() const +{ + return mEvents; +} + +void LLExperienceLog::clear() +{ + mEvents.clear(); +} + +void LLExperienceLog::setMaxDays( U32 val ) +{ + mMaxDays = val; +} + +LLExperienceLog::callback_connection_t LLExperienceLog::addUpdateSignal( const callback_slot_t& cb ) +{ + return mSignals.connect(cb); +} + +void LLExperienceLog::setNotifyNewEvent( bool val ) +{ + mNotifyNewEvent = val; + if(!val && mNotifyConnection.connected()) + { + mNotifyConnection.disconnect(); + } + else if( val && !mNotifyConnection.connected()) + { + mNotifyConnection = addUpdateSignal(boost::function<void(LLSD&)>(LLExperienceLog::notify)); + } +} diff --git a/indra/newview/llexperiencelog.h b/indra/newview/llexperiencelog.h new file mode 100644 index 0000000000..ac227db336 --- /dev/null +++ b/indra/newview/llexperiencelog.h @@ -0,0 +1,90 @@ +/** + * @file llexperiencelog.h + * @brief llexperiencelog and related class definitions + * + * $LicenseInfo:firstyear=2014&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, 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_LLEXPERIENCELOG_H +#define LL_LLEXPERIENCELOG_H + +#include "llsingleton.h" + +class LLExperienceLog : public LLSingleton<LLExperienceLog> +{ +public: + typedef boost::signals2::signal<void(LLSD&)> + callback_signal_t; + typedef callback_signal_t::slot_type callback_slot_t; + typedef boost::signals2::connection callback_connection_t; + callback_connection_t addUpdateSignal(const callback_slot_t& cb); + + void initialize(); + + U32 getMaxDays() const { return mMaxDays; } + void setMaxDays(U32 val); + + bool getNotifyNewEvent() const { return mNotifyNewEvent; } + void setNotifyNewEvent(bool val); + + U32 getPageSize() const { return mPageSize; } + void setPageSize(U32 val) { mPageSize = val; } + + const LLSD& getEvents()const; + void clear(); + + virtual ~LLExperienceLog(); + + static void notify(LLSD& message); + static std::string getFilename(); + static std::string getPermissionString(const LLSD& message, const std::string& base); + void setEventsToSave(LLSD new_events){mEventsToSave = new_events; } + bool isNotExpired(std::string& date); +protected: + LLExperienceLog(); + void handleExperienceMessage(LLSD& message); + + + void loadEvents(); + void saveEvents(); + void eraseExpired(); + + + + LLSD mEvents; + LLSD mEventsToSave; + callback_signal_t mSignals; + callback_connection_t mNotifyConnection; + U32 mMaxDays; + U32 mPageSize; + bool mNotifyNewEvent; + + friend class LLExperienceLogDispatchHandler; + friend class LLSingleton<LLExperienceLog>; +}; + + + + +#endif // LL_LLEXPERIENCELOG_H diff --git a/indra/newview/llexternaleditor.cpp b/indra/newview/llexternaleditor.cpp index df9c848cb8..df9c848cb8 100755..100644 --- a/indra/newview/llexternaleditor.cpp +++ b/indra/newview/llexternaleditor.cpp diff --git a/indra/newview/llexternaleditor.h b/indra/newview/llexternaleditor.h index fd2c25020c..fd2c25020c 100755..100644 --- a/indra/newview/llexternaleditor.h +++ b/indra/newview/llexternaleditor.h diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index de349a03d4..de349a03d4 100755..100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp diff --git a/indra/newview/llface.h b/indra/newview/llface.h index ee545acb94..ee545acb94 100755..100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h diff --git a/indra/newview/llface.inl b/indra/newview/llface.inl index c37b77d2cd..c37b77d2cd 100755..100644 --- a/indra/newview/llface.inl +++ b/indra/newview/llface.inl diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp index 28319564e4..28319564e4 100755..100644 --- a/indra/newview/llfacebookconnect.cpp +++ b/indra/newview/llfacebookconnect.cpp diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 4a059fdc67..4a059fdc67 100755..100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h index 3e30bd86ba..3e30bd86ba 100755..100644 --- a/indra/newview/llfasttimerview.h +++ b/indra/newview/llfasttimerview.h diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index fc9e85caf8..b779d8f461 100755..100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -380,9 +380,11 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p) mShowDragMarker(FALSE), mLandingTab(NULL), mLastTab(NULL), - mTabsHighlightEnabled(TRUE) - , mUpdateDropDownItems(true) -, mRestoreOverflowMenu(false) + mTabsHighlightEnabled(TRUE), + mUpdateDropDownItems(true), + mRestoreOverflowMenu(false), + mGetPrevItems(true), + mItemsChangedTimer() { // Register callback for menus with current registrar (will be parent panel's registrar) LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Favorites.DoToSelected", @@ -653,12 +655,22 @@ void LLFavoritesBarCtrl::changed(U32 mask) LLInventoryModel::cat_array_t cats; LLIsType is_type(LLAssetType::AT_LANDMARK); gInventory.collectDescendentsIf(mFavoriteFolderId, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); - + for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) { LLFavoritesOrderStorage::instance().getSLURL((*i)->getAssetUUID()); } + updateButtons(); + if (!mItemsChangedTimer.getStarted()) + { + mItemsChangedTimer.start(); + } + else + { + mItemsChangedTimer.reset(); + } + } } @@ -693,6 +705,21 @@ void LLFavoritesBarCtrl::draw() // Once drawn, mark this false so we won't draw it again (unless we hit the favorite bar again) mShowDragMarker = FALSE; } + if (mItemsChangedTimer.getStarted()) + { + if (mItemsChangedTimer.getElapsedTimeF32() > 1.f) + { + LLFavoritesOrderStorage::instance().saveFavoritesRecord(); + mItemsChangedTimer.stop(); + } + } + + if(!mItemsChangedTimer.getStarted() && LLFavoritesOrderStorage::instance().mUpdateRequired) + { + LLFavoritesOrderStorage::instance().mUpdateRequired = false; + mItemsChangedTimer.start(); + } + } const LLButton::Params& LLFavoritesBarCtrl::getButtonParams() @@ -723,6 +750,16 @@ void LLFavoritesBarCtrl::updateButtons() return; } + if(mGetPrevItems) + { + for (LLInventoryModel::item_array_t::iterator it = mItems.begin(); it != mItems.end(); it++) + { + LLFavoritesOrderStorage::instance().mFavoriteNames[(*it)->getUUID()]= (*it)->getName(); + } + LLFavoritesOrderStorage::instance().mPrevFavorites = mItems; + mGetPrevItems = false; + } + const LLButton::Params& button_params = getButtonParams(); if(mItems.empty()) @@ -746,7 +783,7 @@ void LLFavoritesBarCtrl::updateButtons() const LLViewerInventoryItem *item = mItems[first_changed_item_index].get(); if (item) { - // an child's order and mItems should be same + // an child's order and mItems should be same if (button->getLandmarkId() != item->getUUID() // sort order has been changed || button->getLabelSelected() != item->getName() // favorite's name has been changed || button->getRect().mRight < rightest_point) // favbar's width has been changed @@ -844,6 +881,7 @@ void LLFavoritesBarCtrl::updateButtons() { mUpdateDropDownItems = false; } + } LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem> item, const LLButton::Params& button_params, S32 x_offset) @@ -912,9 +950,11 @@ BOOL LLFavoritesBarCtrl::postBuild() BOOL LLFavoritesBarCtrl::collectFavoriteItems(LLInventoryModel::item_array_t &items) { + if (mFavoriteFolderId.isNull()) return FALSE; + LLInventoryModel::cat_array_t cats; LLIsType is_type(LLAssetType::AT_LANDMARK); @@ -1411,6 +1451,7 @@ void LLFavoritesBarCtrl::insertItem(LLInventoryModel::item_array_t& items, const const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml"; const S32 LLFavoritesOrderStorage::NO_INDEX = -1; +bool LLFavoritesOrderStorage::mSaveOnExit = false; void LLFavoritesOrderStorage::setSortIndex(const LLViewerInventoryItem* inv_item, S32 sort_index) { @@ -1447,6 +1488,7 @@ void LLFavoritesOrderStorage::getSLURL(const LLUUID& asset_id) LL_DEBUGS("FavoritesBar") << "landmark for " << asset_id << " already loaded" << LL_ENDL; onLandmarkLoaded(asset_id, lm); } + return; } // static @@ -1482,13 +1524,16 @@ void LLFavoritesOrderStorage::destroyClass() LLFile::remove(old_filename); } - if (gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin")) - { - LLFavoritesOrderStorage::instance().saveFavoritesSLURLs(); - } - else + std::string filename = getSavedOrderFileName(); + file.open(filename.c_str()); + if (file.is_open()) { - LLFavoritesOrderStorage::instance().removeFavoritesRecordOfUser(); + file.close(); + LLFile::remove(filename); + if(mSaveOnExit) + { + LLFavoritesOrderStorage::instance().saveFavoritesRecord(true); + } } } @@ -1503,108 +1548,57 @@ std::string LLFavoritesOrderStorage::getSavedOrderFileName() void LLFavoritesOrderStorage::load() { - // load per-resident sorting information std::string filename = getSavedOrderFileName(); - LLSD settings_llsd; llifstream file; file.open(filename.c_str()); if (file.is_open()) { LLSDSerialize::fromXML(settings_llsd, file); - LL_INFOS("FavoritesBar") << "loaded favorites order from '" << filename << "' " - << (settings_llsd.isMap() ? "" : "un") << "successfully" - << LL_ENDL; - file.close(); - } - else - { - LL_WARNS("FavoritesBar") << "unable to open favorites order file at '" << filename << "'" << LL_ENDL; - } - - for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); - iter != settings_llsd.endMap(); ++iter) - { - mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); + LL_INFOS("FavoritesBar") << "loaded favorites order from '" << filename << "' " + << (settings_llsd.isMap() ? "" : "un") << "successfully" + << LL_ENDL; + file.close(); + mSaveOnExit = true; + + for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); + iter != settings_llsd.endMap(); ++iter) + { + mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); + } } -} - -void LLFavoritesOrderStorage::saveFavoritesSLURLs() -{ - // Do not change the file if we are not logged in yet. - if (!LLLoginInstance::getInstance()->authSuccess()) + else { - LL_WARNS("FavoritesBar") << "Cannot save favorites: not logged in" << LL_ENDL; - return; + filename = getStoredFavoritesFilename(); + if (!filename.empty()) + { + llifstream in_file; + in_file.open(filename.c_str()); + LLSD fav_llsd; + LLSD user_llsd; + if (in_file.is_open()) + { + LLSDSerialize::fromXML(fav_llsd, in_file); + LL_INFOS("FavoritesBar") << "loaded favorites from '" << filename << "' " + << (fav_llsd.isMap() ? "" : "un") << "successfully" + << LL_ENDL; + in_file.close(); + user_llsd = fav_llsd[gAgentUsername]; + + S32 index = 0; + for (LLSD::array_iterator iter = user_llsd.beginArray(); + iter != user_llsd.endArray(); ++iter) + { + mSortIndexes.insert(std::make_pair(iter->get("id").asUUID(), index)); + index++; + } + } + else + { + LL_WARNS("FavoritesBar") << "unable to open favorites from '" << filename << "'" << LL_ENDL; + } + } } - - std::string filename = getStoredFavoritesFilename(); - if (!filename.empty()) - { - llifstream in_file; - in_file.open(filename.c_str()); - LLSD fav_llsd; - if (in_file.is_open()) - { - LLSDSerialize::fromXML(fav_llsd, in_file); - LL_INFOS("FavoritesBar") << "loaded favorites from '" << filename << "' " - << (fav_llsd.isMap() ? "" : "un") << "successfully" - << LL_ENDL; - in_file.close(); - } - else - { - LL_WARNS("FavoritesBar") << "unable to open favorites from '" << filename << "'" << LL_ENDL; - } - - const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); - LLInventoryModel::cat_array_t cats; - LLInventoryModel::item_array_t items; - gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); - - LLSD user_llsd; - for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); it++) - { - LLSD value; - value["name"] = (*it)->getName(); - value["asset_id"] = (*it)->getAssetUUID(); - - slurls_map_t::iterator slurl_iter = mSLURLs.find(value["asset_id"]); - if (slurl_iter != mSLURLs.end()) - { - LL_DEBUGS("FavoritesBar") << "Saving favorite: idx=" << LLFavoritesOrderStorage::instance().getSortIndex((*it)->getUUID()) << ", SLURL=" << slurl_iter->second << ", value=" << value << LL_ENDL; - value["slurl"] = slurl_iter->second; - user_llsd[LLFavoritesOrderStorage::instance().getSortIndex((*it)->getUUID())] = value; - } - else - { - LL_WARNS("FavoritesBar") << "Not saving favorite " << value["name"] << ": no matching SLURL" << LL_ENDL; - } - } - - LLAvatarName av_name; - LLAvatarNameCache::get( gAgentID, &av_name ); - // Note : use the "John Doe" and not the "john.doe" version of the name - // as we'll compare it with the stored credentials in the login panel. - fav_llsd[av_name.getUserName()] = user_llsd; - - llofstream file; - file.open(filename.c_str()); - if ( file.is_open() ) - { - LLSDSerialize::toPrettyXML(fav_llsd, file); - LL_INFOS("FavoritesBar") << "saved favorites for '" << av_name.getUserName() - << "' to '" << filename << "' " - << LL_ENDL; - file.close(); - } - else - { - LL_WARNS("FavoritesBar") << "unable to open favorites storage for '" << av_name.getUserName() - << "' at '" << filename << "' " - << LL_ENDL; - } - } } void LLFavoritesOrderStorage::removeFavoritesRecordOfUser() @@ -1626,8 +1620,30 @@ void LLFavoritesOrderStorage::removeFavoritesRecordOfUser() // See saveFavoritesSLURLs() here above for the reason why. if (fav_llsd.has(av_name.getUserName())) { - LL_INFOS("FavoritesBar") << "Removed favorites for " << av_name.getUserName() << LL_ENDL; - fav_llsd.erase(av_name.getUserName()); + LLSD user_llsd = fav_llsd[av_name.getUserName()]; + + if ((user_llsd.beginArray()!= user_llsd.endArray()) && user_llsd.beginArray()->has("id")) + { + for (LLSD::array_iterator iter = user_llsd.beginArray();iter != user_llsd.endArray(); ++iter) + { + LLSD value; + value["id"]= iter->get("id").asUUID(); + iter->assign(value); + } + fav_llsd[av_name.getUserName()] = user_llsd; + llofstream file; + file.open(filename.c_str()); + if ( file.is_open() ) + { + LLSDSerialize::toPrettyXML(fav_llsd, file); + file.close(); + } + } + else + { + LL_INFOS("FavoritesBar") << "Removed favorites for " << av_name.getUserName() << LL_ENDL; + fav_llsd.erase(av_name.getUserName()); + } } llofstream out_file; @@ -1648,20 +1664,20 @@ void LLFavoritesOrderStorage::onLandmarkLoaded(const LLUUID& asset_id, LLLandmar if (landmark) { LL_DEBUGS("FavoritesBar") << "landmark for " << asset_id << " loaded" << LL_ENDL; - LLVector3d pos_global; - if (!landmark->getGlobalPos(pos_global)) - { - // If global position was unknown on first getGlobalPos() call - // it should be set for the subsequent calls. - landmark->getGlobalPos(pos_global); - } + LLVector3d pos_global; + if (!landmark->getGlobalPos(pos_global)) + { + // If global position was unknown on first getGlobalPos() call + // it should be set for the subsequent calls. + landmark->getGlobalPos(pos_global); + } - if (!pos_global.isExactlyZero()) - { - LL_DEBUGS("FavoritesBar") << "requesting slurl for landmark " << asset_id << LL_ENDL; - LLLandmarkActions::getSLURLfromPosGlobal(pos_global, + if (!pos_global.isExactlyZero()) + { + LL_DEBUGS("FavoritesBar") << "requesting slurl for landmark " << asset_id << LL_ENDL; + LLLandmarkActions::getSLURLfromPosGlobal(pos_global, boost::bind(&LLFavoritesOrderStorage::storeFavoriteSLURL, this, asset_id, _1)); - } + } } } @@ -1671,41 +1687,6 @@ void LLFavoritesOrderStorage::storeFavoriteSLURL(const LLUUID& asset_id, std::st mSLURLs[asset_id] = slurl; } -void LLFavoritesOrderStorage::save() -{ - if (mIsDirty) - { - // something changed, so save it - std::string filename = LLFavoritesOrderStorage::getInstance()->getSavedOrderFileName(); - if (!filename.empty()) - { - LLSD settings_llsd; - - for(sort_index_map_t::const_iterator iter = mSortIndexes.begin(); iter != mSortIndexes.end(); ++iter) - { - settings_llsd[iter->first.asString()] = iter->second; - } - - llofstream file; - file.open(filename.c_str()); - if ( file.is_open() ) - { - LLSDSerialize::toPrettyXML(settings_llsd, file); - LL_INFOS("FavoritesBar") << "saved favorites order to '" << filename << "' " << LL_ENDL; - } - else - { - LL_WARNS("FavoritesBar") << "failed to open favorites order file '" << filename << "' " << LL_ENDL; - } - } - else - { - LL_DEBUGS("FavoritesBar") << "no user directory available to store favorites order file" << LL_ENDL; - } - } -} - - void LLFavoritesOrderStorage::cleanup() { // nothing to clean @@ -1720,7 +1701,7 @@ void LLFavoritesOrderStorage::cleanup() sort_index_map_t aTempMap; //copy unremoved values from mSortIndexes to aTempMap - std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), + std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), inserter(aTempMap, aTempMap.begin()), is_not_in_fav); @@ -1728,6 +1709,17 @@ void LLFavoritesOrderStorage::cleanup() mSortIndexes.swap(aTempMap); } +// See also LLInventorySort where landmarks in the Favorites folder are sorted. +class LLViewerInventoryItemSort +{ +public: + bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) + { + return LLFavoritesOrderStorage::instance().getSortIndex(a->getUUID()) + < LLFavoritesOrderStorage::instance().getSortIndex(b->getUUID()); + } +}; + void LLFavoritesOrderStorage::saveOrder() { LLInventoryModel::cat_array_t cats; @@ -1735,13 +1727,14 @@ void LLFavoritesOrderStorage::saveOrder() LLIsType is_type(LLAssetType::AT_LANDMARK); LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); gInventory.collectDescendentsIf(favorites_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); + std::sort(items.begin(), items.end(), LLViewerInventoryItemSort()); saveItemsOrder(items); } void LLFavoritesOrderStorage::saveItemsOrder( const LLInventoryModel::item_array_t& items ) { - int sortField = 0; + int sortField = 0; // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field for (LLInventoryModel::item_array_t::const_iterator i = items.begin(); i != items.end(); ++i) { @@ -1760,16 +1753,7 @@ void LLFavoritesOrderStorage::saveItemsOrder( const LLInventoryModel::item_array gInventory.notifyObservers(); } -// See also LLInventorySort where landmarks in the Favorites folder are sorted. -class LLViewerInventoryItemSort -{ -public: - bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) - { - return LLFavoritesOrderStorage::instance().getSortIndex(a->getUUID()) - < LLFavoritesOrderStorage::instance().getSortIndex(b->getUUID()); - } -}; + // * @param source_item_id - LLUUID of the source item to be moved into new position // * @param target_item_id - LLUUID of the target item before which source item should be placed. @@ -1790,6 +1774,120 @@ void LLFavoritesOrderStorage::rearrangeFavoriteLandmarks(const LLUUID& source_it saveItemsOrder(items); } +BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed) +{ + + LLUUID favorite_folder= gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + if (favorite_folder.isNull()) + return FALSE; + + LLInventoryModel::item_array_t items; + LLInventoryModel::cat_array_t cats; + + LLIsType is_type(LLAssetType::AT_LANDMARK); + gInventory.collectDescendentsIf(favorite_folder, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); + + std::sort(items.begin(), items.end(), LLFavoritesSort()); + bool name_changed = false; + + for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); it++) + { + if(mFavoriteNames[(*it)->getUUID()] != ((*it)->getName())) + { + mFavoriteNames[(*it)->getUUID()] = (*it)->getName(); + name_changed = true; + } + } + + if((items != mPrevFavorites) || name_changed || pref_changed) + { + std::string filename = getStoredFavoritesFilename(); + if (!filename.empty()) + { + llifstream in_file; + in_file.open(filename.c_str()); + LLSD fav_llsd; + if (in_file.is_open()) + { + LLSDSerialize::fromXML(fav_llsd, in_file); + in_file.close(); + } + else + { + LL_WARNS("FavoritesBar") << "unable to open favorites from '" << filename << "'" << LL_ENDL; + } + + LLSD user_llsd; + S32 fav_iter = 0; + for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); it++) + { + LLSD value; + if (gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin")) + { + value["name"] = (*it)->getName(); + value["asset_id"] = (*it)->getAssetUUID(); + value["id"] = (*it)->getUUID(); + slurls_map_t::iterator slurl_iter = mSLURLs.find(value["asset_id"]); + if (slurl_iter != mSLURLs.end()) + { + value["slurl"] = slurl_iter->second; + user_llsd[fav_iter] = value; + } + else + { + getSLURL((*it)->getAssetUUID()); + mUpdateRequired = true; + return FALSE; + } + } + else + { + value["id"] = (*it)->getUUID(); + user_llsd[fav_iter] = value; + } + + fav_iter ++; + } + + LLAvatarName av_name; + LLAvatarNameCache::get( gAgentID, &av_name ); + // Note : use the "John Doe" and not the "john.doe" version of the name + // as we'll compare it with the stored credentials in the login panel. + fav_llsd[av_name.getUserName()] = user_llsd; + llofstream file; + file.open(filename.c_str()); + if ( file.is_open() ) + { + LLSDSerialize::toPrettyXML(fav_llsd, file); + file.close(); + mSaveOnExit = false; + } + else + { + LL_WARNS("FavoritesBar") << "unable to open favorites storage for '" << av_name.getUserName() + << "' at '" << filename << "' " << LL_ENDL; + } + } + + mPrevFavorites = items; + } + + return TRUE; + +} + +void LLFavoritesOrderStorage::showFavoritesOnLoginChanged(BOOL show) +{ + if (show) + { + saveFavoritesRecord(true); + } + else + { + removeFavoritesRecordOfUser(); + } +} + void AddFavoriteLandmarkCallback::fire(const LLUUID& inv_item_id) { if (mTargetLandmarkId.isNull()) return; diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index a370724947..846d62227a 100755..100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -105,8 +105,10 @@ protected: bool mUpdateDropDownItems; bool mRestoreOverflowMenu; - LLUUID mSelectedItemID; + bool mGetPrevItems; + LLUUID mSelectedItemID; + LLFrameTimer mItemsChangedTimer; LLUIImage* mImageDragIndication; private: @@ -204,12 +206,24 @@ public: * @see cleanup() */ static void destroyClass(); + static std::string getStoredFavoritesFilename(); + static std::string getSavedOrderFileName(); + + BOOL saveFavoritesRecord(bool pref_changed = false); + void showFavoritesOnLoginChanged(BOOL show); + + LLInventoryModel::item_array_t mPrevFavorites; + const static S32 NO_INDEX; + static bool mSaveOnExit; + bool mUpdateRequired; + std::map<LLUUID,std::string> mFavoriteNames; + private: friend class LLSingleton<LLFavoritesOrderStorage>; - LLFavoritesOrderStorage() : mIsDirty(false) { load(); } - ~LLFavoritesOrderStorage() { save(); } + LLFavoritesOrderStorage() : mIsDirty(false), mUpdateRequired(false){ load(); } + ~LLFavoritesOrderStorage() {} /** * Removes sort indexes for items which are not in Favorites bar for now. @@ -217,13 +231,8 @@ private: void cleanup(); const static std::string SORTING_DATA_FILE_NAME; - std::string getSavedOrderFileName(); - static std::string getStoredFavoritesFilename(); - - void load(); - void save(); - void saveFavoritesSLURLs(); + void load(); // Remove record of current user's favorites from file on disk. void removeFavoritesRecordOfUser(); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index ea39f812fd..b1e3f2bb14 100755..100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -60,8 +60,6 @@ #include "lldxhardware.h" #endif -#define LL_EXPORT_GPU_TABLE 0 - #if LL_DARWIN const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt"; const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_mac.%s.txt"; diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index 69078ccc21..69078ccc21 100755..100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index ef50594feb..ef50594feb 100755..100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h index b6e67375cd..b6e67375cd 100755..100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h diff --git a/indra/newview/llfilteredwearablelist.cpp b/indra/newview/llfilteredwearablelist.cpp index a29ccf2b6d..a29ccf2b6d 100755..100644 --- a/indra/newview/llfilteredwearablelist.cpp +++ b/indra/newview/llfilteredwearablelist.cpp diff --git a/indra/newview/llfilteredwearablelist.h b/indra/newview/llfilteredwearablelist.h index c21458ca98..c21458ca98 100755..100644 --- a/indra/newview/llfilteredwearablelist.h +++ b/indra/newview/llfilteredwearablelist.h diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 2e1afc68b4..2e1afc68b4 100755..100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h index 4c8c9d3cde..4c8c9d3cde 100755..100644 --- a/indra/newview/llfirstuse.h +++ b/indra/newview/llfirstuse.h diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index b6e61f83b1..b6e61f83b1 100755..100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h index a00551df8e..a00551df8e 100755..100644 --- a/indra/newview/llflexibleobject.h +++ b/indra/newview/llflexibleobject.h diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index b342d8fdf3..c5d637d1fc 100755..100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -34,10 +34,12 @@ // Viewer includes #include "llagent.h" #include "llagentui.h" -#include "llappviewer.h" +#include "llappviewer.h" +#include "llnotificationsutil.h" #include "llslurl.h" #include "llvoiceclient.h" #include "lluictrlfactory.h" +#include "llupdaterservice.h" #include "llviewertexteditor.h" #include "llviewercontrol.h" #include "llviewerstats.h" @@ -99,9 +101,23 @@ public: /// separated so that we can programmatically access the same info. static LLSD getInfo(); void onClickCopyToClipboard(); + void onClickUpdateCheck(); + + // checks state of updater service and starts a check outside of schedule. + // subscribes callback for closest state update + static void setUpdateListener(); private: void setSupportText(const std::string& server_release_notes_url); + + // notifications for user requested checks + static void showCheckUpdateNotification(S32 state); + + // callback method for manual checks + static bool callbackCheckUpdate(LLSD const & event); + + // listener name for update checks + static const std::string sCheckUpdateListenerName; }; @@ -132,6 +148,9 @@ BOOL LLFloaterAbout::postBuild() getChild<LLUICtrl>("copy_btn")->setCommitCallback( boost::bind(&LLFloaterAbout::onClickCopyToClipboard, this)); + getChild<LLUICtrl>("update_btn")->setCommitCallback( + boost::bind(&LLFloaterAbout::onClickUpdateCheck, this)); + static const LLUIColor about_color = LLUIColorTable::instance().getColor("TextFgReadOnlyColor"); if (gAgent.getRegion()) @@ -235,6 +254,11 @@ void LLFloaterAbout::onClickCopyToClipboard() support_widget->deselect(); } +void LLFloaterAbout::onClickUpdateCheck() +{ + setUpdateListener(); +} + void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url) { #if LL_WINDOWS @@ -256,6 +280,68 @@ void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url) } ///---------------------------------------------------------------------------- +/// Floater About Update-check related functions +///---------------------------------------------------------------------------- + +const std::string LLFloaterAbout::sCheckUpdateListenerName = "LLUpdateNotificationListener"; + +void LLFloaterAbout::showCheckUpdateNotification(S32 state) +{ + switch (state) + { + case LLUpdaterService::UP_TO_DATE: + LLNotificationsUtil::add("UpdateViewerUpToDate"); + break; + case LLUpdaterService::DOWNLOADING: + case LLUpdaterService::INSTALLING: + LLNotificationsUtil::add("UpdateDownloadInProgress"); + break; + case LLUpdaterService::TERMINAL: + // download complete, user triggered check after download pop-up appeared + LLNotificationsUtil::add("UpdateDownloadComplete"); + break; + default: + LLNotificationsUtil::add("UpdateCheckError"); + break; + } +} + +bool LLFloaterAbout::callbackCheckUpdate(LLSD const & event) +{ + if (!event.has("payload")) + { + return false; + } + + LLSD payload = event["payload"]; + if (payload.has("type") && payload["type"].asInteger() == LLUpdaterService::STATE_CHANGE) + { + LLEventPumps::instance().obtain("mainlooprepeater").stopListening(sCheckUpdateListenerName); + showCheckUpdateNotification(payload["state"].asInteger()); + } + return false; +} + +void LLFloaterAbout::setUpdateListener() +{ + LLUpdaterService update_service; + S32 service_state = update_service.getState(); + // Note: Do not set state listener before forceCheck() since it set's new state + if (update_service.forceCheck() || service_state == LLUpdaterService::CHECKING_FOR_UPDATE) + { + LLEventPump& mainloop(LLEventPumps::instance().obtain("mainlooprepeater")); + if (mainloop.getListener(sCheckUpdateListenerName) == LLBoundListener()) // dummy listener + { + mainloop.listen(sCheckUpdateListenerName, boost::bind(&callbackCheckUpdate, _1)); + } + } + else + { + showCheckUpdateNotification(service_state); + } +} + +///---------------------------------------------------------------------------- /// LLFloaterAboutUtil ///---------------------------------------------------------------------------- void LLFloaterAboutUtil::registerFloater() @@ -265,6 +351,11 @@ void LLFloaterAboutUtil::registerFloater() } +void LLFloaterAboutUtil::checkUpdatesAndNotify() +{ + LLFloaterAbout::setUpdateListener(); +} + ///---------------------------------------------------------------------------- /// Class LLServerReleaseNotesURLFetcher implementation ///---------------------------------------------------------------------------- @@ -289,15 +380,11 @@ void LLServerReleaseNotesURLFetcher::httpCompleted() LL_DEBUGS("ServerReleaseNotes") << dumpResponse() << " [headers:" << getResponseHeaders() << "]" << LL_ENDL; - LLFloaterAbout* floater_about = LLFloaterReg::getTypedInstance<LLFloaterAbout>("sl_about"); - if (floater_about) + std::string location = getResponseHeader(HTTP_IN_HEADER_LOCATION); + if (location.empty()) { - std::string location = getResponseHeader(HTTP_IN_HEADER_LOCATION); - if (location.empty()) - { - location = LLTrans::getString("ErrorFetchingServerReleaseNotesURL"); - } - LLAppViewer::instance()->setServerReleaseNotesURL(location); + location = LLTrans::getString("ErrorFetchingServerReleaseNotesURL"); } + LLAppViewer::instance()->setServerReleaseNotesURL(location); } diff --git a/indra/newview/llfloaterabout.h b/indra/newview/llfloaterabout.h index 8fc1aa4f29..be34b631cc 100755..100644 --- a/indra/newview/llfloaterabout.h +++ b/indra/newview/llfloaterabout.h @@ -30,6 +30,9 @@ namespace LLFloaterAboutUtil { void registerFloater(); + + // Support for user initialized update/state checks + void checkUpdatesAndNotify(); } #endif // LL_LLFLOATERABOUT_H diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index 51b59a7a74..b661fed276 100755..100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -376,13 +376,16 @@ void LLFloaterAuction::doResetParcel() msg->sendReliable(region->getHost()); // Clear the access lists - clearParcelAccessLists(parcelp, region); + clearParcelAccessList(parcelp, region, AL_ACCESS); + clearParcelAccessList(parcelp, region, AL_BAN); + clearParcelAccessList(parcelp, region, AL_ALLOW_EXPERIENCE); + clearParcelAccessList(parcelp, region, AL_BLOCK_EXPERIENCE); } } -void LLFloaterAuction::clearParcelAccessLists(LLParcel* parcel, LLViewerRegion* region) +void LLFloaterAuction::clearParcelAccessList(LLParcel* parcel, LLViewerRegion* region, U32 list) { if (!region || !parcel) return; @@ -391,15 +394,12 @@ void LLFloaterAuction::clearParcelAccessLists(LLParcel* parcel, LLViewerRegion* LLMessageSystem* msg = gMessageSystem; - // Clear access list - // parcel->mAccessList.clear(); - msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); msg->nextBlockFast(_PREHASH_AgentData); msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); msg->nextBlockFast(_PREHASH_Data); - msg->addU32Fast(_PREHASH_Flags, AL_ACCESS); + msg->addU32Fast(_PREHASH_Flags, list); msg->addS32(_PREHASH_LocalID, parcel->getLocalID() ); msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); msg->addS32Fast(_PREHASH_SequenceID, 1); // sequence_id @@ -412,27 +412,6 @@ void LLFloaterAuction::clearParcelAccessLists(LLParcel* parcel, LLViewerRegion* msg->addU32Fast(_PREHASH_Flags, 0 ); msg->sendReliable( region->getHost() ); - - // Send message for empty ban list - //parcel->mBanList.clear(); - msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_Data); - msg->addU32Fast(_PREHASH_Flags, AL_BAN); - msg->addS32(_PREHASH_LocalID, parcel->getLocalID() ); - msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); - msg->addS32Fast(_PREHASH_SequenceID, 1); // sequence_id - msg->addS32Fast(_PREHASH_Sections, 0); // num_sections - - // pack an empty block since there will be no data - msg->nextBlockFast(_PREHASH_List); - msg->addUUIDFast(_PREHASH_ID, LLUUID::null ); - msg->addS32Fast(_PREHASH_Time, 0 ); - msg->addU32Fast(_PREHASH_Flags, 0 ); - - msg->sendReliable( region->getHost() ); } diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h index 9c0c0f7775..c83a11ba8b 100755..100644 --- a/indra/newview/llfloaterauction.h +++ b/indra/newview/llfloaterauction.h @@ -67,7 +67,7 @@ private: void doResetParcel(); void doSellToAnyone(); - void clearParcelAccessLists( LLParcel* parcel, LLViewerRegion* region ); + void clearParcelAccessList( LLParcel* parcel, LLViewerRegion* region, U32 list); void cleanupAndClose(); private: diff --git a/indra/newview/llfloaterautoreplacesettings.cpp b/indra/newview/llfloaterautoreplacesettings.cpp index 6e56e929df..6e56e929df 100755..100644 --- a/indra/newview/llfloaterautoreplacesettings.cpp +++ b/indra/newview/llfloaterautoreplacesettings.cpp diff --git a/indra/newview/llfloaterautoreplacesettings.h b/indra/newview/llfloaterautoreplacesettings.h index 629aea3e3c..629aea3e3c 100755..100644 --- a/indra/newview/llfloaterautoreplacesettings.h +++ b/indra/newview/llfloaterautoreplacesettings.h diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp index 31adf5b61e..31adf5b61e 100755..100644 --- a/indra/newview/llfloateravatar.cpp +++ b/indra/newview/llfloateravatar.cpp diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h index cadc5e4028..cadc5e4028 100755..100644 --- a/indra/newview/llfloateravatar.h +++ b/indra/newview/llfloateravatar.h diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 566a3c9cd3..566a3c9cd3 100755..100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h index ed3e51c56f..ed3e51c56f 100755..100644 --- a/indra/newview/llfloateravatarpicker.h +++ b/indra/newview/llfloateravatarpicker.h diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp index 78807a8e99..78807a8e99 100755..100644 --- a/indra/newview/llfloateravatartextures.cpp +++ b/indra/newview/llfloateravatartextures.cpp diff --git a/indra/newview/llfloateravatartextures.h b/indra/newview/llfloateravatartextures.h index 02474a10e1..02474a10e1 100755..100644 --- a/indra/newview/llfloateravatartextures.h +++ b/indra/newview/llfloateravatartextures.h diff --git a/indra/newview/llfloaterbeacons.cpp b/indra/newview/llfloaterbeacons.cpp index 316294a477..316294a477 100755..100644 --- a/indra/newview/llfloaterbeacons.cpp +++ b/indra/newview/llfloaterbeacons.cpp diff --git a/indra/newview/llfloaterbeacons.h b/indra/newview/llfloaterbeacons.h index 47d0696296..47d0696296 100755..100644 --- a/indra/newview/llfloaterbeacons.h +++ b/indra/newview/llfloaterbeacons.h diff --git a/indra/newview/llfloaterbuildoptions.cpp b/indra/newview/llfloaterbuildoptions.cpp index 1b65d8d683..1b65d8d683 100755..100644 --- a/indra/newview/llfloaterbuildoptions.cpp +++ b/indra/newview/llfloaterbuildoptions.cpp diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h index 02c56cb6a9..02c56cb6a9 100755..100644 --- a/indra/newview/llfloaterbuildoptions.h +++ b/indra/newview/llfloaterbuildoptions.h diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index f2040bc760..f2040bc760 100755..100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index 0c042c3ee3..0c042c3ee3 100755..100644 --- a/indra/newview/llfloaterbulkpermission.h +++ b/indra/newview/llfloaterbulkpermission.h diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index 34904cf7ed..957c91b226 100755..100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -32,6 +32,7 @@ #include "llavataractions.h" #include "llfloaterbump.h" +#include "llfloaterreg.h" #include "llfloaterreporter.h" #include "llmutelist.h" #include "llpanelblockedlist.h" @@ -87,11 +88,11 @@ BOOL LLFloaterBump::postBuild() // virtual void LLFloaterBump::onOpen(const LLSD& key) { - mNames.clear(); - mList->deleteAllItems(); - if (gMeanCollisionList.empty()) { + mNames.clear(); + mList->deleteAllItems(); + std::string none_detected = getString("none_detected"); LLSD row; row["columns"][0]["value"] = none_detected; @@ -100,12 +101,20 @@ void LLFloaterBump::onOpen(const LLSD& key) } else { - for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin(); - iter != gMeanCollisionList.end(); ++iter) - { - LLMeanCollisionData *mcd = *iter; - add(mList, mcd); - } + populateCollisionList(); + } +} + +void LLFloaterBump::populateCollisionList() +{ + mNames.clear(); + mList->deleteAllItems(); + + for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin(); + iter != gMeanCollisionList.end(); ++iter) + { + LLMeanCollisionData *mcd = *iter; + add(mList, mcd); } } @@ -247,3 +256,8 @@ void LLFloaterBump::inviteToGroup() { LLAvatarActions::inviteToGroup(mItemUUID); } + +LLFloaterBump* LLFloaterBump::getInstance() +{ + return LLFloaterReg::getTypedInstance<LLFloaterBump>("bumps"); +} diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h index 11b7db9fee..ce52c75255 100755..100644 --- a/indra/newview/llfloaterbump.h +++ b/indra/newview/llfloaterbump.h @@ -46,6 +46,10 @@ public: /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + static LLFloaterBump* getInstance(); + + void populateCollisionList(); + void startIM(); void startCall(); void reportAbuse(); diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp index 5a9cdbba44..5a9cdbba44 100755..100644 --- a/indra/newview/llfloaterbuy.cpp +++ b/indra/newview/llfloaterbuy.cpp diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h index 3ec642dee1..3ec642dee1 100755..100644 --- a/indra/newview/llfloaterbuy.h +++ b/indra/newview/llfloaterbuy.h diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp index b32ac860aa..b32ac860aa 100755..100644 --- a/indra/newview/llfloaterbuycontents.cpp +++ b/indra/newview/llfloaterbuycontents.cpp diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h index 19393fb6af..19393fb6af 100755..100644 --- a/indra/newview/llfloaterbuycontents.h +++ b/indra/newview/llfloaterbuycontents.h diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp index e21a8594bc..e21a8594bc 100755..100644 --- a/indra/newview/llfloaterbuycurrency.cpp +++ b/indra/newview/llfloaterbuycurrency.cpp diff --git a/indra/newview/llfloaterbuycurrency.h b/indra/newview/llfloaterbuycurrency.h index 7ff6c42384..7ff6c42384 100755..100644 --- a/indra/newview/llfloaterbuycurrency.h +++ b/indra/newview/llfloaterbuycurrency.h diff --git a/indra/newview/llfloaterbuycurrencyhtml.cpp b/indra/newview/llfloaterbuycurrencyhtml.cpp index a69aa8d227..a69aa8d227 100755..100644 --- a/indra/newview/llfloaterbuycurrencyhtml.cpp +++ b/indra/newview/llfloaterbuycurrencyhtml.cpp diff --git a/indra/newview/llfloaterbuycurrencyhtml.h b/indra/newview/llfloaterbuycurrencyhtml.h index 6b1fc53f1f..6b1fc53f1f 100755..100644 --- a/indra/newview/llfloaterbuycurrencyhtml.h +++ b/indra/newview/llfloaterbuycurrencyhtml.h diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 0a0e5ffc06..0a0e5ffc06 100755..100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp diff --git a/indra/newview/llfloaterbuyland.h b/indra/newview/llfloaterbuyland.h index 424f6f6616..424f6f6616 100755..100644 --- a/indra/newview/llfloaterbuyland.h +++ b/indra/newview/llfloaterbuyland.h diff --git a/indra/newview/llfloaterbvhpreview.cpp b/indra/newview/llfloaterbvhpreview.cpp index 669ffa7c59..669ffa7c59 100755..100644 --- a/indra/newview/llfloaterbvhpreview.cpp +++ b/indra/newview/llfloaterbvhpreview.cpp diff --git a/indra/newview/llfloaterbvhpreview.h b/indra/newview/llfloaterbvhpreview.h index b81cc6e3a5..b81cc6e3a5 100755..100644 --- a/indra/newview/llfloaterbvhpreview.h +++ b/indra/newview/llfloaterbvhpreview.h diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 20d650fa37..20d650fa37 100755..100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index 4d6d03f22d..4d6d03f22d 100755..100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h diff --git a/indra/newview/llfloaterchatvoicevolume.cpp b/indra/newview/llfloaterchatvoicevolume.cpp index 3c76a3a43c..3c76a3a43c 100755..100644 --- a/indra/newview/llfloaterchatvoicevolume.cpp +++ b/indra/newview/llfloaterchatvoicevolume.cpp diff --git a/indra/newview/llfloaterchatvoicevolume.h b/indra/newview/llfloaterchatvoicevolume.h index 61ad92b6da..61ad92b6da 100755..100644 --- a/indra/newview/llfloaterchatvoicevolume.h +++ b/indra/newview/llfloaterchatvoicevolume.h diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp index 535cb368bd..535cb368bd 100755..100644 --- a/indra/newview/llfloatercolorpicker.cpp +++ b/indra/newview/llfloatercolorpicker.cpp diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h index 8c16ebdf03..8c16ebdf03 100755..100644 --- a/indra/newview/llfloatercolorpicker.h +++ b/indra/newview/llfloatercolorpicker.h diff --git a/indra/newview/llfloaterconversationlog.cpp b/indra/newview/llfloaterconversationlog.cpp index 4c910c5655..4c910c5655 100755..100644 --- a/indra/newview/llfloaterconversationlog.cpp +++ b/indra/newview/llfloaterconversationlog.cpp diff --git a/indra/newview/llfloaterconversationlog.h b/indra/newview/llfloaterconversationlog.h index e971330f3d..e971330f3d 100755..100644 --- a/indra/newview/llfloaterconversationlog.h +++ b/indra/newview/llfloaterconversationlog.h diff --git a/indra/newview/llfloaterconversationpreview.cpp b/indra/newview/llfloaterconversationpreview.cpp index a358b7c10b..a358b7c10b 100755..100644 --- a/indra/newview/llfloaterconversationpreview.cpp +++ b/indra/newview/llfloaterconversationpreview.cpp diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h index a8dbbc9ffe..a8dbbc9ffe 100755..100644 --- a/indra/newview/llfloaterconversationpreview.h +++ b/indra/newview/llfloaterconversationpreview.h diff --git a/indra/newview/llfloaterdeleteenvpreset.cpp b/indra/newview/llfloaterdeleteenvpreset.cpp index bb11c813b4..bb11c813b4 100755..100644 --- a/indra/newview/llfloaterdeleteenvpreset.cpp +++ b/indra/newview/llfloaterdeleteenvpreset.cpp diff --git a/indra/newview/llfloaterdeleteenvpreset.h b/indra/newview/llfloaterdeleteenvpreset.h index 1211505273..1211505273 100755..100644 --- a/indra/newview/llfloaterdeleteenvpreset.h +++ b/indra/newview/llfloaterdeleteenvpreset.h diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp index af21cb593f..af21cb593f 100755..100644 --- a/indra/newview/llfloaterdestinations.cpp +++ b/indra/newview/llfloaterdestinations.cpp diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h index 85d9b3391e..85d9b3391e 100755..100644 --- a/indra/newview/llfloaterdestinations.h +++ b/indra/newview/llfloaterdestinations.h diff --git a/indra/newview/llfloaterdisplayname.cpp b/indra/newview/llfloaterdisplayname.cpp index 596e8c0dbe..596e8c0dbe 100755..100644 --- a/indra/newview/llfloaterdisplayname.cpp +++ b/indra/newview/llfloaterdisplayname.cpp diff --git a/indra/newview/llfloaterdisplayname.h b/indra/newview/llfloaterdisplayname.h index a00bf56712..a00bf56712 100755..100644 --- a/indra/newview/llfloaterdisplayname.h +++ b/indra/newview/llfloaterdisplayname.h diff --git a/indra/newview/llfloatereditdaycycle.cpp b/indra/newview/llfloatereditdaycycle.cpp index 5c0991b0b3..5c0991b0b3 100755..100644 --- a/indra/newview/llfloatereditdaycycle.cpp +++ b/indra/newview/llfloatereditdaycycle.cpp diff --git a/indra/newview/llfloatereditdaycycle.h b/indra/newview/llfloatereditdaycycle.h index e6e4fe39c1..e6e4fe39c1 100755..100644 --- a/indra/newview/llfloatereditdaycycle.h +++ b/indra/newview/llfloatereditdaycycle.h diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp index d809211ea7..d809211ea7 100755..100644 --- a/indra/newview/llfloatereditsky.cpp +++ b/indra/newview/llfloatereditsky.cpp diff --git a/indra/newview/llfloatereditsky.h b/indra/newview/llfloatereditsky.h index a06c4fc5fa..a06c4fc5fa 100755..100644 --- a/indra/newview/llfloatereditsky.h +++ b/indra/newview/llfloatereditsky.h diff --git a/indra/newview/llfloatereditwater.cpp b/indra/newview/llfloatereditwater.cpp index 43b44eae37..43b44eae37 100755..100644 --- a/indra/newview/llfloatereditwater.cpp +++ b/indra/newview/llfloatereditwater.cpp diff --git a/indra/newview/llfloatereditwater.h b/indra/newview/llfloatereditwater.h index 2211bca59f..2211bca59f 100755..100644 --- a/indra/newview/llfloatereditwater.h +++ b/indra/newview/llfloatereditwater.h diff --git a/indra/newview/llfloaterenvironmentsettings.cpp b/indra/newview/llfloaterenvironmentsettings.cpp index 4dbc8cdee0..4dbc8cdee0 100755..100644 --- a/indra/newview/llfloaterenvironmentsettings.cpp +++ b/indra/newview/llfloaterenvironmentsettings.cpp diff --git a/indra/newview/llfloaterenvironmentsettings.h b/indra/newview/llfloaterenvironmentsettings.h index 0ab458a0f6..0ab458a0f6 100755..100644 --- a/indra/newview/llfloaterenvironmentsettings.h +++ b/indra/newview/llfloaterenvironmentsettings.h diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp index 3e303e0932..3e303e0932 100755..100644 --- a/indra/newview/llfloaterevent.cpp +++ b/indra/newview/llfloaterevent.cpp diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h index ed90055d95..ed90055d95 100755..100644 --- a/indra/newview/llfloaterevent.h +++ b/indra/newview/llfloaterevent.h diff --git a/indra/newview/llfloaterexperiencepicker.cpp b/indra/newview/llfloaterexperiencepicker.cpp new file mode 100644 index 0000000000..bb54c57baf --- /dev/null +++ b/indra/newview/llfloaterexperiencepicker.cpp @@ -0,0 +1,162 @@ +/** +* @file llfloaterexperiencepicker.cpp +* @brief Implementation of llfloaterexperiencepicker +* @author dolphin@lindenlab.com +* +* $LicenseInfo:firstyear=2014&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2014, 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" + +#include "llfloaterexperiencepicker.h" + + +#include "lllineeditor.h" +#include "llfloaterreg.h" +#include "llscrolllistctrl.h" +#include "llviewerregion.h" +#include "llagent.h" +#include "llexperiencecache.h" +#include "llslurl.h" +#include "llavatarnamecache.h" +#include "llfloaterexperienceprofile.h" +#include "llcombobox.h" +#include "llviewercontrol.h" +#include "lldraghandle.h" +#include "llpanelexperiencepicker.h" + +LLFloaterExperiencePicker* LLFloaterExperiencePicker::show( select_callback_t callback, const LLUUID& key, BOOL allow_multiple, BOOL close_on_select, filter_list filters, LLView * frustumOrigin ) +{ + LLFloaterExperiencePicker* floater = + LLFloaterReg::showTypedInstance<LLFloaterExperiencePicker>("experience_search", key); + if (!floater) + { + LL_WARNS() << "Cannot instantiate experience picker" << LL_ENDL; + return NULL; + } + + if (floater->mSearchPanel) + { + floater->mSearchPanel->mSelectionCallback = callback; + floater->mSearchPanel->mCloseOnSelect = close_on_select; + floater->mSearchPanel->setAllowMultiple(allow_multiple); + floater->mSearchPanel->setDefaultFilters(); + floater->mSearchPanel->addFilters(filters.begin(), filters.end()); + floater->mSearchPanel->filterContent(); + } + + if(frustumOrigin) + { + floater->mFrustumOrigin = frustumOrigin->getHandle(); + } + + return floater; +} + +void LLFloaterExperiencePicker::drawFrustum() +{ + if(mFrustumOrigin.get()) + { + LLView * frustumOrigin = mFrustumOrigin.get(); + LLRect origin_rect; + frustumOrigin->localRectToOtherView(frustumOrigin->getLocalRect(), &origin_rect, this); + // draw context cone connecting color picker with color swatch in parent floater + LLRect local_rect = getLocalRect(); + if (hasFocus() && frustumOrigin->isInVisibleChain() && mContextConeOpacity > 0.001f) + { + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + LLGLEnable(GL_CULL_FACE); + gGL.begin(LLRender::QUADS); + { + gGL.color4f(0.f, 0.f, 0.f, mContextConeInAlpha * mContextConeOpacity); + gGL.vertex2i(origin_rect.mLeft, origin_rect.mTop); + gGL.vertex2i(origin_rect.mRight, origin_rect.mTop); + gGL.color4f(0.f, 0.f, 0.f, mContextConeOutAlpha * mContextConeOpacity); + gGL.vertex2i(local_rect.mRight, local_rect.mTop); + gGL.vertex2i(local_rect.mLeft, local_rect.mTop); + + gGL.color4f(0.f, 0.f, 0.f, mContextConeOutAlpha * mContextConeOpacity); + gGL.vertex2i(local_rect.mLeft, local_rect.mTop); + gGL.vertex2i(local_rect.mLeft, local_rect.mBottom); + gGL.color4f(0.f, 0.f, 0.f, mContextConeInAlpha * mContextConeOpacity); + gGL.vertex2i(origin_rect.mLeft, origin_rect.mBottom); + gGL.vertex2i(origin_rect.mLeft, origin_rect.mTop); + + gGL.color4f(0.f, 0.f, 0.f, mContextConeOutAlpha * mContextConeOpacity); + gGL.vertex2i(local_rect.mRight, local_rect.mBottom); + gGL.vertex2i(local_rect.mRight, local_rect.mTop); + gGL.color4f(0.f, 0.f, 0.f, mContextConeInAlpha * mContextConeOpacity); + gGL.vertex2i(origin_rect.mRight, origin_rect.mTop); + gGL.vertex2i(origin_rect.mRight, origin_rect.mBottom); + + gGL.color4f(0.f, 0.f, 0.f, mContextConeOutAlpha * mContextConeOpacity); + gGL.vertex2i(local_rect.mLeft, local_rect.mBottom); + gGL.vertex2i(local_rect.mRight, local_rect.mBottom); + gGL.color4f(0.f, 0.f, 0.f, mContextConeInAlpha * mContextConeOpacity); + gGL.vertex2i(origin_rect.mRight, origin_rect.mBottom); + gGL.vertex2i(origin_rect.mLeft, origin_rect.mBottom); + } + gGL.end(); + } + + if (gFocusMgr.childHasMouseCapture(getDragHandle())) + { + mContextConeOpacity = lerp(mContextConeOpacity, gSavedSettings.getF32("PickerContextOpacity"), LLCriticalDamp::getInterpolant(mContextConeFadeTime)); + } + else + { + mContextConeOpacity = lerp(mContextConeOpacity, 0.f, LLCriticalDamp::getInterpolant(mContextConeFadeTime)); + } + } +} + +void LLFloaterExperiencePicker::draw() +{ + drawFrustum(); + LLFloater::draw(); +} + +LLFloaterExperiencePicker::LLFloaterExperiencePicker( const LLSD& key ) + :LLFloater(key) + ,mSearchPanel(NULL) + ,mContextConeOpacity(0.f) + ,mContextConeInAlpha(0.f) + ,mContextConeOutAlpha(0.f) + ,mContextConeFadeTime(0.f) +{ + mContextConeInAlpha = gSavedSettings.getF32("ContextConeInAlpha"); + mContextConeOutAlpha = gSavedSettings.getF32("ContextConeOutAlpha"); + mContextConeFadeTime = gSavedSettings.getF32("ContextConeFadeTime"); +} + +LLFloaterExperiencePicker::~LLFloaterExperiencePicker() +{ + gFocusMgr.releaseFocusIfNeeded( this ); +} + +BOOL LLFloaterExperiencePicker::postBuild() +{ + mSearchPanel = new LLPanelExperiencePicker(); + addChild(mSearchPanel); + mSearchPanel->setOrigin(0, 0); + return LLFloater::postBuild(); +} diff --git a/indra/newview/llfloaterexperiencepicker.h b/indra/newview/llfloaterexperiencepicker.h new file mode 100644 index 0000000000..29054a57db --- /dev/null +++ b/indra/newview/llfloaterexperiencepicker.h @@ -0,0 +1,67 @@ +/** +* @file llfloaterexperiencepicker.h +* @brief Header file for llfloaterexperiencepicker +* @author dolphin@lindenlab.com +* +* $LicenseInfo:firstyear=2014&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2014, 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_LLFLOATEREXPERIENCEPICKER_H +#define LL_LLFLOATEREXPERIENCEPICKER_H + +#include "llfloater.h" + +class LLScrollListCtrl; +class LLLineEditor; +class LLPanelExperiencePicker; + + +class LLFloaterExperiencePicker : public LLFloater +{ +public: + + typedef boost::function<void (const uuid_vec_t&)> select_callback_t; + // filter function for experiences, return true if the experience should be hidden. + typedef boost::function<bool (const LLSD&)> filter_function; + typedef std::vector<filter_function> filter_list; + + static LLFloaterExperiencePicker* show( select_callback_t callback, const LLUUID& key, BOOL allow_multiple, BOOL close_on_select, filter_list filters, LLView * frustumOrigin); + + LLFloaterExperiencePicker(const LLSD& key); + virtual ~LLFloaterExperiencePicker(); + + BOOL postBuild(); + + virtual void draw(); +private: + + LLPanelExperiencePicker* mSearchPanel; + + void drawFrustum(); + LLHandle <LLView> mFrustumOrigin; + F32 mContextConeOpacity; + F32 mContextConeInAlpha; + F32 mContextConeOutAlpha; + F32 mContextConeFadeTime; +}; + +#endif // LL_LLFLOATEREXPERIENCEPICKER_H + diff --git a/indra/newview/llfloaterexperienceprofile.cpp b/indra/newview/llfloaterexperienceprofile.cpp new file mode 100644 index 0000000000..fd226d656c --- /dev/null +++ b/indra/newview/llfloaterexperienceprofile.cpp @@ -0,0 +1,1023 @@ +/** + * @file llfloaterexperienceprofile.cpp + * @brief llfloaterexperienceprofile and related class definitions + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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" +#include "llfloaterexperienceprofile.h" + +#include "llagent.h" +#include "llappviewer.h" +#include "llcheckboxctrl.h" +#include "llcombobox.h" +#include "llcommandhandler.h" +#include "llexpandabletextbox.h" +#include "llexperiencecache.h" +#include "llfloaterreg.h" +#include "llhttpclient.h" +#include "lllayoutstack.h" +#include "lllineeditor.h" +#include "llnotificationsutil.h" +#include "llsdserialize.h" +#include "llslurl.h" +#include "lltabcontainer.h" +#include "lltextbox.h" +#include "lltexturectrl.h" +#include "lltrans.h" +#include "llviewerregion.h" +#include "llevents.h" +#include "llfloatergroups.h" +#include "llnotifications.h" +#include "llfloaterreporter.h" + +#define XML_PANEL_EXPERIENCE_PROFILE "floater_experienceprofile.xml" +#define TF_NAME "experience_title" +#define TF_DESC "experience_description" +#define TF_SLURL "LocationTextText" +#define TF_MRKT "marketplace" +#define TF_MATURITY "ContentRatingText" +#define TF_OWNER "OwnerText" +#define TF_GROUP "GroupText" +#define TF_GRID_WIDE "grid_wide" +#define TF_PRIVILEGED "privileged" +#define EDIT "edit_" + +#define IMG_LOGO "logo" + +#define PNL_TOP "top panel" +#define PNL_IMAGE "image_panel" +#define PNL_DESC "description panel" +#define PNL_LOC "location panel" +#define PNL_MRKT "marketplace panel" +#define PNL_GROUP "group_panel" +#define PNL_PERMS "perm panel" + +#define BTN_ALLOW "allow_btn" +#define BTN_BLOCK "block_btn" +#define BTN_CANCEL "cancel_btn" +#define BTN_CLEAR_LOCATION "clear_btn" +#define BTN_EDIT "edit_btn" +#define BTN_ENABLE "enable_btn" +#define BTN_FORGET "forget_btn" +#define BTN_PRIVATE "private_btn" +#define BTN_REPORT "report_btn" +#define BTN_SAVE "save_btn" +#define BTN_SET_GROUP "Group_btn" +#define BTN_SET_LOCATION "location_btn" + + +class LLExperienceHandler : public LLCommandHandler +{ +public: + LLExperienceHandler() : LLCommandHandler("experience", UNTRUSTED_THROTTLE) { } + + bool handle(const LLSD& params, const LLSD& query_map, + LLMediaCtrl* web) + { + if(params.size() != 2 || params[1].asString() != "profile") + return false; + + LLExperienceCache::get(params[0].asUUID(), boost::bind(&LLExperienceHandler::experienceCallback, this, _1)); + return true; + } + + void experienceCallback(const LLSD& experienceDetails) + { + if(!experienceDetails.has(LLExperienceCache::MISSING)) + { + LLFloaterReg::showInstance("experience_profile", experienceDetails[LLExperienceCache::EXPERIENCE_ID].asUUID(), true); + } + } +}; + +LLExperienceHandler gExperienceHandler; + + +LLFloaterExperienceProfile::LLFloaterExperienceProfile(const LLSD& data) + : LLFloater(data) + , mSaveCompleteAction(NOTHING) + , mDirty(false) + , mForceClose(false) +{ + if (data.has("experience_id")) + { + mExperienceId = data["experience_id"].asUUID(); + mPostEdit = data.has("edit_experience") && data["edit_experience"].asBoolean(); + } + else + { + mExperienceId = data.asUUID(); + mPostEdit = false; + } +} + + +LLFloaterExperienceProfile::~LLFloaterExperienceProfile() +{ + +} + +template<class T> +class HandleResponder : public LLHTTPClient::Responder +{ +public: + HandleResponder(const LLHandle<T>& parent):mParent(parent){} + LLHandle<T> mParent; + + virtual void httpFailure() + { + LL_WARNS() << "HandleResponder failed with code: " << getStatus() << ", reason: " << getReason() << LL_ENDL; + } +}; + +class ExperienceUpdateResponder : public HandleResponder<LLFloaterExperienceProfile> +{ +public: + ExperienceUpdateResponder(const LLHandle<LLFloaterExperienceProfile>& parent):HandleResponder<LLFloaterExperienceProfile>(parent) + { + } + + virtual void httpSuccess() + { + LLFloaterExperienceProfile* parent=mParent.get(); + if(parent) + { + parent->onSaveComplete(getContent()); + } + } +}; + + + +class ExperiencePreferencesResponder : public LLHTTPClient::Responder +{ +public: + ExperiencePreferencesResponder(const LLUUID& single = LLUUID::null):mId(single) + { + } + + bool sendSingle(const LLSD& content, const LLSD& permission, const char* name) + { + if(!content.has(name)) + return false; + + LLEventPump& pump = LLEventPumps::instance().obtain("experience_permission"); + const LLSD& list = content[name]; + LLSD::array_const_iterator it = list.beginArray(); + while(it != list.endArray()) + { + if(it->asUUID() == mId) + { + LLSD message; + message[it->asString()] = permission; + message["experience"] = mId; + pump.post(message); + return true; + } + ++it; + } + return false; + } + + bool hasPermission(const LLSD& content, const char* name) + { + if(!content.has(name)) + return false; + + const LLSD& list = content[name]; + LLSD::array_const_iterator it = list.beginArray(); + while(it != list.endArray()) + { + if(it->asUUID() == mId) + { + return true; + } + ++it; + } + return false; + } + + const char* getPermission(const LLSD& content) + { + if(hasPermission(content, "experiences")) + { + return "Allow"; + } + else if(hasPermission(content, "blocked")) + { + return "Block"; + } + return "Forget"; + } + + + virtual void httpSuccess() + { + if(mId.notNull()) + { + post(getPermission(getContent())); + return; + } + LLEventPumps::instance().obtain("experience_permission").post(getContent()); + } + + void post( const char* perm ) + { + LLSD experience; + LLSD message; + experience["permission"]=perm; + message["experience"] = mId; + message[mId.asString()] = experience; + LLEventPumps::instance().obtain("experience_permission").post(message); + } + +private: + LLUUID mId; +}; + + +class IsAdminResponder : public HandleResponder<LLFloaterExperienceProfile> +{ +public: + IsAdminResponder(const LLHandle<LLFloaterExperienceProfile>& parent):HandleResponder<LLFloaterExperienceProfile>(parent) + { + } + + virtual void httpSuccess() + { + LLFloaterExperienceProfile* parent = mParent.get(); + if(!parent) + return; + + bool enabled = true; + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + { + enabled = false; + } + else + { + std::string url=region->getCapability("UpdateExperience"); + if(url.empty()) + enabled = false; + } + if(enabled && getContent()["status"].asBoolean()) + { + parent->getChild<LLLayoutPanel>(PNL_TOP)->setVisible(TRUE); + parent->getChild<LLButton>(BTN_EDIT)->setVisible(TRUE); + } + } +}; + +BOOL LLFloaterExperienceProfile::postBuild() +{ + + if (mExperienceId.notNull()) + { + LLExperienceCache::fetch(mExperienceId, true); + LLExperienceCache::get(mExperienceId, boost::bind(&LLFloaterExperienceProfile::experienceCallback, + getDerivedHandle<LLFloaterExperienceProfile>(), _1)); + + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + std::string lookup_url=region->getCapability("IsExperienceAdmin"); + if(!lookup_url.empty()) + { + LLHTTPClient::get(lookup_url+"?experience_id="+mExperienceId.asString(), new IsAdminResponder(getDerivedHandle<LLFloaterExperienceProfile>())); + } + } + } + + childSetAction(BTN_EDIT, boost::bind(&LLFloaterExperienceProfile::onClickEdit, this)); + childSetAction(BTN_ALLOW, boost::bind(&LLFloaterExperienceProfile::onClickPermission, this, "Allow")); + childSetAction(BTN_FORGET, boost::bind(&LLFloaterExperienceProfile::onClickForget, this)); + childSetAction(BTN_BLOCK, boost::bind(&LLFloaterExperienceProfile::onClickPermission, this, "Block")); + childSetAction(BTN_CANCEL, boost::bind(&LLFloaterExperienceProfile::onClickCancel, this)); + childSetAction(BTN_SAVE, boost::bind(&LLFloaterExperienceProfile::onClickSave, this)); + childSetAction(BTN_SET_LOCATION, boost::bind(&LLFloaterExperienceProfile::onClickLocation, this)); + childSetAction(BTN_CLEAR_LOCATION, boost::bind(&LLFloaterExperienceProfile::onClickClear, this)); + childSetAction(BTN_SET_GROUP, boost::bind(&LLFloaterExperienceProfile::onPickGroup, this)); + childSetAction(BTN_REPORT, boost::bind(&LLFloaterExperienceProfile::onReportExperience, this)); + + getChild<LLTextEditor>(EDIT TF_DESC)->setKeystrokeCallback(boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this)); + getChild<LLUICtrl>(EDIT TF_MATURITY)->setCommitCallback(boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this)); + getChild<LLLineEditor>(EDIT TF_MRKT)->setKeystrokeCallback(boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this), NULL); + getChild<LLLineEditor>(EDIT TF_NAME)->setKeystrokeCallback(boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this), NULL); + + childSetCommitCallback(EDIT BTN_ENABLE, boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this), NULL); + childSetCommitCallback(EDIT BTN_PRIVATE, boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this), NULL); + + childSetCommitCallback(EDIT IMG_LOGO, boost::bind(&LLFloaterExperienceProfile::onFieldChanged, this), NULL); + + getChild<LLTextEditor>(EDIT TF_DESC)->setCommitOnFocusLost(TRUE); + + + LLEventPumps::instance().obtain("experience_permission").listen(mExperienceId.asString()+"-profile", + boost::bind(&LLFloaterExperienceProfile::experiencePermission, getDerivedHandle<LLFloaterExperienceProfile>(this), _1)); + + if (mPostEdit && mExperienceId.notNull()) + { + mPostEdit = false; + changeToEdit(); + } + + return TRUE; +} + +void LLFloaterExperienceProfile::experienceCallback(LLHandle<LLFloaterExperienceProfile> handle, const LLSD& experience ) +{ + LLFloaterExperienceProfile* pllpep = handle.get(); + if(pllpep) + { + pllpep->refreshExperience(experience); + } +} + + +bool LLFloaterExperienceProfile::experiencePermission( LLHandle<LLFloaterExperienceProfile> handle, const LLSD& permission ) +{ + LLFloaterExperienceProfile* pllpep = handle.get(); + if(pllpep) + { + pllpep->updatePermission(permission); + } + return false; +} + + +void LLFloaterExperienceProfile::onClickEdit() +{ + changeToEdit(); +} + + +void LLFloaterExperienceProfile::onClickCancel() +{ + changeToView(); +} + +void LLFloaterExperienceProfile::onClickSave() +{ + doSave(NOTHING); +} + + +void LLFloaterExperienceProfile::onClickPermission(const char* perm) +{ + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + return; + + std::string lookup_url=region->getCapability("ExperiencePreferences"); + if(lookup_url.empty()) + return; + LLSD permission; + LLSD data; + permission["permission"]=perm; + + data[mExperienceId.asString()]=permission; + LLHTTPClient::put(lookup_url, data, new ExperiencePreferencesResponder(mExperienceId)); + +} + + +void LLFloaterExperienceProfile::onClickForget() +{ + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + return; + + std::string lookup_url=region->getCapability("ExperiencePreferences"); + if(lookup_url.empty()) + return; + + LLHTTPClient::del(lookup_url+"?"+mExperienceId.asString(), new ExperiencePreferencesResponder(mExperienceId)); +} + +bool LLFloaterExperienceProfile::setMaturityString( U8 maturity, LLTextBox* child, LLComboBox* combo ) +{ + LLStyle::Params style; + std::string access; + if(maturity <= SIM_ACCESS_PG) + { + style.image(LLUI::getUIImage(getString("maturity_icon_general"))); + access = LLTrans::getString("SIM_ACCESS_PG"); + combo->setCurrentByIndex(2); + } + else if(maturity <= SIM_ACCESS_MATURE) + { + style.image(LLUI::getUIImage(getString("maturity_icon_moderate"))); + access = LLTrans::getString("SIM_ACCESS_MATURE"); + combo->setCurrentByIndex(1); + } + else if(maturity <= SIM_ACCESS_ADULT) + { + style.image(LLUI::getUIImage(getString("maturity_icon_adult"))); + access = LLTrans::getString("SIM_ACCESS_ADULT"); + combo->setCurrentByIndex(0); + } + else + { + return false; + } + + child->setText(LLStringUtil::null); + + child->appendImageSegment(style); + + child->appendText(access, false); + + return true; +} + + +void LLFloaterExperienceProfile::refreshExperience( const LLSD& experience ) +{ + mExperienceDetails = experience; + mPackage = experience; + + + LLLayoutPanel* imagePanel = getChild<LLLayoutPanel>(PNL_IMAGE); + LLLayoutPanel* descriptionPanel = getChild<LLLayoutPanel>(PNL_DESC); + LLLayoutPanel* locationPanel = getChild<LLLayoutPanel>(PNL_LOC); + LLLayoutPanel* marketplacePanel = getChild<LLLayoutPanel>(PNL_MRKT); + LLLayoutPanel* topPanel = getChild<LLLayoutPanel>(PNL_TOP); + + + imagePanel->setVisible(FALSE); + descriptionPanel->setVisible(FALSE); + locationPanel->setVisible(FALSE); + marketplacePanel->setVisible(FALSE); + topPanel->setVisible(FALSE); + + + LLTextBox* child = getChild<LLTextBox>(TF_NAME); + //child->setText(experience[LLExperienceCache::NAME].asString()); + child->setText(LLSLURL("experience", experience[LLExperienceCache::EXPERIENCE_ID], "profile").getSLURLString()); + + LLLineEditor* linechild = getChild<LLLineEditor>(EDIT TF_NAME); + linechild->setText(experience[LLExperienceCache::NAME].asString()); + + std::string value = experience[LLExperienceCache::DESCRIPTION].asString(); + LLExpandableTextBox* exchild = getChild<LLExpandableTextBox>(TF_DESC); + exchild->setText(value); + descriptionPanel->setVisible(value.length()>0); + + LLTextEditor* edit_child = getChild<LLTextEditor>(EDIT TF_DESC); + edit_child->setText(value); + + mLocationSLURL = experience[LLExperienceCache::SLURL].asString(); + child = getChild<LLTextBox>(TF_SLURL); + bool has_slurl = mLocationSLURL.length()>0; + locationPanel->setVisible(has_slurl); + mLocationSLURL = LLSLURL(mLocationSLURL).getSLURLString(); + child->setText(mLocationSLURL); + + + child = getChild<LLTextBox>(EDIT TF_SLURL); + if(has_slurl) + { + child->setText(mLocationSLURL); + } + else + { + child->setText(getString("empty_slurl")); + } + + setMaturityString((U8)(experience[LLExperienceCache::MATURITY].asInteger()), getChild<LLTextBox>(TF_MATURITY), getChild<LLComboBox>(EDIT TF_MATURITY)); + + LLUUID id = experience[LLExperienceCache::AGENT_ID].asUUID(); + child = getChild<LLTextBox>(TF_OWNER); + value = LLSLURL("agent", id, "inspect").getSLURLString(); + child->setText(value); + + + id = experience[LLExperienceCache::GROUP_ID].asUUID(); + bool id_null = id.isNull(); + child = getChild<LLTextBox>(TF_GROUP); + value = LLSLURL("group", id, "inspect").getSLURLString(); + child->setText(value); + getChild<LLLayoutPanel>(PNL_GROUP)->setVisible(!id_null); + + setEditGroup(id); + + getChild<LLButton>(BTN_SET_GROUP)->setEnabled(experience[LLExperienceCache::AGENT_ID].asUUID() == gAgent.getID()); + + LLCheckBoxCtrl* enable = getChild<LLCheckBoxCtrl>(EDIT BTN_ENABLE); + S32 properties = mExperienceDetails[LLExperienceCache::PROPERTIES].asInteger(); + enable->set(!(properties & LLExperienceCache::PROPERTY_DISABLED)); + + enable = getChild<LLCheckBoxCtrl>(EDIT BTN_PRIVATE); + enable->set(properties & LLExperienceCache::PROPERTY_PRIVATE); + + topPanel->setVisible(TRUE); + child=getChild<LLTextBox>(TF_GRID_WIDE); + child->setVisible(TRUE); + + if(properties & LLExperienceCache::PROPERTY_GRID) + { + child->setText(LLTrans::getString("Grid-Scope")); + } + else + { + child->setText(LLTrans::getString("Land-Scope")); + } + + if(getChild<LLButton>(BTN_EDIT)->getVisible()) + { + topPanel->setVisible(TRUE); + } + + if(properties & LLExperienceCache::PROPERTY_PRIVILEGED) + { + child = getChild<LLTextBox>(TF_PRIVILEGED); + child->setVisible(TRUE); + } + else + { + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + std::string lookup_url=region->getCapability("ExperiencePreferences"); + if(!lookup_url.empty()) + { + LLHTTPClient::get(lookup_url+"?"+mExperienceId.asString(), new ExperiencePreferencesResponder(mExperienceId)); + } + } + } + + value=experience[LLExperienceCache::METADATA].asString(); + if(value.empty()) + return; + + LLPointer<LLSDParser> parser = new LLSDXMLParser(); + + LLSD data; + + std::istringstream is(value); + if(LLSDParser::PARSE_FAILURE != parser->parse(is, data, value.size())) + { + value=""; + if(data.has(TF_MRKT)) + { + value=data[TF_MRKT].asString(); + + child = getChild<LLTextBox>(TF_MRKT); + child->setText(value); + if(value.size()) + { + marketplacePanel->setVisible(TRUE); + } + else + { + marketplacePanel->setVisible(FALSE); + } + } + else + { + marketplacePanel->setVisible(FALSE); + } + + linechild = getChild<LLLineEditor>(EDIT TF_MRKT); + linechild->setText(value); + + if(data.has(IMG_LOGO)) + { + LLTextureCtrl* logo = getChild<LLTextureCtrl>(IMG_LOGO); + + LLUUID id = data[IMG_LOGO].asUUID(); + logo->setImageAssetID(id); + imagePanel->setVisible(TRUE); + + logo = getChild<LLTextureCtrl>(EDIT IMG_LOGO); + logo->setImageAssetID(data[IMG_LOGO].asUUID()); + + imagePanel->setVisible(id.notNull()); + } + } + else + { + marketplacePanel->setVisible(FALSE); + imagePanel->setVisible(FALSE); + } + + mDirty=false; + mForceClose = false; + getChild<LLButton>(BTN_SAVE)->setEnabled(mDirty); +} + +void LLFloaterExperienceProfile::setPreferences( const LLSD& content ) +{ + S32 properties = mExperienceDetails[LLExperienceCache::PROPERTIES].asInteger(); + if(properties & LLExperienceCache::PROPERTY_PRIVILEGED) + { + return; + } + + const LLSD& experiences = content["experiences"]; + const LLSD& blocked = content["blocked"]; + + + for(LLSD::array_const_iterator it = experiences.beginArray(); it != experiences.endArray() ; ++it) + { + if(it->asUUID()==mExperienceId) + { + experienceAllowed(); + return; + } + } + + for(LLSD::array_const_iterator it = blocked.beginArray(); it != blocked.endArray() ; ++it) + { + if(it->asUUID()==mExperienceId) + { + experienceBlocked(); + return; + } + } + + experienceForgotten(); +} + +void LLFloaterExperienceProfile::onFieldChanged() +{ + updatePackage(); + + if(!getChild<LLButton>(BTN_EDIT)->getVisible()) + { + return; + } + LLSD::map_const_iterator st = mExperienceDetails.beginMap(); + LLSD::map_const_iterator dt = mPackage.beginMap(); + + mDirty = false; + while( !mDirty && st != mExperienceDetails.endMap() && dt != mPackage.endMap()) + { + mDirty = st->first != dt->first || st->second.asString() != dt->second.asString(); + ++st;++dt; + } + + if(!mDirty && (st != mExperienceDetails.endMap() || dt != mPackage.endMap())) + { + mDirty = true; + } + + getChild<LLButton>(BTN_SAVE)->setEnabled(mDirty); +} + + +BOOL LLFloaterExperienceProfile::canClose() +{ + if(mForceClose || !mDirty) + { + return TRUE; + } + else + { + // Bring up view-modal dialog: Save changes? Yes, No, Cancel + LLNotificationsUtil::add("SaveChanges", LLSD(), LLSD(), boost::bind(&LLFloaterExperienceProfile::handleSaveChangesDialog, this, _1, _2, CLOSE)); + return FALSE; + } +} + +bool LLFloaterExperienceProfile::handleSaveChangesDialog( const LLSD& notification, const LLSD& response, PostSaveAction action ) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + switch( option ) + { + case 0: // "Yes" + // close after saving + doSave( action ); + break; + + case 1: // "No" + if(action != NOTHING) + { + mForceClose = TRUE; + if(action==CLOSE) + { + closeFloater(); + } + else + { + changeToView(); + } + } + break; + + case 2: // "Cancel" + default: + // If we were quitting, we didn't really mean it. + LLAppViewer::instance()->abortQuit(); + break; + } + return false; +} + +void LLFloaterExperienceProfile::doSave( int success_action ) +{ + mSaveCompleteAction=success_action; + + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + return; + + std::string url=region->getCapability("UpdateExperience"); + if(url.empty()) + return; + + mPackage.erase(LLExperienceCache::QUOTA); + mPackage.erase(LLExperienceCache::EXPIRES); + mPackage.erase(LLExperienceCache::AGENT_ID); + + LLHTTPClient::post(url, mPackage, new ExperienceUpdateResponder(getDerivedHandle<LLFloaterExperienceProfile>())); +} + +void LLFloaterExperienceProfile::onSaveComplete( const LLSD& content ) +{ + LLUUID id = getExperienceId(); + + if(content.has("removed")) + { + const LLSD& removed = content["removed"]; + LLSD::map_const_iterator it = removed.beginMap(); + for(/**/; it != removed.endMap(); ++it) + { + const std::string& field = it->first; + if(field == LLExperienceCache::EXPERIENCE_ID) + { + //this message should be removed by the experience api + continue; + } + const LLSD& data = it->second; + std::string error_tag = data["error_tag"].asString()+ "ExperienceProfileMessage"; + LLSD fields; + if( LLNotifications::instance().getTemplate(error_tag)) + { + fields["field"] = field; + fields["extra_info"] = data["extra_info"]; + LLNotificationsUtil::add(error_tag, fields); + } + else + { + fields["MESSAGE"]=data["en"]; + LLNotificationsUtil::add("GenericAlert", fields); + } + } + } + + if(!content.has("experience_keys")) + { + LL_WARNS() << "LLFloaterExperienceProfile::onSaveComplete called with bad content" << LL_ENDL; + return; + } + + const LLSD& experiences = content["experience_keys"]; + + LLSD::array_const_iterator it = experiences.beginArray(); + if(it == experiences.endArray()) + { + LL_WARNS() << "LLFloaterExperienceProfile::onSaveComplete called with empty content" << LL_ENDL; + return; + } + + if(!it->has(LLExperienceCache::EXPERIENCE_ID) || ((*it)[LLExperienceCache::EXPERIENCE_ID].asUUID() != id)) + { + LL_WARNS() << "LLFloaterExperienceProfile::onSaveComplete called with unexpected experience id" << LL_ENDL; + return; + } + + refreshExperience(*it); + LLExperienceCache::insert(*it); + LLExperienceCache::fetch(id, true); + + if(mSaveCompleteAction==VIEW) + { + LLTabContainer* tabs = getChild<LLTabContainer>("tab_container"); + tabs->selectTabByName("panel_experience_info"); + } + else if(mSaveCompleteAction == CLOSE) + { + closeFloater(); + } +} + +void LLFloaterExperienceProfile::changeToView() +{ + if(mForceClose || !mDirty) + { + refreshExperience(mExperienceDetails); + LLTabContainer* tabs = getChild<LLTabContainer>("tab_container"); + + tabs->selectTabByName("panel_experience_info"); + } + else + { + // Bring up view-modal dialog: Save changes? Yes, No, Cancel + LLNotificationsUtil::add("SaveChanges", LLSD(), LLSD(), boost::bind(&LLFloaterExperienceProfile::handleSaveChangesDialog, this, _1, _2, VIEW)); + } +} + +void LLFloaterExperienceProfile::changeToEdit() +{ + LLTabContainer* tabs = getChild<LLTabContainer>("tab_container"); + + tabs->selectTabByName("edit_panel_experience_info"); +} + +void LLFloaterExperienceProfile::onClickLocation() +{ + LLViewerRegion* region = gAgent.getRegion(); + if(region) + { + LLTextBox* child = getChild<LLTextBox>(EDIT TF_SLURL); + mLocationSLURL = LLSLURL(region->getName(), gAgent.getPositionGlobal()).getSLURLString(); + child->setText(mLocationSLURL); + onFieldChanged(); + } +} + +void LLFloaterExperienceProfile::onClickClear() +{ + LLTextBox* child = getChild<LLTextBox>(EDIT TF_SLURL); + mLocationSLURL = ""; + child->setText(getString("empty_slurl")); + onFieldChanged(); +} + +void LLFloaterExperienceProfile::updatePermission( const LLSD& permission ) +{ + if(permission.has("experience")) + { + if(permission["experience"].asUUID() != mExperienceId) + { + return; + } + + std::string str = permission[mExperienceId.asString()]["permission"].asString(); + if(str == "Allow") + { + experienceAllowed(); + } + else if(str == "Block") + { + experienceBlocked(); + } + else if(str == "Forget") + { + experienceForgotten(); + } + } + else + { + setPreferences(permission); + } +} + +void LLFloaterExperienceProfile::experienceAllowed() +{ + LLButton* button=getChild<LLButton>(BTN_ALLOW); + button->setEnabled(FALSE); + + button=getChild<LLButton>(BTN_FORGET); + button->setEnabled(TRUE); + + button=getChild<LLButton>(BTN_BLOCK); + button->setEnabled(TRUE); +} + +void LLFloaterExperienceProfile::experienceForgotten() +{ + LLButton* button=getChild<LLButton>(BTN_ALLOW); + button->setEnabled(TRUE); + + button=getChild<LLButton>(BTN_FORGET); + button->setEnabled(FALSE); + + button=getChild<LLButton>(BTN_BLOCK); + button->setEnabled(TRUE); +} + +void LLFloaterExperienceProfile::experienceBlocked() +{ + LLButton* button=getChild<LLButton>(BTN_ALLOW); + button->setEnabled(TRUE); + + button=getChild<LLButton>(BTN_FORGET); + button->setEnabled(TRUE); + + button=getChild<LLButton>(BTN_BLOCK); + button->setEnabled(FALSE); +} + +void LLFloaterExperienceProfile::onClose( bool app_quitting ) +{ + LLEventPumps::instance().obtain("experience_permission").stopListening(mExperienceId.asString()+"-profile"); + LLFloater::onClose(app_quitting); +} + +void LLFloaterExperienceProfile::updatePackage() +{ + mPackage[LLExperienceCache::NAME] = getChild<LLLineEditor>(EDIT TF_NAME)->getText(); + mPackage[LLExperienceCache::DESCRIPTION] = getChild<LLTextEditor>(EDIT TF_DESC)->getText(); + if(mLocationSLURL.empty()) + { + mPackage[LLExperienceCache::SLURL] = LLStringUtil::null; + } + else + { + mPackage[LLExperienceCache::SLURL] = mLocationSLURL; + } + + mPackage[LLExperienceCache::MATURITY] = getChild<LLComboBox>(EDIT TF_MATURITY)->getSelectedValue().asInteger(); + + LLSD metadata; + + metadata[TF_MRKT] = getChild<LLLineEditor>(EDIT TF_MRKT)->getText(); + metadata[IMG_LOGO] = getChild<LLTextureCtrl>(EDIT IMG_LOGO)->getImageAssetID(); + + LLPointer<LLSDXMLFormatter> formatter = new LLSDXMLFormatter(); + + std::ostringstream os; + if(formatter->format(metadata, os)) + { + mPackage[LLExperienceCache::METADATA]=os.str(); + } + + int properties = mPackage[LLExperienceCache::PROPERTIES].asInteger(); + LLCheckBoxCtrl* enable = getChild<LLCheckBoxCtrl>(EDIT BTN_ENABLE); + if(enable->get()) + { + properties &= ~LLExperienceCache::PROPERTY_DISABLED; + } + else + { + properties |= LLExperienceCache::PROPERTY_DISABLED; + } + + enable = getChild<LLCheckBoxCtrl>(EDIT BTN_PRIVATE); + if(enable->get()) + { + properties |= LLExperienceCache::PROPERTY_PRIVATE; + } + else + { + properties &= ~LLExperienceCache::PROPERTY_PRIVATE; + } + + mPackage[LLExperienceCache::PROPERTIES] = properties; +} + +void LLFloaterExperienceProfile::onPickGroup() +{ + LLFloater* parent_floater = gFloaterView->getParentFloater(this); + + LLFloaterGroupPicker* widget = LLFloaterReg::showTypedInstance<LLFloaterGroupPicker>("group_picker", LLSD(gAgent.getID())); + if (widget) + { + widget->setSelectGroupCallback(boost::bind(&LLFloaterExperienceProfile::setEditGroup, this, _1)); + if (parent_floater) + { + LLRect new_rect = gFloaterView->findNeighboringPosition(parent_floater, widget); + widget->setOrigin(new_rect.mLeft, new_rect.mBottom); + parent_floater->addDependentFloater(widget); + } + } +} + +void LLFloaterExperienceProfile::setEditGroup( LLUUID group_id ) +{ + LLTextBox* child = getChild<LLTextBox>(EDIT TF_GROUP); + std::string value = LLSLURL("group", group_id, "inspect").getSLURLString(); + child->setText(value); + mPackage[LLExperienceCache::GROUP_ID] = group_id; + onFieldChanged(); +} + +void LLFloaterExperienceProfile::onReportExperience() +{ + LLFloaterReporter::showFromExperience(mExperienceId); +} diff --git a/indra/newview/llfloaterexperienceprofile.h b/indra/newview/llfloaterexperienceprofile.h new file mode 100644 index 0000000000..14e033d240 --- /dev/null +++ b/indra/newview/llfloaterexperienceprofile.h @@ -0,0 +1,106 @@ +/** + * @file llfloaterexperienceprofile.h + * @brief llfloaterexperienceprofile and related class definitions + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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_LLFLOATEREXPERIENCEPROFILE_H +#define LL_LLFLOATEREXPERIENCEPROFILE_H + +#include "llfloater.h" +#include "lluuid.h" +#include "llsd.h" + +class LLLayoutPanel; +class LLTextBox; +class LLComboBox; + +class LLFloaterExperienceProfile : public LLFloater +{ + LOG_CLASS(LLFloaterExperienceProfile); +public: + enum PostSaveAction + { + NOTHING, + CLOSE, + VIEW, + }; + + + LLFloaterExperienceProfile(const LLSD& data); + virtual ~LLFloaterExperienceProfile(); + + LLUUID getExperienceId() const { return mExperienceId; } + void setPreferences( const LLSD& content ); + + + void refreshExperience(const LLSD& experience); + void onSaveComplete( const LLSD& content ); + virtual BOOL canClose(); + + virtual void onClose(bool app_quitting); +protected: + void onClickEdit(); + void onClickPermission(const char* permission); + void onClickForget(); + void onClickCancel(); + void onClickSave(); + void onClickLocation(); + void onClickClear(); + void onPickGroup(); + void onFieldChanged(); + void onReportExperience(); + + void setEditGroup(LLUUID group_id); + + void changeToView(); + void changeToEdit(); + + void experienceForgotten(); + void experienceBlocked(); + void experienceAllowed(); + + static void experienceCallback(LLHandle<LLFloaterExperienceProfile> handle, const LLSD& experience); + static bool experiencePermission(LLHandle<LLFloaterExperienceProfile> handle, const LLSD& permission); + + BOOL postBuild(); + bool setMaturityString(U8 maturity, LLTextBox* child, LLComboBox* combo); + bool handleSaveChangesDialog(const LLSD& notification, const LLSD& response, PostSaveAction action); + void doSave( int success_action ); + + void updatePackage(); + + void updatePermission( const LLSD& permission ); + LLUUID mExperienceId; + LLSD mExperienceDetails; + LLSD mPackage; + std::string mLocationSLURL; + int mSaveCompleteAction; + bool mDirty; + bool mForceClose; + bool mPostEdit; // edit experience after opening and updating it +}; + +#endif // LL_LLFLOATEREXPERIENCEPROFILE_H diff --git a/indra/newview/llfloaterexperiences.cpp b/indra/newview/llfloaterexperiences.cpp new file mode 100644 index 0000000000..63f1fab823 --- /dev/null +++ b/indra/newview/llfloaterexperiences.cpp @@ -0,0 +1,376 @@ +/** + * @file llfloaterexperiences.cpp + * @brief LLFloaterExperiences class implementation + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2012, 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" +#include "llfloaterexperiences.h" +#include "llfloaterreg.h" + +#include "llagent.h" +#include "llevents.h" +#include "llexperiencecache.h" +#include "llfloaterregioninfo.h" +#include "llhttpclient.h" +#include "llnotificationsutil.h" +#include "llpanelexperiencelog.h" +#include "llpanelexperiencepicker.h" +#include "llpanelexperiences.h" +#include "lltabcontainer.h" +#include "lltrans.h" +#include "llviewerregion.h" + + +#define SHOW_RECENT_TAB (0) + +class LLExperienceListResponder : public LLHTTPClient::Responder +{ +public: + typedef std::map<std::string, std::string> NameMap; + typedef boost::function<void(LLPanelExperiences*, const LLSD&)> Callback; + LLExperienceListResponder(const LLHandle<LLFloaterExperiences>& parent, NameMap& nameMap, const std::string& errorMessage="ErrorMessage"):mParent(parent),mErrorMessage(errorMessage) + { + mNameMap.swap(nameMap); + } + + Callback mCallback; + LLHandle<LLFloaterExperiences> mParent; + NameMap mNameMap; + const std::string mErrorMessage; + /*virtual*/ void httpSuccess() + { + if(mParent.isDead()) + return; + + LLFloaterExperiences* parent=mParent.get(); + LLTabContainer* tabs = parent->getChild<LLTabContainer>("xp_tabs"); + + NameMap::iterator it = mNameMap.begin(); + while(it != mNameMap.end()) + { + if(getContent().has(it->first)) + { + LLPanelExperiences* tab = (LLPanelExperiences*)tabs->getPanelByName(it->second); + if(tab) + { + const LLSD& ids = getContent()[it->first]; + tab->setExperienceList(ids); + if(!mCallback.empty()) + { + mCallback(tab, getContent()); + } + } + } + ++it; + } + } + + /*virtual*/ void httpFailure() + { + LLSD subs; + subs["ERROR_MESSAGE"] = getReason(); + LLNotificationsUtil::add(mErrorMessage, subs); + } +}; + + + +LLFloaterExperiences::LLFloaterExperiences(const LLSD& data) + :LLFloater(data) +{ +} + +LLPanelExperiences* LLFloaterExperiences::addTab(const std::string& name, bool select) +{ + LLPanelExperiences* newPanel = LLPanelExperiences::create(name); + getChild<LLTabContainer>("xp_tabs")->addTabPanel(LLTabContainer::TabPanelParams(). + panel(newPanel). + label(LLTrans::getString(name)). + select_tab(select)); + + return newPanel; +} + +BOOL LLFloaterExperiences::postBuild() +{ + getChild<LLTabContainer>("xp_tabs")->addTabPanel(new LLPanelExperiencePicker()); + addTab("Allowed_Experiences_Tab", true); + addTab("Blocked_Experiences_Tab", false); + addTab("Admin_Experiences_Tab", false); + addTab("Contrib_Experiences_Tab", false); + LLPanelExperiences* owned = addTab("Owned_Experiences_Tab", false); + owned->setButtonAction("acquire", boost::bind(&LLFloaterExperiences::sendPurchaseRequest, this)); + owned->enableButton(false); +#if SHOW_RECENT_TAB + addTab("Recent_Experiences_Tab", false); +#endif //SHOW_RECENT_TAB + getChild<LLTabContainer>("xp_tabs")->addTabPanel(new LLPanelExperienceLog()); + resizeToTabs(); + + + LLEventPumps::instance().obtain("experience_permission").listen("LLFloaterExperiences", + boost::bind(&LLFloaterExperiences::updatePermissions, this, _1)); + + return TRUE; +} + + +void LLFloaterExperiences::clearFromRecent(const LLSD& ids) +{ +#if SHOW_RECENT_TAB + LLTabContainer* tabs = getChild<LLTabContainer>("xp_tabs"); + + LLPanelExperiences* tab = (LLPanelExperiences*)tabs->getPanelByName("Recent_Experiences_Tab"); + if(!tab) + return; + + tab->removeExperiences(ids); +#endif // SHOW_RECENT_TAB +} + +void LLFloaterExperiences::setupRecentTabs() +{ +#if SHOW_RECENT_TAB + LLTabContainer* tabs = getChild<LLTabContainer>("xp_tabs"); + + LLPanelExperiences* tab = (LLPanelExperiences*)tabs->getPanelByName("Recent_Experiences_Tab"); + if(!tab) + return; + + LLSD recent; + + const LLExperienceCache::cache_t& experiences = LLExperienceCache::getCached(); + + LLExperienceCache::cache_t::const_iterator it = experiences.begin(); + while( it != experiences.end() ) + { + if(!it->second.has(LLExperienceCache::MISSING)) + { + recent.append(it->first); + } + ++it; + } + + tab->setExperienceList(recent); +#endif // SHOW_RECENT_TAB +} + + +void LLFloaterExperiences::resizeToTabs() +{ + const S32 TAB_WIDTH_PADDING = 16; + + LLTabContainer* tabs = getChild<LLTabContainer>("xp_tabs"); + LLRect rect = getRect(); + if(rect.getWidth() < tabs->getTotalTabWidth() + TAB_WIDTH_PADDING) + { + rect.mRight = rect.mLeft + tabs->getTotalTabWidth() + TAB_WIDTH_PADDING; + } + reshape(rect.getWidth(), rect.getHeight(), FALSE); +} + +void LLFloaterExperiences::refreshContents() +{ + setupRecentTabs(); + + LLViewerRegion* region = gAgent.getRegion(); + + if (region) + { + LLExperienceListResponder::NameMap nameMap; + std::string lookup_url=region->getCapability("GetExperiences"); + if(!lookup_url.empty()) + { + nameMap["experiences"]="Allowed_Experiences_Tab"; + nameMap["blocked"]="Blocked_Experiences_Tab"; + LLHTTPClient::get(lookup_url, new LLExperienceListResponder(getDerivedHandle<LLFloaterExperiences>(), nameMap)); + } + + updateInfo("GetAdminExperiences","Admin_Experiences_Tab"); + updateInfo("GetCreatorExperiences","Contrib_Experiences_Tab"); + + lookup_url = region->getCapability("AgentExperiences"); + if(!lookup_url.empty()) + { + nameMap["experience_ids"]="Owned_Experiences_Tab"; + LLExperienceListResponder* responder = new LLExperienceListResponder(getDerivedHandle<LLFloaterExperiences>(), nameMap, "ExperienceAcquireFailed"); + responder->mCallback = boost::bind(&LLFloaterExperiences::checkPurchaseInfo, this, _1, _2); + LLHTTPClient::get(lookup_url, responder); + } + } +} + +void LLFloaterExperiences::onOpen( const LLSD& key ) +{ + LLViewerRegion* region = gAgent.getRegion(); + if(region) + { + if(region->capabilitiesReceived()) + { + refreshContents(); + return; + } + region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterExperiences::refreshContents, this)); + return; + } +} + +bool LLFloaterExperiences::updatePermissions( const LLSD& permission ) +{ + LLTabContainer* tabs = getChild<LLTabContainer>("xp_tabs"); + LLUUID experience; + std::string permission_string; + if(permission.has("experience")) + { + experience = permission["experience"].asUUID(); + permission_string = permission[experience.asString()]["permission"].asString(); + + } + LLPanelExperiences* tab = (LLPanelExperiences*)tabs->getPanelByName("Allowed_Experiences_Tab"); + if(tab) + { + if(permission.has("experiences")) + { + tab->setExperienceList(permission["experiences"]); + } + else if(experience.notNull()) + { + if(permission_string != "Allow") + { + tab->removeExperience(experience); + } + else + { + tab->addExperience(experience); + } + } + } + + tab = (LLPanelExperiences*)tabs->getPanelByName("Blocked_Experiences_Tab"); + if(tab) + { + if(permission.has("blocked")) + { + tab->setExperienceList(permission["blocked"]); + } + else if(experience.notNull()) + { + if(permission_string != "Block") + { + tab->removeExperience(experience); + } + else + { + tab->addExperience(experience); + } + } + } + return false; +} + +void LLFloaterExperiences::onClose( bool app_quitting ) +{ + LLEventPumps::instance().obtain("experience_permission").stopListening("LLFloaterExperiences"); + LLFloater::onClose(app_quitting); +} + +void LLFloaterExperiences::checkPurchaseInfo(LLPanelExperiences* panel, const LLSD& content) const +{ + panel->enableButton(content.has("purchase")); + + LLFloaterExperiences::findInstance()->updateInfo("GetAdminExperiences","Admin_Experiences_Tab"); + LLFloaterExperiences::findInstance()->updateInfo("GetCreatorExperiences","Contrib_Experiences_Tab"); +} + +void LLFloaterExperiences::checkAndOpen(LLPanelExperiences* panel, const LLSD& content) const +{ + checkPurchaseInfo(panel, content); + + // determine new item + const LLSD& response_ids = content["experience_ids"]; + + if (mPrepurchaseIds.size() + 1 == response_ids.size()) + { + // we have a new element + for (LLSD::array_const_iterator it = response_ids.beginArray(); it != response_ids.endArray(); ++it) + { + LLUUID experience_id = it->asUUID(); + if (std::find(mPrepurchaseIds.begin(), mPrepurchaseIds.end(), experience_id) == mPrepurchaseIds.end()) + { + // new element found, open it + LLSD args; + args["experience_id"] = experience_id; + args["edit_experience"] = true; + LLFloaterReg::showInstance("experience_profile", args, true); + break; + } + } + } +} + +void LLFloaterExperiences::updateInfo(std::string experiences, std::string tab) +{ + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + LLExperienceListResponder::NameMap nameMap; + std::string lookup_url = region->getCapability(experiences); + if(!lookup_url.empty()) + { + nameMap["experience_ids"]=tab; + LLHTTPClient::get(lookup_url, new LLExperienceListResponder(getDerivedHandle<LLFloaterExperiences>(), nameMap)); + } + } +} + +void LLFloaterExperiences::sendPurchaseRequest() +{ + LLViewerRegion* region = gAgent.getRegion(); + std::string url = region->getCapability("AgentExperiences"); + if(!url.empty()) + { + LLSD content; + const std::string tab_owned_name = "Owned_Experiences_Tab"; + + // extract ids for experiences that we already have + LLTabContainer* tabs = getChild<LLTabContainer>("xp_tabs"); + LLPanelExperiences* tab_owned = (LLPanelExperiences*)tabs->getPanelByName(tab_owned_name); + mPrepurchaseIds.clear(); + if (tab_owned) + { + tab_owned->getExperienceIdsList(mPrepurchaseIds); + } + + LLExperienceListResponder::NameMap nameMap; + nameMap["experience_ids"] = tab_owned_name; + LLExperienceListResponder* responder = new LLExperienceListResponder(getDerivedHandle<LLFloaterExperiences>(), nameMap, "ExperienceAcquireFailed"); + responder->mCallback = boost::bind(&LLFloaterExperiences::checkAndOpen, this, _1, _2); + LLHTTPClient::post(url, content, responder); + } +} + +LLFloaterExperiences* LLFloaterExperiences::findInstance() +{ + return LLFloaterReg::findTypedInstance<LLFloaterExperiences>("experiences"); +} diff --git a/indra/newview/llfloaterexperiences.h b/indra/newview/llfloaterexperiences.h new file mode 100644 index 0000000000..06fd6c93d6 --- /dev/null +++ b/indra/newview/llfloaterexperiences.h @@ -0,0 +1,62 @@ +/** + * @file llfloaterexperiences.h + * @brief LLFloaterExperiences class definition + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2012, 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_LLFLOATEREXPERIENCES_H +#define LL_LLFLOATEREXPERIENCES_H + +#include "llfloater.h" + +class LLPanelExperiences; + +class LLFloaterExperiences : + public LLFloater +{ +public: + LLFloaterExperiences(const LLSD& data); + virtual void onClose(bool app_quitting); + + virtual void onOpen(const LLSD& key); + static LLFloaterExperiences* findInstance(); +protected: + void clearFromRecent(const LLSD& ids); + void resizeToTabs(); + /*virtual*/ BOOL postBuild(); + void refreshContents(); + void setupRecentTabs(); + LLPanelExperiences* addTab(const std::string& name, bool select); + + bool updatePermissions(const LLSD& permission); + void sendPurchaseRequest(); + void checkPurchaseInfo(LLPanelExperiences* panel, const LLSD& content)const; + void checkAndOpen(LLPanelExperiences* panel, const LLSD& content) const; + void updateInfo(std::string experiences, std::string tab); + +private: + + std::vector<LLUUID> mPrepurchaseIds; +}; + +#endif //LL_LLFLOATEREXPERIENCES_H diff --git a/indra/newview/llfloaterfacebook.cpp b/indra/newview/llfloaterfacebook.cpp index 3a2047cfef..da85d378b2 100644 --- a/indra/newview/llfloaterfacebook.cpp +++ b/indra/newview/llfloaterfacebook.cpp @@ -64,9 +64,9 @@ const std::string DEFAULT_CHECKIN_ICON_URL = "http://map.secondlife.com.s3.amazo const std::string DEFAULT_CHECKIN_QUERY_PARAMETERS = "?sourceid=slshare_checkin&utm_source=facebook&utm_medium=checkin&utm_campaign=slshare"; const std::string DEFAULT_PHOTO_QUERY_PARAMETERS = "?sourceid=slshare_photo&utm_source=facebook&utm_medium=photo&utm_campaign=slshare"; -const S32 MAX_QUALITY = 100; // Max quality value for jpeg images -const S32 MIN_QUALITY = 0; // Min quality value for jpeg images -const S32 TARGET_DATA_SIZE = 95000; // Size of the image (compressed) we're trying to send to Facebook +const S32 MAX_QUALITY = 100; // Max quality value for jpeg images +const S32 MIN_QUALITY = 0; // Min quality value for jpeg images +const S32 TARGET_DATA_SIZE = 950000; // Size of the image (compressed) we're trying to send to Facebook std::string get_map_url() { diff --git a/indra/newview/llfloaterfonttest.cpp b/indra/newview/llfloaterfonttest.cpp index ff27b683b7..ff27b683b7 100755..100644 --- a/indra/newview/llfloaterfonttest.cpp +++ b/indra/newview/llfloaterfonttest.cpp diff --git a/indra/newview/llfloaterfonttest.h b/indra/newview/llfloaterfonttest.h index fc82d7ef51..fc82d7ef51 100755..100644 --- a/indra/newview/llfloaterfonttest.h +++ b/indra/newview/llfloaterfonttest.h diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index 7da65a9a7c..7da65a9a7c 100755..100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h index 8efb3e6461..8efb3e6461 100755..100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index 37774fbc5c..37774fbc5c 100755..100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h index cbaeee7051..cbaeee7051 100755..100644 --- a/indra/newview/llfloatergodtools.h +++ b/indra/newview/llfloatergodtools.h diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp index 7fdba8734a..7fdba8734a 100755..100644 --- a/indra/newview/llfloatergroupinvite.cpp +++ b/indra/newview/llfloatergroupinvite.cpp diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h index f6a3ca5550..f6a3ca5550 100755..100644 --- a/indra/newview/llfloatergroupinvite.h +++ b/indra/newview/llfloatergroupinvite.h diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index dbe7fee108..dbe7fee108 100755..100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h index 1ad27cea19..1ad27cea19 100755..100644 --- a/indra/newview/llfloatergroups.h +++ b/indra/newview/llfloatergroups.h diff --git a/indra/newview/llfloaterhandler.cpp b/indra/newview/llfloaterhandler.cpp index e2160498e9..e2160498e9 100755..100644 --- a/indra/newview/llfloaterhandler.cpp +++ b/indra/newview/llfloaterhandler.cpp diff --git a/indra/newview/llfloaterhandler.h b/indra/newview/llfloaterhandler.h index 5915642d66..5915642d66 100755..100644 --- a/indra/newview/llfloaterhandler.h +++ b/indra/newview/llfloaterhandler.h diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 035eb307c2..62d7efc8b2 100755..100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -82,6 +82,7 @@ void LLFloaterHardwareSettings::refresh() mVideoCardMem = gSavedSettings.getS32("TextureMemory"); mFogRatio = gSavedSettings.getF32("RenderFogRatio"); mProbeHardwareOnStartup = gSavedSettings.getBOOL("ProbeHardwareOnStartup"); + mCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) mFSAASamples); refreshEnabledState(); @@ -149,6 +150,7 @@ void LLFloaterHardwareSettings::refreshEnabledState() BOOL LLFloaterHardwareSettings::postBuild() { childSetAction("OK", onBtnOK, this); + childSetAction("Cancel", onBtnCancel, this); // Don't do this on Mac as their braindead GL versioning // sets this when 8x and 16x are indeed available @@ -179,18 +181,17 @@ void LLFloaterHardwareSettings::apply() void LLFloaterHardwareSettings::cancel() { - gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); - gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); - gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); - gSavedSettings.setF32("RenderGamma", mGamma); - gSavedSettings.setS32("TextureMemory", mVideoCardMem); - gSavedSettings.setF32("RenderFogRatio", mFogRatio); - gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup ); - closeFloater(); } // static +void LLFloaterHardwareSettings::onBtnCancel( void* userdata ) +{ + LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata; + fp->cancel(); +} + +// static void LLFloaterHardwareSettings::onBtnOK( void* userdata ) { LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata; @@ -198,4 +199,14 @@ void LLFloaterHardwareSettings::onBtnOK( void* userdata ) fp->closeFloater(false); } - +void LLFloaterHardwareSettings::onClose(bool app_quitting) +{ + gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); + gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); + gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); + gSavedSettings.setF32("RenderGamma", mGamma); + gSavedSettings.setS32("TextureMemory", mVideoCardMem); + gSavedSettings.setF32("RenderFogRatio", mFogRatio); + gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup ); + gSavedSettings.setBOOL("RenderCompressTextures", mCompressTextures ); +} diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index 626771b1d2..11c27c266d 100755..100644 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -40,6 +40,7 @@ public: /*virtual*/ ~LLFloaterHardwareSettings(); /*virtual*/ BOOL postBuild(); + /*virtual*/ void onClose(bool app_quitting); /// initialize all the callbacks for the menu void initCallbacks(void); @@ -47,6 +48,9 @@ public: /// OK button static void onBtnOK( void* userdata ); + /// Cancel button + static void onBtnCancel( void* userdata ); + //// menu management /// show off our menu @@ -76,6 +80,7 @@ protected: S32 mVideoCardMem; F32 mFogRatio; BOOL mProbeHardwareOnStartup; + BOOL mCompressTextures; private: }; diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp index c0bb213540..c0bb213540 100755..100644 --- a/indra/newview/llfloaterhelpbrowser.cpp +++ b/indra/newview/llfloaterhelpbrowser.cpp diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h index bf4f544a14..bf4f544a14 100755..100644 --- a/indra/newview/llfloaterhelpbrowser.h +++ b/indra/newview/llfloaterhelpbrowser.h diff --git a/indra/newview/llfloaterhoverheight.cpp b/indra/newview/llfloaterhoverheight.cpp index 8908626de6..8908626de6 100755..100644 --- a/indra/newview/llfloaterhoverheight.cpp +++ b/indra/newview/llfloaterhoverheight.cpp diff --git a/indra/newview/llfloaterhoverheight.h b/indra/newview/llfloaterhoverheight.h index ee065bc184..ee065bc184 100755..100644 --- a/indra/newview/llfloaterhoverheight.h +++ b/indra/newview/llfloaterhoverheight.h diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp index 58c76a0b85..58c76a0b85 100755..100644 --- a/indra/newview/llfloaterhud.cpp +++ b/indra/newview/llfloaterhud.cpp diff --git a/indra/newview/llfloaterhud.h b/indra/newview/llfloaterhud.h index e560d6320b..e560d6320b 100755..100644 --- a/indra/newview/llfloaterhud.h +++ b/indra/newview/llfloaterhud.h diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index 52e678ce24..52e678ce24 100755..100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h index d034622c35..d034622c35 100755..100644 --- a/indra/newview/llfloaterimagepreview.h +++ b/indra/newview/llfloaterimagepreview.h diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index ab57e8c170..15b67b905d 100755..100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -261,6 +261,8 @@ BOOL LLFloaterIMContainer::postBuild() mInitialized = true; + mIsFirstOpen = true; + // Add callbacks: // We'll take care of view updates on idle gIdleCallbacks.addFunction(idle, this); @@ -636,14 +638,16 @@ void LLFloaterIMContainer::setVisible(BOOL visible) { // Make sure we have the Nearby Chat present when showing the conversation container nearby_chat = LLFloaterReg::findTypedInstance<LLFloaterIMNearbyChat>("nearby_chat"); - if (nearby_chat == NULL) + if ((nearby_chat == NULL) || mIsFirstOpen) { + mIsFirstOpen = false; // If not found, force the creation of the nearby chat conversation panel // *TODO: find a way to move this to XML as a default panel or something like that LLSD name("nearby_chat"); LLFloaterReg::toggleInstanceOrBringToFront(name); selectConversationPair(LLUUID(NULL), false, false); } + flashConversationItemWidget(mSelectedSession,false); LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(mSelectedSession); @@ -1216,7 +1220,22 @@ void LLFloaterIMContainer::doToSelectedConversation(const std::string& command, { if (selectedIDS.size() > 0) { - LLAvatarActions::viewChatHistory(selectedIDS.front()); + if(conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP) + { + LLFloaterReg::showInstance("preview_conversation", conversationItem->getUUID(), true); + } + else if(conversationItem->getType() == LLConversationItem::CONV_SESSION_AD_HOC) + { + LLConversation* conv = LLConversationLog::instance().findConversation(LLIMModel::getInstance()->findIMSession(conversationItem->getUUID())); + if(conv) + { + LLFloaterReg::showInstance("preview_conversation", conv->getSessionID(), true); + } + } + else + { + LLAvatarActions::viewChatHistory(selectedIDS.front()); + } } } else @@ -1316,6 +1335,15 @@ bool LLFloaterIMContainer::enableContextMenuItem(const LLSD& userdata) { return LLLogChat::isNearbyTranscriptExist(); } + else if (getCurSelectedViewModelItem()->getType() == LLConversationItem::CONV_SESSION_AD_HOC) + { + const LLConversation* conv = LLConversationLog::instance().findConversation(LLIMModel::getInstance()->findIMSession(uuids.front())); + if(conv) + { + return LLLogChat::isAdHocTranscriptExist(conv->getHistoryFileName()); + } + return false; + } else { bool is_group = (getCurSelectedViewModelItem()->getType() == LLConversationItem::CONV_SESSION_GROUP); @@ -1881,22 +1909,26 @@ bool LLFloaterIMContainer::canBanSelectedMember(const LLUUID& participant_uuid) return false; } - if (!gdatap->mMembers.size()) + if (gdatap->mPendingBanRequest) { return false; } - LLGroupMgrGroupData::member_list_t::iterator mi = gdatap->mMembers.find((participant_uuid)); - if (mi == gdatap->mMembers.end()) + if (gdatap->isRoleMemberDataComplete()) { - return false; - } - - LLGroupMemberData* member_data = (*mi).second; - // Is the member an owner? - if ( member_data && member_data->isInRole(gdatap->mOwnerRole) ) - { - return false; + if (gdatap->mMembers.size()) + { + LLGroupMgrGroupData::member_list_t::iterator mi = gdatap->mMembers.find((participant_uuid)); + if (mi != gdatap->mMembers.end()) + { + LLGroupMemberData* member_data = (*mi).second; + // Is the member an owner? + if (member_data && member_data->isInRole(gdatap->mOwnerRole)) + { + return false; + } + } + } } if( gAgent.hasPowerInGroup(group_uuid, GP_ROLE_REMOVE_MEMBER) && @@ -1924,20 +1956,8 @@ void LLFloaterIMContainer::banSelectedMember(const LLUUID& participant_uuid) LL_WARNS("Groups") << "Unable to get group data for group " << group_uuid << LL_ENDL; return; } - std::vector<LLUUID> ids; - ids.push_back(participant_uuid); - - LLGroupBanData ban_data; - gdatap->createBanEntry(participant_uuid, ban_data); - LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_POST, group_uuid, LLGroupMgr::BAN_CREATE, ids); - LLGroupMgr::getInstance()->sendGroupMemberEjects(group_uuid, ids); - LLGroupMgr::getInstance()->sendGroupMembersRequest(group_uuid); - LLSD args; - std::string name; - gCacheName->getFullName(participant_uuid, name); - args["AVATAR_NAME"] = name; - args["GROUP_NAME"] = gdatap->mName; - LLNotifications::instance().add(LLNotification::Params("EjectAvatarFromGroup").substitutions(args)); + + gdatap->banMemberById(participant_uuid); } diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index f21c0b9947..60cef83d9a 100755..100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -193,6 +193,8 @@ private: bool mInitialized; bool mIsFirstLaunch; + bool mIsFirstOpen; + LLUUID mSelectedSession; std::string mGeneralTitle; diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp index 7a989806a1..7a989806a1 100755..100644 --- a/indra/newview/llfloaterimnearbychat.cpp +++ b/indra/newview/llfloaterimnearbychat.cpp diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h index f0daacd6a9..f0daacd6a9 100755..100644 --- a/indra/newview/llfloaterimnearbychat.h +++ b/indra/newview/llfloaterimnearbychat.h diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index 1f85c5ac1b..1f85c5ac1b 100755..100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp diff --git a/indra/newview/llfloaterimnearbychathandler.h b/indra/newview/llfloaterimnearbychathandler.h index 5e6f8cde30..5e6f8cde30 100755..100644 --- a/indra/newview/llfloaterimnearbychathandler.h +++ b/indra/newview/llfloaterimnearbychathandler.h diff --git a/indra/newview/llfloaterimnearbychatlistener.cpp b/indra/newview/llfloaterimnearbychatlistener.cpp index 5a5f6c72c8..5a5f6c72c8 100755..100644 --- a/indra/newview/llfloaterimnearbychatlistener.cpp +++ b/indra/newview/llfloaterimnearbychatlistener.cpp diff --git a/indra/newview/llfloaterimnearbychatlistener.h b/indra/newview/llfloaterimnearbychatlistener.h index 1470a6dc1e..1470a6dc1e 100755..100644 --- a/indra/newview/llfloaterimnearbychatlistener.h +++ b/indra/newview/llfloaterimnearbychatlistener.h diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index fc7fcf3ab9..fc7fcf3ab9 100755..100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index 357b635594..357b635594 100755..100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h index e7b05a584b..e7b05a584b 100755..100644 --- a/indra/newview/llfloaterimsessiontab.h +++ b/indra/newview/llfloaterimsessiontab.h diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp index 10088d20c2..10088d20c2 100755..100644 --- a/indra/newview/llfloaterinspect.cpp +++ b/indra/newview/llfloaterinspect.cpp diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h index 44381eac96..44381eac96 100755..100644 --- a/indra/newview/llfloaterinspect.h +++ b/indra/newview/llfloaterinspect.h diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp index 9b9b90e521..9b9b90e521 100755..100644 --- a/indra/newview/llfloaterinventory.cpp +++ b/indra/newview/llfloaterinventory.cpp diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h index 823c4903b4..823c4903b4 100755..100644 --- a/indra/newview/llfloaterinventory.h +++ b/indra/newview/llfloaterinventory.h diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index b7fff6cae3..ee3d633dd0 100755..100644 --- a/indra/newview/llfloaterjoystick.cpp +++ b/indra/newview/llfloaterjoystick.cpp @@ -326,7 +326,21 @@ void LLFloaterJoystick::onClickOK(void *joy_panel) } } +void LLFloaterJoystick::onClickCloseBtn(bool app_quitting) +{ + cancel(); + closeFloater(app_quitting); +} + void LLFloaterJoystick::setSNDefaults() { LLViewerJoystick::getInstance()->setSNDefaults(); } + +void LLFloaterJoystick::onClose(bool app_quitting) +{ + if (app_quitting) + { + cancel(); + } +} diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h index 9c3752540d..a1b5951389 100755..100644 --- a/indra/newview/llfloaterjoystick.h +++ b/indra/newview/llfloaterjoystick.h @@ -45,6 +45,11 @@ public: virtual void draw(); static void setSNDefaults(); +protected: + + void onClose(bool app_quitting); + void onClickCloseBtn(bool app_quitting); + private: LLFloaterJoystick(const LLSD& data); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 5ebd25d228..f9fd5069af 100755..100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -75,9 +75,14 @@ #include "llviewercontrol.h" #include "roles_constants.h" #include "lltrans.h" +#include "llpanelexperiencelisteditor.h" +#include "llpanelexperiencepicker.h" +#include "llexperiencecache.h" #include "llgroupactions.h" +const F64 COVENANT_REFRESH_TIME_SEC = 60.0f; + static std::string OWNER_ONLINE = "0"; static std::string OWNER_OFFLINE = "1"; static std::string OWNER_GROUP = "2"; @@ -110,6 +115,28 @@ public: } }; + +class LLPanelLandExperiences + : public LLPanel +{ +public: + LLPanelLandExperiences(LLSafeHandle<LLParcelSelection>& parcelp); + virtual BOOL postBuild(); + void refresh(); + + void experienceAdded(const LLUUID& id, U32 xp_type, U32 access_type); + void experienceRemoved(const LLUUID& id, U32 access_type); +protected: + LLPanelExperienceListEditor* setupList( const char* control_name, U32 xp_type, U32 access_type ); + void refreshPanel(LLPanelExperienceListEditor* panel, U32 xp_type); + + LLSafeHandle<LLParcelSelection>& mParcel; + + + LLPanelExperienceListEditor* mAllowed; + LLPanelExperienceListEditor* mBlocked; +}; + // inserts maturity info(icon and text) into target textbox // names_floater - pointer to floater which contains strings with maturity icons filenames // str_to_parse is string in format "txt1[MATURITY]txt2" where maturity icon and text will be inserted instead of [MATURITY] @@ -248,6 +275,7 @@ LLFloaterLand::LLFloaterLand(const LLSD& seed) mFactoryMap["land_audio_panel"] = LLCallbackMap(createPanelLandAudio, this); mFactoryMap["land_media_panel"] = LLCallbackMap(createPanelLandMedia, this); mFactoryMap["land_access_panel"] = LLCallbackMap(createPanelLandAccess, this); + mFactoryMap["land_experiences_panel"] = LLCallbackMap(createPanelLandExperiences, this); sObserver = new LLParcelSelectionObserver(); LLViewerParcelMgr::getInstance()->addObserver( sObserver ); @@ -288,6 +316,7 @@ void LLFloaterLand::refresh() mPanelMedia->refresh(); mPanelAccess->refresh(); mPanelCovenant->refresh(); + mPanelExperiences->refresh(); } @@ -348,6 +377,15 @@ void* LLFloaterLand::createPanelLandAccess(void* data) return self->mPanelAccess; } +// static +void* LLFloaterLand::createPanelLandExperiences(void* data) +{ + LLFloaterLand* self = (LLFloaterLand*)data; + self->mPanelExperiences = new LLPanelLandExperiences(self->mParcel); + return self->mPanelExperiences; +} + + //--------------------------------------------------------------------------- // LLPanelLandGeneral //--------------------------------------------------------------------------- @@ -2401,40 +2439,42 @@ void LLPanelLandAccess::refresh() mListAccess->clearSortOrder(); mListAccess->deleteAllItems(); S32 count = parcel->mAccessList.size(); + getChild<LLUICtrl>("AllowedText")->setTextArg("[COUNT]", llformat("%d",count)); + getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count)); getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST)); - for (access_map_const_iterator cit = parcel->mAccessList.begin(); + for (LLAccessEntry::map::const_iterator cit = parcel->mAccessList.begin(); cit != parcel->mAccessList.end(); ++cit) { const LLAccessEntry& entry = (*cit).second; - std::string suffix; + std::string prefix; if (entry.mTime != 0) { LLStringUtil::format_map_t args; S32 now = time(NULL); S32 seconds = entry.mTime - now; if (seconds < 0) seconds = 0; - suffix.assign(" ("); + prefix.assign(" ("); if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); std::string buf = parent_floater->getString ("Minutes", args); - suffix.append(buf); + prefix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + parent_floater->getString("Minute")); + prefix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); std::string buf = parent_floater->getString ("Seconds", args); - suffix.append(buf); + prefix.append(buf); } - suffix.append(" " + parent_floater->getString("Remaining") + ")"); + prefix.append(" " + parent_floater->getString("Remaining") + ") "); } - mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); + mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix); } mListAccess->sortByName(TRUE); } @@ -2446,41 +2486,42 @@ void LLPanelLandAccess::refresh() mListBanned->clearSortOrder(); mListBanned->deleteAllItems(); S32 count = parcel->mBanList.size(); + getChild<LLUICtrl>("BanCheck")->setTextArg("[COUNT]", llformat("%d",count)); getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count)); getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST)); - for (access_map_const_iterator cit = parcel->mBanList.begin(); + for (LLAccessEntry::map::const_iterator cit = parcel->mBanList.begin(); cit != parcel->mBanList.end(); ++cit) { const LLAccessEntry& entry = (*cit).second; - std::string suffix; + std::string prefix; if (entry.mTime != 0) { LLStringUtil::format_map_t args; S32 now = time(NULL); S32 seconds = entry.mTime - now; if (seconds < 0) seconds = 0; - suffix.assign(" ("); + prefix.assign(" ("); if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); std::string buf = parent_floater->getString ("Minutes", args); - suffix.append(buf); + prefix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + parent_floater->getString("Minute")); + prefix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); std::string buf = parent_floater->getString ("Seconds", args); - suffix.append(buf); + prefix.append(buf); } - suffix.append(" " + parent_floater->getString("Remaining") + ")"); + prefix.append(" " + parent_floater->getString("Remaining") + ") "); } - mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); + mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix); } mListBanned->sortByName(TRUE); } @@ -2883,14 +2924,23 @@ void LLPanelLandAccess::onClickRemoveBanned(void* data) //--------------------------------------------------------------------------- LLPanelLandCovenant::LLPanelLandCovenant(LLParcelSelectionHandle& parcel) : LLPanel(), - mParcel(parcel) -{ + mParcel(parcel), + mNextUpdateTime(0) +{ } LLPanelLandCovenant::~LLPanelLandCovenant() { } +BOOL LLPanelLandCovenant::postBuild() +{ + mLastRegionID = LLUUID::null; + mNextUpdateTime = 0; + + return TRUE; +} + // virtual void LLPanelLandCovenant::refresh() { @@ -2937,14 +2987,23 @@ void LLPanelLandCovenant::refresh() changeable_clause->setText(getString("can_not_change")); } } - - // send EstateCovenantInfo message - LLMessageSystem *msg = gMessageSystem; - msg->newMessage("EstateCovenantRequest"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); - msg->sendReliable(region->getHost()); + + if (mLastRegionID != region->getRegionID() + || mNextUpdateTime < LLTimer::getElapsedSeconds()) + { + // Request Covenant Info + // Note: LLPanelLandCovenant doesn't change Covenant's content and any + // changes made by Estate floater should be requested by Estate floater + LLMessageSystem *msg = gMessageSystem; + msg->newMessage("EstateCovenantRequest"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); + msg->sendReliable(region->getHost()); + + mLastRegionID = region->getRegionID(); + mNextUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC; + } } // static @@ -3039,3 +3098,103 @@ void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_fl target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false); target_textbox->appendText(text_after_rating, false); } + +LLPanelLandExperiences::LLPanelLandExperiences( LLSafeHandle<LLParcelSelection>& parcelp ) + : mParcel(parcelp) +{ + +} + + +BOOL LLPanelLandExperiences::postBuild() +{ + mAllowed = setupList("panel_allowed", EXPERIENCE_KEY_TYPE_ALLOWED, AL_ALLOW_EXPERIENCE); + mBlocked = setupList("panel_blocked", EXPERIENCE_KEY_TYPE_BLOCKED, AL_BLOCK_EXPERIENCE); + + // only non-grid-wide experiences + mAllowed->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithProperty, _1, LLExperienceCache::PROPERTY_GRID)); + + // no privileged ones + mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithoutProperties, _1, LLExperienceCache::PROPERTY_PRIVILEGED|LLExperienceCache::PROPERTY_GRID)); + + getChild<LLLayoutPanel>("trusted_layout_panel")->setVisible(FALSE); + getChild<LLTextBox>("experiences_help_text")->setVisible(FALSE); + getChild<LLTextBox>("allowed_text_help")->setText(getString("allowed_parcel_text")); + getChild<LLTextBox>("blocked_text_help")->setText(getString("blocked_parcel_text")); + + return LLPanel::postBuild(); +} + +LLPanelExperienceListEditor* LLPanelLandExperiences::setupList( const char* control_name, U32 xp_type, U32 access_type ) +{ + LLPanelExperienceListEditor* child = findChild<LLPanelExperienceListEditor>(control_name); + if(child) + { + child->getChild<LLTextBox>("text_name")->setText(child->getString(control_name)); + child->setMaxExperienceIDs(PARCEL_MAX_EXPERIENCE_LIST); + child->setAddedCallback(boost::bind(&LLPanelLandExperiences::experienceAdded, this, _1, xp_type, access_type)); + child->setRemovedCallback(boost::bind(&LLPanelLandExperiences::experienceRemoved, this, _1, access_type)); + } + + return child; +} + +void LLPanelLandExperiences::experienceAdded( const LLUUID& id, U32 xp_type, U32 access_type ) +{ + LLParcel* parcel = mParcel->getParcel(); + if (parcel) + { + parcel->setExperienceKeyType(id, xp_type); + LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(access_type); + refresh(); + } +} + +void LLPanelLandExperiences::experienceRemoved( const LLUUID& id, U32 access_type ) +{ + LLParcel* parcel = mParcel->getParcel(); + if (parcel) + { + parcel->setExperienceKeyType(id, EXPERIENCE_KEY_TYPE_NONE); + LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(access_type); + refresh(); + } +} + +void LLPanelLandExperiences::refreshPanel(LLPanelExperienceListEditor* panel, U32 xp_type) +{ + LLParcel *parcel = mParcel->getParcel(); + + // Display options + if (panel == NULL) + { + return; + } + if (parcel == NULL) + { + // disable the panel + panel->setEnabled(FALSE); + panel->setExperienceIds(LLSD::emptyArray()); + } + else + { + // enable the panel + panel->setEnabled(TRUE); + LLAccessEntry::map entries = parcel->getExperienceKeysByType(xp_type); + LLAccessEntry::map::iterator it = entries.begin(); + LLSD ids = LLSD::emptyArray(); + for (/**/; it != entries.end(); ++it) + { + ids.append(it->second.mID); + } + panel->setExperienceIds(ids); + panel->setReadonly(!LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS)); + panel->refreshExperienceCounter(); + } +} + +void LLPanelLandExperiences::refresh() +{ + refreshPanel(mAllowed, EXPERIENCE_KEY_TYPE_ALLOWED); + refreshPanel(mBlocked, EXPERIENCE_KEY_TYPE_BLOCKED); +} diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index 1d9bd33720..0540ddb880 100755..100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -66,6 +66,7 @@ class LLPanelLandBan; class LLPanelLandRenters; class LLPanelLandCovenant; class LLParcel; +class LLPanelLandExperiences; class LLFloaterLand : public LLFloater @@ -101,6 +102,7 @@ protected: static void* createPanelLandAudio(void* data); static void* createPanelLandMedia(void* data); static void* createPanelLandAccess(void* data); + static void* createPanelLandExperiences(void* data); static void* createPanelLandBan(void* data); @@ -116,6 +118,7 @@ protected: LLPanelLandMedia* mPanelMedia; LLPanelLandAccess* mPanelAccess; LLPanelLandCovenant* mPanelCovenant; + LLPanelLandExperiences* mPanelExperiences; LLSafeHandle<LLParcelSelection> mParcel; @@ -391,6 +394,7 @@ class LLPanelLandCovenant public: LLPanelLandCovenant(LLSafeHandle<LLParcelSelection>& parcelp); virtual ~LLPanelLandCovenant(); + virtual BOOL postBuild(); void refresh(); static void updateCovenantText(const std::string& string); static void updateEstateName(const std::string& name); @@ -399,6 +403,10 @@ public: protected: LLSafeHandle<LLParcelSelection>& mParcel; + +private: + LLUUID mLastRegionID; + F64 mNextUpdateTime; //seconds since client start }; #endif diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp index f34760a6bf..f34760a6bf 100755..100644 --- a/indra/newview/llfloaterlandholdings.cpp +++ b/indra/newview/llfloaterlandholdings.cpp diff --git a/indra/newview/llfloaterlandholdings.h b/indra/newview/llfloaterlandholdings.h index d1d510bb40..d1d510bb40 100755..100644 --- a/indra/newview/llfloaterlandholdings.h +++ b/indra/newview/llfloaterlandholdings.h diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 333ff863e5..333ff863e5 100755..100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h index ff2fb20535..ff2fb20535 100755..100644 --- a/indra/newview/llfloatermap.h +++ b/indra/newview/llfloatermap.h diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp new file mode 100644 index 0000000000..b2d36479cd --- /dev/null +++ b/indra/newview/llfloatermarketplacelistings.cpp @@ -0,0 +1,949 @@ +/** + * @file llfloatermarketplacelistings.cpp + * @brief Implementation of the marketplace listings floater and panels + * @author merov@lindenlab.com + * + * $LicenseInfo:firstyear=2001&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" + +#include "llfloatermarketplacelistings.h" + +#include "llfloaterreg.h" +#include "llfiltereditor.h" +#include "llfolderview.h" +#include "llinventorybridge.h" +#include "llinventorymodelbackgroundfetch.h" +#include "llinventoryobserver.h" +#include "llinventoryfunctions.h" +#include "llmarketplacefunctions.h" +#include "llnotificationhandler.h" +#include "llnotificationmanager.h" +#include "llnotificationsutil.h" +#include "llsidepaneliteminfo.h" +#include "lltextbox.h" +#include "lltrans.h" + +///---------------------------------------------------------------------------- +/// LLPanelMarketplaceListings +///---------------------------------------------------------------------------- + +static LLPanelInjector<LLPanelMarketplaceListings> t_panel_status("llpanelmarketplacelistings"); + +LLPanelMarketplaceListings::LLPanelMarketplaceListings() +: mRootFolder(NULL) +, mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME) +, mFilterListingFoldersOnly(false) +{ + mCommitCallbackRegistrar.add("Marketplace.ViewSort.Action", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemClicked, this, _2)); + mEnableCallbackRegistrar.add("Marketplace.ViewSort.CheckItem", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemCheck, this, _2)); +} + +BOOL LLPanelMarketplaceListings::postBuild() +{ + childSetAction("add_btn", boost::bind(&LLPanelMarketplaceListings::onAddButtonClicked, this)); + childSetAction("audit_btn", boost::bind(&LLPanelMarketplaceListings::onAuditButtonClicked, this)); + + mFilterEditor = getChild<LLFilterEditor>("filter_editor"); + mFilterEditor->setCommitCallback(boost::bind(&LLPanelMarketplaceListings::onFilterEdit, this, _2)); + + mAuditBtn = getChild<LLButton>("audit_btn"); + mAuditBtn->setEnabled(FALSE); + + return LLPanel::postBuild(); +} + +BOOL LLPanelMarketplaceListings::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + BOOL handled = (handled_view != NULL); + // Special case the drop zone + if (handled && (handled_view->getName() == "marketplace_drop_zone")) + { + LLFolderView* root_folder = getRootFolder(); + handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + } + return handled; +} + +void LLPanelMarketplaceListings::buildAllPanels() +{ + // Build the All panel first + LLInventoryPanel* panel_all_items; + panel_all_items = buildInventoryPanel("All Items", "panel_marketplace_listings_inventory.xml"); + panel_all_items->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel_all_items->getFilter().markDefault(); + + // Build the other panels + LLInventoryPanel* panel; + panel = buildInventoryPanel("Active Items", "panel_marketplace_listings_listed.xml"); + panel->getFilter().setFilterMarketplaceActiveFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + panel = buildInventoryPanel("Inactive Items", "panel_marketplace_listings_unlisted.xml"); + panel->getFilter().setFilterMarketplaceInactiveFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + panel = buildInventoryPanel("Unassociated Items", "panel_marketplace_listings_unassociated.xml"); + panel->getFilter().setFilterMarketplaceUnassociatedFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + + // Set the tab panel + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + tabs_panel->setCommitCallback(boost::bind(&LLPanelMarketplaceListings::onTabChange, this)); + tabs_panel->selectTabPanel(panel_all_items); // All panel selected by default + mRootFolder = panel_all_items->getRootFolder(); // Keep the root of the all panel + + // Set the default sort order + setSortOrder(gSavedSettings.getU32("MarketplaceListingsSortOrder")); +} + +LLInventoryPanel* LLPanelMarketplaceListings::buildInventoryPanel(const std::string& childname, const std::string& filename) +{ + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = LLUICtrlFactory::createFromFile<LLInventoryPanel>(filename, tabs_panel, LLInventoryPanel::child_registry_t::instance()); + llassert(panel != NULL); + + // Set sort order and callbacks + panel = getChild<LLInventoryPanel>(childname); + panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME); + panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2)); + + return panel; +} + +void LLPanelMarketplaceListings::setSortOrder(U32 sort_order) +{ + mSortOrder = sort_order; + gSavedSettings.setU32("MarketplaceListingsSortOrder", sort_order); + + // Set each panel with that sort order + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items"); + panel->setSortOrder(mSortOrder); +} + +void LLPanelMarketplaceListings::onFilterEdit(const std::string& search_string) +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + // Save filter string (needed when switching tabs) + mFilterSubString = search_string; + // Set filter string on active panel + panel->setFilterSubString(mFilterSubString); + } +} + +void LLPanelMarketplaceListings::draw() +{ + if (LLMarketplaceData::instance().checkDirtyCount()) + { + update_all_marketplace_count(); + } + + // Get the audit button enabled only after the whole inventory is fetched + if (!mAuditBtn->getEnabled()) + { + mAuditBtn->setEnabled(LLInventoryModelBackgroundFetch::instance().isEverythingFetched()); + } + + LLPanel::draw(); +} + +void LLPanelMarketplaceListings::onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action) +{ + panel->onSelectionChange(items, user_action); +} + +bool LLPanelMarketplaceListings::allowDropOnRoot() +{ + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + return (panel ? panel->getAllowDropOnRoot() : false); +} + +void LLPanelMarketplaceListings::onTabChange() +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + // If the panel doesn't allow drop on root, it doesn't allow the creation of new folder on root either + LLButton* add_btn = getChild<LLButton>("add_btn"); + add_btn->setEnabled(panel->getAllowDropOnRoot()); + + // Set filter string on active panel + panel->setFilterSubString(mFilterSubString); + + // Show/hide the drop zone and resize the inventory tabs panel accordingly + LLPanel* drop_zone = (LLPanel*)getChild<LLPanel>("marketplace_drop_zone"); + bool drop_zone_visible = drop_zone->getVisible(); + if (drop_zone_visible != panel->getAllowDropOnRoot()) + { + LLPanel* tabs = (LLPanel*)getChild<LLPanel>("tab_container_panel"); + S32 delta_height = drop_zone->getRect().getHeight(); + delta_height = (drop_zone_visible ? delta_height : -delta_height); + tabs->reshape(tabs->getRect().getWidth(),tabs->getRect().getHeight() + delta_height); + tabs->translate(0,-delta_height); + } + drop_zone->setVisible(panel->getAllowDropOnRoot()); + } +} + +void LLPanelMarketplaceListings::onAddButtonClicked() +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + llassert(marketplacelistings_id.notNull()); + LLFolderType::EType preferred_type = LLFolderType::lookup("category"); + LLUUID category = gInventory.createNewCategory(marketplacelistings_id, preferred_type, LLStringUtil::null); + gInventory.notifyObservers(); + panel->setSelectionByID(category, TRUE); + panel->getRootFolder()->setNeedsAutoRename(TRUE); + } +} + +void LLPanelMarketplaceListings::onAuditButtonClicked() +{ + LLSD data(LLSD::emptyMap()); + LLFloaterReg::showInstance("marketplace_validation", data); +} + +void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + // Sort options + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) + { + // We're making sort options exclusive, default is SO_FOLDERS_BY_NAME + if (chosen_item == "sort_by_stock_amount") + { + setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); + } + else if (chosen_item == "sort_by_name") + { + setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME); + } + else if (chosen_item == "sort_by_recent") + { + setSortOrder(LLInventoryFilter::SO_DATE); + } + } + // Filter option + else if (chosen_item == "show_only_listing_folders") + { + mFilterListingFoldersOnly = !mFilterListingFoldersOnly; + // Set each panel with that filter flag + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + } +} + +bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) + { + if (chosen_item == "sort_by_stock_amount") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); + } + else if (chosen_item == "sort_by_name") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); + } + else if (chosen_item == "sort_by_recent") + { + return (mSortOrder & LLInventoryFilter::SO_DATE); + } + } + else if (chosen_item == "show_only_listing_folders") + { + return mFilterListingFoldersOnly; + } + return false; +} + +///---------------------------------------------------------------------------- +/// LLMarketplaceListingsAddedObserver helper class +///---------------------------------------------------------------------------- + +class LLMarketplaceListingsAddedObserver : public LLInventoryCategoryAddedObserver +{ +public: + LLMarketplaceListingsAddedObserver(LLFloaterMarketplaceListings * marketplace_listings_floater) + : LLInventoryCategoryAddedObserver() + , mMarketplaceListingsFloater(marketplace_listings_floater) + { + } + + void done() + { + for (cat_vec_t::iterator it = mAddedCategories.begin(); it != mAddedCategories.end(); ++it) + { + LLViewerInventoryCategory* added_category = *it; + + LLFolderType::EType added_category_type = added_category->getPreferredType(); + + if (added_category_type == LLFolderType::FT_MARKETPLACE_LISTINGS) + { + mMarketplaceListingsFloater->initializeMarketPlace(); + } + } + } + +private: + LLFloaterMarketplaceListings * mMarketplaceListingsFloater; +}; + +///---------------------------------------------------------------------------- +/// LLFloaterMarketplaceListings +///---------------------------------------------------------------------------- + +LLFloaterMarketplaceListings::LLFloaterMarketplaceListings(const LLSD& key) +: LLFloater(key) +, mCategoriesObserver(NULL) +, mCategoryAddedObserver(NULL) +, mRootFolderId(LLUUID::null) +, mInventoryStatus(NULL) +, mInventoryInitializationInProgress(NULL) +, mInventoryPlaceholder(NULL) +, mInventoryText(NULL) +, mInventoryTitle(NULL) +, mPanelListings(NULL) +, mPanelListingsSet(false) +{ +} + +LLFloaterMarketplaceListings::~LLFloaterMarketplaceListings() +{ + if (mCategoriesObserver && gInventory.containsObserver(mCategoriesObserver)) + { + gInventory.removeObserver(mCategoriesObserver); + } + delete mCategoriesObserver; + + if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver)) + { + gInventory.removeObserver(mCategoryAddedObserver); + } + delete mCategoryAddedObserver; +} + +BOOL LLFloaterMarketplaceListings::postBuild() +{ + mInventoryStatus = getChild<LLTextBox>("marketplace_status"); + mInventoryInitializationInProgress = getChild<LLView>("initialization_progress_indicator"); + mInventoryPlaceholder = getChild<LLView>("marketplace_listings_inventory_placeholder_panel"); + mInventoryText = mInventoryPlaceholder->getChild<LLTextBox>("marketplace_listings_inventory_placeholder_text"); + mInventoryTitle = mInventoryPlaceholder->getChild<LLTextBox>("marketplace_listings_inventory_placeholder_title"); + + mPanelListings = static_cast<LLPanelMarketplaceListings*>(getChild<LLUICtrl>("panel_marketplace_listing")); + + LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLFloaterMarketplaceListings::onFocusReceived, this)); + + // Observe category creation to catch marketplace listings creation (moot if already existing) + mCategoryAddedObserver = new LLMarketplaceListingsAddedObserver(this); + gInventory.addObserver(mCategoryAddedObserver); + + // Fetch aggressively so we can interact with listings right onOpen() + fetchContents(); + + return TRUE; +} + +void LLFloaterMarketplaceListings::onClose(bool app_quitting) +{ +} + +void LLFloaterMarketplaceListings::onOpen(const LLSD& key) +{ + // + // Initialize the Market Place or go update the marketplace listings + // + if (LLMarketplaceData::instance().getSLMStatus() <= MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE) + { + initializeMarketPlace(); + } + else + { + updateView(); + } +} + +void LLFloaterMarketplaceListings::onFocusReceived() +{ + updateView(); +} + +void LLFloaterMarketplaceListings::fetchContents() +{ + if (mRootFolderId.notNull() && + (LLMarketplaceData::instance().getSLMDataFetched() != MarketplaceFetchCodes::MARKET_FETCH_LOADING) && + (LLMarketplaceData::instance().getSLMDataFetched() != MarketplaceFetchCodes::MARKET_FETCH_DONE)) + { + LLMarketplaceData::instance().setDataFetchedSignal(boost::bind(&LLFloaterMarketplaceListings::updateView, this)); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_LOADING); + LLInventoryModelBackgroundFetch::instance().start(mRootFolderId); + LLMarketplaceData::instance().getSLMListings(); + } +} + +void LLFloaterMarketplaceListings::setRootFolder() +{ + if ((LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_MERCHANT) && + (LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT)) + { + // If we are *not* a merchant or we have no market place connection established yet, do nothing + return; + } + + // We are a merchant. Get the Marketplace listings folder, create it if needs be. + LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, true); + if (marketplacelistings_id.isNull()) + { + // We should never get there unless the inventory fails badly + LL_ERRS("SLM") << "Inventory problem: failure to create the marketplace listings folder for a merchant!" << LL_ENDL; + return; + } + + // No longer need to observe new category creation + if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver)) + { + gInventory.removeObserver(mCategoryAddedObserver); + delete mCategoryAddedObserver; + mCategoryAddedObserver = NULL; + } + llassert(!mCategoryAddedObserver); + + if (marketplacelistings_id == mRootFolderId) + { + LL_WARNS("SLM") << "Inventory warning: Marketplace listings folder already set" << LL_ENDL; + return; + } + + mRootFolderId = marketplacelistings_id; +} + +void LLFloaterMarketplaceListings::setPanels() +{ + if (mRootFolderId.isNull()) + { + return; + } + + // Consolidate Marketplace listings + // We shouldn't have to do that but with a client/server system relying on a "well known folder" convention, + // things get messy and conventions get broken down eventually + gInventory.consolidateForType(mRootFolderId, LLFolderType::FT_MARKETPLACE_LISTINGS); + + // Now that we do have a non NULL root, we can build the inventory panels + mPanelListings->buildAllPanels(); + + // Create observer for marketplace listings modifications + if (!mCategoriesObserver) + { + mCategoriesObserver = new LLInventoryCategoriesObserver(); + llassert(mCategoriesObserver); + gInventory.addObserver(mCategoriesObserver); + mCategoriesObserver->addCategory(mRootFolderId, boost::bind(&LLFloaterMarketplaceListings::onChanged, this)); + } + + // Get the content of the marketplace listings folder + fetchContents(); + + // Flag that this is done + mPanelListingsSet = true; +} + +void LLFloaterMarketplaceListings::initializeMarketPlace() +{ + LLMarketplaceData::instance().initializeSLM(boost::bind(&LLFloaterMarketplaceListings::updateView, this)); +} + +S32 LLFloaterMarketplaceListings::getFolderCount() +{ + if (mPanelListings && mRootFolderId.notNull()) + { + LLInventoryModel::cat_array_t * cats; + LLInventoryModel::item_array_t * items; + gInventory.getDirectDescendentsOf(mRootFolderId, cats, items); + + return (cats->size() + items->size()); + } + else + { + return 0; + } +} + +void LLFloaterMarketplaceListings::setStatusString(const std::string& statusString) +{ + mInventoryStatus->setText(statusString); +} + +void LLFloaterMarketplaceListings::updateView() +{ + U32 mkt_status = LLMarketplaceData::instance().getSLMStatus(); + bool is_merchant = (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MERCHANT) || (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT); + U32 data_fetched = LLMarketplaceData::instance().getSLMDataFetched(); + + // Get or create the root folder if we are a merchant and it hasn't been done already + if (mRootFolderId.isNull() && is_merchant) + { + setRootFolder(); + } + + // Update the bottom initializing status and progress dial if we are initializing or if we're a merchant and still loading + if ((mkt_status <= MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING) || (is_merchant && (data_fetched <= MarketplaceFetchCodes::MARKET_FETCH_LOADING)) ) + { + // Just show the loading indicator in that case and fetch the data (fetch will be skipped if it's already loading) + mInventoryInitializationInProgress->setVisible(true); + mPanelListings->setVisible(FALSE); + fetchContents(); + return; + } + else + { + mInventoryInitializationInProgress->setVisible(false); + } + + // Update the middle portion : tabs or messages + if (getFolderCount() > 0) + { + if (!mPanelListingsSet) + { + // We need to rebuild the tabs cleanly the first time we make them visible + setPanels(); + } + mPanelListings->setVisible(TRUE); + mInventoryPlaceholder->setVisible(FALSE); + } + else + { + mPanelListings->setVisible(FALSE); + mInventoryPlaceholder->setVisible(TRUE); + + std::string text; + std::string title; + std::string tooltip; + + const LLSD& subs = getMarketplaceStringSubstitutions(); + + // Update the top message or flip to the tabs and folders view + // *TODO : check those messages and create better appropriate ones in strings.xml + if (mRootFolderId.notNull()) + { + // "Marketplace listings is empty!" message strings + text = LLTrans::getString("InventoryMarketplaceListingsNoItems", subs); + title = LLTrans::getString("InventoryMarketplaceListingsNoItemsTitle"); + tooltip = LLTrans::getString("InventoryMarketplaceListingsNoItemsTooltip"); + } + else if (mkt_status <= MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING) + { + // "Initializing!" message strings + text = LLTrans::getString("InventoryOutboxInitializing", subs); + title = LLTrans::getString("InventoryOutboxInitializingTitle"); + tooltip = LLTrans::getString("InventoryOutboxInitializingTooltip"); + } + else if (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT) + { + // "Not a merchant!" message strings + text = LLTrans::getString("InventoryOutboxNotMerchant", subs); + title = LLTrans::getString("InventoryOutboxNotMerchantTitle"); + tooltip = LLTrans::getString("InventoryOutboxNotMerchantTooltip"); + } + else + { + // "Errors!" message strings + text = LLTrans::getString("InventoryMarketplaceError", subs); + title = LLTrans::getString("InventoryOutboxErrorTitle"); + tooltip = LLTrans::getString("InventoryOutboxErrorTooltip"); + } + + mInventoryText->setValue(text); + mInventoryTitle->setValue(title); + mInventoryPlaceholder->getParent()->setToolTip(tooltip); + } +} + +bool LLFloaterMarketplaceListings::isAccepted(EAcceptance accept) +{ + return (accept >= ACCEPT_YES_COPY_SINGLE); +} + +BOOL LLFloaterMarketplaceListings::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + // If there's no panel to accept drops or no existing marketplace listings folder, we refuse all drop + if (!mPanelListings || mRootFolderId.isNull()) + { + return FALSE; + } + + tooltip_msg = ""; + + // Pass to the children + LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + BOOL handled = (handled_view != NULL); + + // If no one handled it or it was not accepted and we drop on an empty panel, we try to accept it at the floater level + // as if it was dropped on the marketplace listings root folder + if ((!handled || !isAccepted(*accept)) && !mPanelListings->getVisible() && mRootFolderId.notNull()) + { + if (!mPanelListingsSet) + { + setPanels(); + } + LLFolderView* root_folder = mPanelListings->getRootFolder(); + handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + } + + return handled; +} + +BOOL LLFloaterMarketplaceListings::handleHover(S32 x, S32 y, MASK mask) +{ + return LLFloater::handleHover(x, y, mask); +} + +void LLFloaterMarketplaceListings::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLFloater::onMouseLeave(x, y, mask); +} + +void LLFloaterMarketplaceListings::onChanged() +{ + LLViewerInventoryCategory* category = gInventory.getCategory(mRootFolderId); + if (mRootFolderId.notNull() && category) + { + updateView(); + } + else + { + // Invalidate the marketplace listings data + mRootFolderId.setNull(); + } +} + +//----------------------------------------------------------------------------- +// LLFloaterAssociateListing +//----------------------------------------------------------------------------- + +// Tell if a listing has one only version folder +bool hasUniqueVersionFolder(const LLUUID& folder_id) +{ + LLInventoryModel::cat_array_t* categories; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(folder_id, categories, items); + return (categories->size() == 1); +} + +LLFloaterAssociateListing::LLFloaterAssociateListing(const LLSD& key) +: LLFloater(key) +, mUUID() +{ +} + +LLFloaterAssociateListing::~LLFloaterAssociateListing() +{ + gFocusMgr.releaseFocusIfNeeded( this ); +} + +BOOL LLFloaterAssociateListing::postBuild() +{ + getChild<LLButton>("OK")->setCommitCallback(boost::bind(&LLFloaterAssociateListing::apply, this, TRUE)); + getChild<LLButton>("Cancel")->setCommitCallback(boost::bind(&LLFloaterAssociateListing::cancel, this)); + getChild<LLLineEditor>("listing_id")->setPrevalidate(&LLTextValidate::validateNonNegativeS32); + center(); + + return LLFloater::postBuild(); +} + +BOOL LLFloaterAssociateListing::handleKeyHere(KEY key, MASK mask) +{ + if (key == KEY_RETURN && mask == MASK_NONE) + { + apply(); + return TRUE; + } + else if (key == KEY_ESCAPE && mask == MASK_NONE) + { + cancel(); + return TRUE; + } + + return LLFloater::handleKeyHere(key, mask); +} + +// static +LLFloaterAssociateListing* LLFloaterAssociateListing::show(const LLUUID& folder_id) +{ + LLFloaterAssociateListing* floater = LLFloaterReg::showTypedInstance<LLFloaterAssociateListing>("associate_listing"); + + floater->mUUID = folder_id; + + return floater; +} + +// Callback for apply if DAMA required... +void LLFloaterAssociateListing::callback_apply(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + apply(FALSE); + } +} + +void LLFloaterAssociateListing::apply(BOOL user_confirm) +{ + if (mUUID.notNull()) + { + S32 id = (S32)getChild<LLUICtrl>("listing_id")->getValue().asInteger(); + if (id > 0) + { + // Check if the id exists in the merchant SLM DB: note that this record might exist in the LLMarketplaceData + // structure even if unseen in the UI, for instance, if its listing_uuid doesn't exist in the merchant inventory + LLUUID listing_uuid = LLMarketplaceData::instance().getListingFolder(id); + if (listing_uuid.notNull() && user_confirm && LLMarketplaceData::instance().getActivationState(listing_uuid) && !hasUniqueVersionFolder(mUUID)) + { + // Look for user confirmation before unlisting + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLFloaterAssociateListing::callback_apply, this, _1, _2)); + return; + } + // Associate the id with the user chosen folder + LLMarketplaceData::instance().associateListing(mUUID,listing_uuid,id); + } + else + { + LLNotificationsUtil::add("AlertMerchantListingInvalidID"); + } + } + closeFloater(); +} + +void LLFloaterAssociateListing::cancel() +{ + closeFloater(); +} + +//----------------------------------------------------------------------------- +// LLFloaterMarketplaceValidation +//----------------------------------------------------------------------------- + +// Note: The key is the UUID of the folder to validate. +// Validates the whole marketplace listings content if UUID is null. + +LLFloaterMarketplaceValidation::LLFloaterMarketplaceValidation(const LLSD& key) +: LLFloater(key), +mEditor(NULL) +{ +} + +BOOL LLFloaterMarketplaceValidation::postBuild() +{ + childSetAction("OK", onOK, this); + + // This widget displays the validation messages + mEditor = getChild<LLTextEditor>("validation_text"); + mEditor->setEnabled(FALSE); + mEditor->setFocus(TRUE); + mEditor->setValue(LLSD()); + + return TRUE; +} + +LLFloaterMarketplaceValidation::~LLFloaterMarketplaceValidation() +{ +} + +// virtual +void LLFloaterMarketplaceValidation::draw() +{ + // draw children + LLFloater::draw(); +} + +void LLFloaterMarketplaceValidation::onOpen(const LLSD& key) +{ + // Clear the messages + clearMessages(); + + // Get the folder UUID to validate. Use the whole marketplace listing if none provided. + LLUUID cat_id(key.asUUID()); + if (cat_id.isNull()) + { + cat_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + } + + // Validates the folder + if (cat_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); + validate_marketplacelistings(cat, boost::bind(&LLFloaterMarketplaceValidation::appendMessage, this, _1, _2, _3), false); + } + + // Handle the listing folder being processed + handleCurrentListing(); + + // Dump result to the editor panel + if (mEditor) + { + mEditor->setValue(LLSD()); + if (mMessages.empty()) + { + // Display a no error message + mEditor->appendText(LLTrans::getString("Marketplace Validation No Error"), false); + } + else + { + // Print out all the messages to the panel + message_list_t::iterator mCurrentLine = mMessages.begin(); + bool new_line = false; + while (mCurrentLine != mMessages.end()) + { + // Errors are printed in bold, other messages in normal font + LLStyle::Params style; + LLFontDescriptor new_desc(mEditor->getFont()->getFontDesc()); + new_desc.setStyle(mCurrentLine->mErrorLevel == LLError::LEVEL_ERROR ? LLFontGL::BOLD : LLFontGL::NORMAL); + LLFontGL* new_font = LLFontGL::getFont(new_desc); + style.font = new_font; + mEditor->appendText(mCurrentLine->mMessage, new_line, style); + new_line = true; + mCurrentLine++; + } + } + } + // We don't need the messages anymore + clearMessages(); +} + +// static +void LLFloaterMarketplaceValidation::onOK( void* userdata ) +{ + // destroys this object + LLFloaterMarketplaceValidation* self = (LLFloaterMarketplaceValidation*) userdata; + self->clearMessages(); + self->closeFloater(); +} + +void LLFloaterMarketplaceValidation::appendMessage(std::string& message, S32 depth, LLError::ELevel log_level) +{ + // Dump previous listing messages if we're starting a new listing + if (depth == 1) + { + handleCurrentListing(); + } + + // Store the message in the current listing message list + Message current_message; + current_message.mErrorLevel = log_level; + current_message.mMessage = message; + mCurrentListingMessages.push_back(current_message); + mCurrentListingErrorLevel = (mCurrentListingErrorLevel < log_level ? log_level : mCurrentListingErrorLevel); +} + +// Move the current listing messages to the general list if needs be and reset the current listing data +void LLFloaterMarketplaceValidation::handleCurrentListing() +{ + // Dump the current folder messages to the general message list if level warrants it + if (mCurrentListingErrorLevel > LLError::LEVEL_INFO) + { + message_list_t::iterator mCurrentLine = mCurrentListingMessages.begin(); + while (mCurrentLine != mCurrentListingMessages.end()) + { + mMessages.push_back(*mCurrentLine); + mCurrentLine++; + } + } + + // Reset the current listing + mCurrentListingMessages.clear(); + mCurrentListingErrorLevel = LLError::LEVEL_INFO; +} + +void LLFloaterMarketplaceValidation::clearMessages() +{ + mMessages.clear(); + mCurrentListingMessages.clear(); + mCurrentListingErrorLevel = LLError::LEVEL_INFO; +} + +//----------------------------------------------------------------------------- +// LLFloaterItemProperties +//----------------------------------------------------------------------------- + +LLFloaterItemProperties::LLFloaterItemProperties(const LLSD& key) +: LLFloater(key) +{ +} + +LLFloaterItemProperties::~LLFloaterItemProperties() +{ +} + +BOOL LLFloaterItemProperties::postBuild() +{ + // On the standalone properties floater, we have no need for a back button... + LLSidepanelItemInfo* panel = getChild<LLSidepanelItemInfo>("item_panel"); + LLButton* back_btn = panel->getChild<LLButton>("back_btn"); + back_btn->setVisible(FALSE); + + return LLFloater::postBuild(); +} + +void LLFloaterItemProperties::onOpen(const LLSD& key) +{ + // Tell the panel which item it needs to visualize + LLSidepanelItemInfo* panel = getChild<LLSidepanelItemInfo>("item_panel"); + panel->setItemID(key["id"].asUUID()); +} + diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h new file mode 100644 index 0000000000..ffc098e28a --- /dev/null +++ b/indra/newview/llfloatermarketplacelistings.h @@ -0,0 +1,226 @@ +/** + * @file llfloatermarketplacelistings.h + * @brief Implementation of the marketplace listings floater and panels + * @author merov@lindenlab.com + * + * $LicenseInfo:firstyear=2001&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 + * ABILITY 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_LLFLOATERMARKETPLACELISTINGS_H +#define LL_LLFLOATERMARKETPLACELISTINGS_H + +#include "llfloater.h" +#include "llinventoryfilter.h" +#include "llinventorypanel.h" +#include "llnotificationptr.h" +#include "llmodaldialog.h" +#include "lltexteditor.h" + +class LLInventoryCategoriesObserver; +class LLInventoryCategoryAddedObserver; +class LLTextBox; +class LLView; +class LLFilterEditor; + +class LLFloaterMarketplaceListings; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLPanelMarketplaceListings +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLPanelMarketplaceListings : public LLPanel +{ +public: + LLPanelMarketplaceListings(); + BOOL postBuild(); + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); + void draw(); + LLFolderView* getRootFolder() { return mRootFolder; } + bool allowDropOnRoot(); + + void buildAllPanels(); + +private: + LLInventoryPanel* buildInventoryPanel(const std::string& childname, const std::string& filename); + + // UI callbacks + void onViewSortMenuItemClicked(const LLSD& userdata); + bool onViewSortMenuItemCheck(const LLSD& userdata); + void onAddButtonClicked(); + void onAuditButtonClicked(); + void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action); + void onTabChange(); + void onFilterEdit(const std::string& search_string); + + void setSortOrder(U32 sort_order); + + LLFolderView* mRootFolder; + LLButton* mAuditBtn; + LLFilterEditor* mFilterEditor; + std::string mFilterSubString; + bool mFilterListingFoldersOnly; + U32 mSortOrder; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLFloaterMarketplaceListings +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLFloaterMarketplaceListings : public LLFloater +{ +public: + LLFloaterMarketplaceListings(const LLSD& key); + ~LLFloaterMarketplaceListings(); + + void initializeMarketPlace(); + + // virtuals + BOOL postBuild(); + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); + + void showNotification(const LLNotificationPtr& notification); + + BOOL handleHover(S32 x, S32 y, MASK mask); + void onMouseLeave(S32 x, S32 y, MASK mask); + +protected: + void setRootFolder(); + void setPanels(); + void fetchContents(); + + void setStatusString(const std::string& statusString); + + void onClose(bool app_quitting); + void onOpen(const LLSD& key); + void onFocusReceived(); + void onChanged(); + + bool isAccepted(EAcceptance accept); + + void updateView(); + +private: + S32 getFolderCount(); + + LLInventoryCategoriesObserver * mCategoriesObserver; + LLInventoryCategoryAddedObserver * mCategoryAddedObserver; + + LLTextBox * mInventoryStatus; + LLView * mInventoryInitializationInProgress; + LLView * mInventoryPlaceholder; + LLTextBox * mInventoryText; + LLTextBox * mInventoryTitle; + + LLUUID mRootFolderId; + LLPanelMarketplaceListings * mPanelListings; + bool mPanelListingsSet; +}; + +//----------------------------------------------------------------------------- +// LLFloaterAssociateListing +//----------------------------------------------------------------------------- +class LLFloaterAssociateListing : public LLFloater +{ + friend class LLFloaterReg; +public: + virtual BOOL postBuild(); + virtual BOOL handleKeyHere(KEY key, MASK mask); + + static LLFloaterAssociateListing* show(const LLUUID& folder_id); + +private: + LLFloaterAssociateListing(const LLSD& key); + virtual ~LLFloaterAssociateListing(); + + // UI Callbacks + void apply(BOOL user_confirm = TRUE); + void cancel(); + void callback_apply(const LLSD& notification, const LLSD& response); + + LLUUID mUUID; +}; + +//----------------------------------------------------------------------------- +// LLFloaterMarketplaceValidation +//----------------------------------------------------------------------------- +// Note: The key is the UUID of the folder to validate. Validates the whole +// marketplace listings content if UUID is null. +// Note: For the moment, we just display the validation text. Eventually, we should +// get the validation triggered on the server and display the html report. +// *TODO : morph into an html/text window using the pattern in llfloatertos + +class LLFloaterMarketplaceValidation : public LLFloater +{ +public: + LLFloaterMarketplaceValidation(const LLSD& key); + virtual ~LLFloaterMarketplaceValidation(); + + virtual BOOL postBuild(); + virtual void draw(); + virtual void onOpen(const LLSD& key); + + void clearMessages(); + void appendMessage(std::string& message, S32 depth, LLError::ELevel log_level); + static void onOK( void* userdata ); + +private: + struct Message { + LLError::ELevel mErrorLevel; + std::string mMessage; + }; + typedef std::vector<Message> message_list_t; + + void handleCurrentListing(); + + message_list_t mCurrentListingMessages; + LLError::ELevel mCurrentListingErrorLevel; + + message_list_t mMessages; + + LLTextEditor* mEditor; +}; + +//----------------------------------------------------------------------------- +// LLFloaterItemProperties +//----------------------------------------------------------------------------- + +class LLFloaterItemProperties : public LLFloater +{ +public: + LLFloaterItemProperties(const LLSD& key); + virtual ~LLFloaterItemProperties(); + + BOOL postBuild(); + virtual void onOpen(const LLSD& key); + +private: +}; + +#endif // LL_LLFLOATERMARKETPLACELISTINGS_H diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 4fd5c0587a..4fd5c0587a 100755..100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h index f93512eb3a..f93512eb3a 100755..100644 --- a/indra/newview/llfloatermediasettings.h +++ b/indra/newview/llfloatermediasettings.h diff --git a/indra/newview/llfloatermemleak.cpp b/indra/newview/llfloatermemleak.cpp index 9edfe1e354..9edfe1e354 100755..100644 --- a/indra/newview/llfloatermemleak.cpp +++ b/indra/newview/llfloatermemleak.cpp diff --git a/indra/newview/llfloatermemleak.h b/indra/newview/llfloatermemleak.h index 86416eaa07..86416eaa07 100755..100644 --- a/indra/newview/llfloatermemleak.h +++ b/indra/newview/llfloatermemleak.h diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 72c9170b06..861dc88983 100755..100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -26,35 +26,8 @@ #include "llviewerprecompiledheaders.h" -#if LL_MSVC -#pragma warning (disable : 4263) -#pragma warning (disable : 4264) -#endif -#include "dae.h" -//#include "dom.h" -#include "dom/domAsset.h" -#include "dom/domBind_material.h" -#include "dom/domCOLLADA.h" -#include "dom/domConstants.h" -#include "dom/domController.h" -#include "dom/domEffect.h" -#include "dom/domGeometry.h" -#include "dom/domInstance_geometry.h" -#include "dom/domInstance_material.h" -#include "dom/domInstance_node.h" -#include "dom/domInstance_effect.h" -#include "dom/domMaterial.h" -#include "dom/domMatrix.h" -#include "dom/domNode.h" -#include "dom/domProfile_COMMON.h" -#include "dom/domRotate.h" -#include "dom/domScale.h" -#include "dom/domTranslate.h" -#include "dom/domVisual_scene.h" -#if LL_MSVC -#pragma warning (default : 4263) -#pragma warning (default : 4264) -#endif +#include "llmodelloader.h" +#include "lldaeloader.h" #include "llfloatermodelpreview.h" @@ -112,14 +85,15 @@ #include "llanimationstates.h" #include "llviewernetwork.h" #include "llviewershadermgr.h" -#include "glod/glod.h" -const S32 SLM_SUPPORTED_VERSION = 3; +#include "glod/glod.h" +#include <boost/algorithm/string.hpp> //static S32 LLFloaterModelPreview::sUploadAmount = 10; LLFloaterModelPreview* LLFloaterModelPreview::sInstance = NULL; -std::list<LLModelLoader*> LLModelLoader::sActiveLoaderList; + +bool LLModelPreview::sIgnoreLoadedCallback = false; // "Retain%" decomp parameter has values from 0.0 to 1.0 by 0.01 // But according to the UI spec for upload model floater, this parameter @@ -199,190 +173,46 @@ std::string lod_label_name[NUM_LOD+1] = "I went off the end of the lod_label_name array. Me so smart." }; -std::string colladaVersion[VERSIONTYPE_COUNT+1] = -{ - "1.4.0", - "1.4.1", - "Unsupported" -}; - - -#define LL_DEGENERACY_TOLERANCE 1e-7f - -inline F32 dot3fpu(const LLVector4a& a, const LLVector4a& b) -{ - volatile F32 p0 = a[0] * b[0]; - volatile F32 p1 = a[1] * b[1]; - volatile F32 p2 = a[2] * b[2]; - return p0 + p1 + p2; -} - -bool ll_is_degenerate(const LLVector4a& a, const LLVector4a& b, const LLVector4a& c, F32 tolerance = LL_DEGENERACY_TOLERANCE) -{ - // small area check - { - LLVector4a edge1; edge1.setSub( a, b ); - LLVector4a edge2; edge2.setSub( a, c ); - ////////////////////////////////////////////////////////////////////////// - /// Linden Modified - ////////////////////////////////////////////////////////////////////////// - - // If no one edge is more than 10x longer than any other edge, we weaken - // the tolerance by a factor of 1e-4f. - - LLVector4a edge3; edge3.setSub( c, b ); - const F32 len1sq = edge1.dot3(edge1).getF32(); - const F32 len2sq = edge2.dot3(edge2).getF32(); - const F32 len3sq = edge3.dot3(edge3).getF32(); - bool abOK = (len1sq <= 100.f * len2sq) && (len1sq <= 100.f * len3sq); - bool acOK = (len2sq <= 100.f * len1sq) && (len1sq <= 100.f * len3sq); - bool cbOK = (len3sq <= 100.f * len1sq) && (len1sq <= 100.f * len2sq); - if ( abOK && acOK && cbOK ) - { - tolerance *= 1e-4f; - } - - ////////////////////////////////////////////////////////////////////////// - /// End Modified - ////////////////////////////////////////////////////////////////////////// - - LLVector4a cross; cross.setCross3( edge1, edge2 ); - - LLVector4a edge1b; edge1b.setSub( b, a ); - LLVector4a edge2b; edge2b.setSub( b, c ); - LLVector4a crossb; crossb.setCross3( edge1b, edge2b ); - - if ( ( cross.dot3(cross).getF32() < tolerance ) || ( crossb.dot3(crossb).getF32() < tolerance )) - { - return true; - } - } - - // point triangle distance check - { - LLVector4a Q; Q.setSub(a, b); - LLVector4a R; R.setSub(c, b); - - const F32 QQ = dot3fpu(Q, Q); - const F32 RR = dot3fpu(R, R); - const F32 QR = dot3fpu(R, Q); - - volatile F32 QQRR = QQ * RR; - volatile F32 QRQR = QR * QR; - F32 Det = (QQRR - QRQR); - - if( Det == 0.0f ) - { - return true; - } - } - - return false; -} - -bool validate_face(const LLVolumeFace& face) +BOOL stop_gloderror() { + GLuint error = glodGetError(); - for (U32 v = 0; v < face.mNumVertices; v++) - { - if(face.mPositions && !face.mPositions[v].isFinite3()) - { - LL_WARNS() << "NaN position data in face found!" << LL_ENDL; - return false; - } - - if(face.mNormals && !face.mNormals[v].isFinite3()) - { - LL_WARNS() << "NaN normal data in face found!" << LL_ENDL; - return false; - } - } - - for (U32 i = 0; i < face.mNumIndices; ++i) - { - if (face.mIndices[i] >= face.mNumVertices) - { - LL_WARNS() << "Face has invalid index." << LL_ENDL; - return false; - } - } - - if (face.mNumIndices % 3 != 0 || face.mNumIndices == 0) + if (error != GLOD_NO_ERROR) { - LL_WARNS() << "Face has invalid number of indices." << LL_ENDL; - return false; + LL_WARNS() << "GLOD error detected, cannot generate LOD: " << std::hex << error << LL_ENDL; + return TRUE; } - - /*const LLVector4a scale(0.5f); - - - for (U32 i = 0; i < face.mNumIndices; i+=3) - { - U16 idx1 = face.mIndices[i]; - U16 idx2 = face.mIndices[i+1]; - U16 idx3 = face.mIndices[i+2]; - - LLVector4a v1; v1.setMul(face.mPositions[idx1], scale); - LLVector4a v2; v2.setMul(face.mPositions[idx2], scale); - LLVector4a v3; v3.setMul(face.mPositions[idx3], scale); - - if (ll_is_degenerate(v1,v2,v3)) - { - LL_WARNS() << "Degenerate face found!" << LL_ENDL; - return false; - } - }*/ - return true; + return FALSE; } -bool validate_model(const LLModel* mdl) +LLViewerFetchedTexture* bindMaterialDiffuseTexture(const LLImportMaterial& material) { - if (mdl->getNumVolumeFaces() == 0) - { - LL_WARNS() << "Model has no faces!" << LL_ENDL; - return false; - } + LLViewerFetchedTexture *texture = LLViewerTextureManager::getFetchedTexture(material.getDiffuseMap(), FTT_DEFAULT, TRUE, LLGLTexture::BOOST_PREVIEW); - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) + if (texture) { - if (mdl->getVolumeFace(i).mNumVertices == 0) - { - LL_WARNS() << "Face has no vertices." << LL_ENDL; - return false; - } - - if (mdl->getVolumeFace(i).mNumIndices == 0) - { - LL_WARNS() << "Face has no indices." << LL_ENDL; - return false; - } - - if (!validate_face(mdl->getVolumeFace(i))) + if (texture->getDiscardLevel() > -1) { - return false; + gGL.getTexUnit(0)->bind(texture, true); + return texture; } } - return true; + return NULL; } -BOOL stop_gloderror() +std::string stripSuffix(std::string name) { - GLuint error = glodGetError(); - - if (error != GLOD_NO_ERROR) + if ((name.find("_LOD") != -1) || (name.find("_PHYS") != -1)) { - LL_WARNS() << "GLOD error detected, cannot generate LOD: " << std::hex << error << LL_ENDL; - return TRUE; + return name.substr(0, name.rfind('_')); } - - return FALSE; + return name; } - LLMeshFilePicker::LLMeshFilePicker(LLModelPreview* mp, S32 lod) - : LLFilePickerThread(LLFilePicker::FFLOAD_COLLADA) +: LLFilePickerThread(LLFilePicker::FFLOAD_COLLADA) { mMP = mp; mLOD = lod; @@ -393,6 +223,29 @@ void LLMeshFilePicker::notify(const std::string& filename) mMP->loadModel(mFile, mLOD); } +void FindModel(LLModelLoader::scene& scene, const std::string& name_to_match, LLModel*& baseModelOut, LLMatrix4& matOut) +{ + LLModelLoader::scene::iterator base_iter = scene.begin(); + bool found = false; + while (!found && (base_iter != scene.end())) + { + matOut = base_iter->first; + + LLModelLoader::model_instance_list::iterator base_instance_iter = base_iter->second.begin(); + while (!found && (base_instance_iter != base_iter->second.end())) + { + LLModelInstance& base_instance = *base_instance_iter++; + LLModel* base_model = base_instance.mModel; + + if (base_model && (base_model->mLabel == name_to_match)) + { + baseModelOut = base_model; + return; + } + } + base_iter++; + } +} //----------------------------------------------------------------------------- // LLFloaterModelPreview() @@ -613,6 +466,11 @@ void LLFloaterModelPreview::disableViewOption(const std::string& option) void LLFloaterModelPreview::loadModel(S32 lod) { mModelPreview->mLoading = true; + if (lod == LLModel::LOD_PHYSICS) + { + // loading physics from file + mModelPreview->mPhysicsSearchLOD = lod; + } (new LLMeshFilePicker(mModelPreview, lod))->getFile(); } @@ -791,9 +649,9 @@ void LLFloaterModelPreview::draw() childSetTextArg("status", "[STATUS]", getString("status_material_mismatch")); } else - if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_PARSING ) - { - childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_PARSING))); + if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_MODEL ) + { + childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_MODEL))); } else if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_PARSING ) @@ -945,9 +803,16 @@ BOOL LLFloaterModelPreview::handleScrollWheel(S32 x, S32 y, S32 clicks) /*virtual*/ void LLFloaterModelPreview::onOpen(const LLSD& key) { + LLModelPreview::sIgnoreLoadedCallback = false; requestAgentUploadPermissions(); } +/*virtual*/ +void LLFloaterModelPreview::onClose(bool app_quitting) +{ + LLModelPreview::sIgnoreLoadedCallback = true; +} + //static void LLFloaterModelPreview::onPhysicsParamCommit(LLUICtrl* ctrl, void* data) { @@ -1308,1815 +1173,6 @@ void LLFloaterModelPreview::onMouseCaptureLostModelPreview(LLMouseHandler* handl } //----------------------------------------------------------------------------- -// LLModelLoader -//----------------------------------------------------------------------------- -LLModelLoader::LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, - std::deque<std::string>& jointsFromNodes ) -: mJointList( jointMap ) -, mJointsFromNode( jointsFromNodes ) -, LLThread("Model Loader"), mFilename(filename), mLod(lod), mPreview(preview), mFirstTransform(TRUE), mNumOfFetchingTextures(0) -{ - mJointMap["mPelvis"] = "mPelvis"; - mJointMap["mTorso"] = "mTorso"; - mJointMap["mChest"] = "mChest"; - mJointMap["mNeck"] = "mNeck"; - mJointMap["mHead"] = "mHead"; - mJointMap["mSkull"] = "mSkull"; - mJointMap["mEyeRight"] = "mEyeRight"; - mJointMap["mEyeLeft"] = "mEyeLeft"; - mJointMap["mCollarLeft"] = "mCollarLeft"; - mJointMap["mShoulderLeft"] = "mShoulderLeft"; - mJointMap["mElbowLeft"] = "mElbowLeft"; - mJointMap["mWristLeft"] = "mWristLeft"; - mJointMap["mCollarRight"] = "mCollarRight"; - mJointMap["mShoulderRight"] = "mShoulderRight"; - mJointMap["mElbowRight"] = "mElbowRight"; - mJointMap["mWristRight"] = "mWristRight"; - mJointMap["mHipRight"] = "mHipRight"; - mJointMap["mKneeRight"] = "mKneeRight"; - mJointMap["mAnkleRight"] = "mAnkleRight"; - mJointMap["mFootRight"] = "mFootRight"; - mJointMap["mToeRight"] = "mToeRight"; - mJointMap["mHipLeft"] = "mHipLeft"; - mJointMap["mKneeLeft"] = "mKneeLeft"; - mJointMap["mAnkleLeft"] = "mAnkleLeft"; - mJointMap["mFootLeft"] = "mFootLeft"; - mJointMap["mToeLeft"] = "mToeLeft"; - - mJointMap["avatar_mPelvis"] = "mPelvis"; - mJointMap["avatar_mTorso"] = "mTorso"; - mJointMap["avatar_mChest"] = "mChest"; - mJointMap["avatar_mNeck"] = "mNeck"; - mJointMap["avatar_mHead"] = "mHead"; - mJointMap["avatar_mSkull"] = "mSkull"; - mJointMap["avatar_mEyeRight"] = "mEyeRight"; - mJointMap["avatar_mEyeLeft"] = "mEyeLeft"; - mJointMap["avatar_mCollarLeft"] = "mCollarLeft"; - mJointMap["avatar_mShoulderLeft"] = "mShoulderLeft"; - mJointMap["avatar_mElbowLeft"] = "mElbowLeft"; - mJointMap["avatar_mWristLeft"] = "mWristLeft"; - mJointMap["avatar_mCollarRight"] = "mCollarRight"; - mJointMap["avatar_mShoulderRight"] = "mShoulderRight"; - mJointMap["avatar_mElbowRight"] = "mElbowRight"; - mJointMap["avatar_mWristRight"] = "mWristRight"; - mJointMap["avatar_mHipRight"] = "mHipRight"; - mJointMap["avatar_mKneeRight"] = "mKneeRight"; - mJointMap["avatar_mAnkleRight"] = "mAnkleRight"; - mJointMap["avatar_mFootRight"] = "mFootRight"; - mJointMap["avatar_mToeRight"] = "mToeRight"; - mJointMap["avatar_mHipLeft"] = "mHipLeft"; - mJointMap["avatar_mKneeLeft"] = "mKneeLeft"; - mJointMap["avatar_mAnkleLeft"] = "mAnkleLeft"; - mJointMap["avatar_mFootLeft"] = "mFootLeft"; - mJointMap["avatar_mToeLeft"] = "mToeLeft"; - - - mJointMap["hip"] = "mPelvis"; - mJointMap["abdomen"] = "mTorso"; - mJointMap["chest"] = "mChest"; - mJointMap["neck"] = "mNeck"; - mJointMap["head"] = "mHead"; - mJointMap["figureHair"] = "mSkull"; - mJointMap["lCollar"] = "mCollarLeft"; - mJointMap["lShldr"] = "mShoulderLeft"; - mJointMap["lForeArm"] = "mElbowLeft"; - mJointMap["lHand"] = "mWristLeft"; - mJointMap["rCollar"] = "mCollarRight"; - mJointMap["rShldr"] = "mShoulderRight"; - mJointMap["rForeArm"] = "mElbowRight"; - mJointMap["rHand"] = "mWristRight"; - mJointMap["rThigh"] = "mHipRight"; - mJointMap["rShin"] = "mKneeRight"; - mJointMap["rFoot"] = "mFootRight"; - mJointMap["lThigh"] = "mHipLeft"; - mJointMap["lShin"] = "mKneeLeft"; - mJointMap["lFoot"] = "mFootLeft"; - - if (mPreview) - { - //only try to load from slm if viewer is configured to do so and this is the - //initial model load (not an LoD or physics shape) - mTrySLM = gSavedSettings.getBOOL("MeshImportUseSLM") && mPreview->mUploadData.empty(); - mPreview->setLoadState(STARTING); - } - else - { - mTrySLM = false; - } - - assert_main_thread(); - sActiveLoaderList.push_back(this) ; -} - -LLModelLoader::~LLModelLoader() -{ - assert_main_thread(); - sActiveLoaderList.remove(this); -} - -void stretch_extents(LLModel* model, LLMatrix4a& mat, LLVector4a& min, LLVector4a& max, BOOL& first_transform) -{ - LLVector4a box[] = - { - LLVector4a(-1, 1,-1), - LLVector4a(-1, 1, 1), - LLVector4a(-1,-1,-1), - LLVector4a(-1,-1, 1), - LLVector4a( 1, 1,-1), - LLVector4a( 1, 1, 1), - LLVector4a( 1,-1,-1), - LLVector4a( 1,-1, 1), - }; - - for (S32 j = 0; j < model->getNumVolumeFaces(); ++j) - { - const LLVolumeFace& face = model->getVolumeFace(j); - - LLVector4a center; - center.setAdd(face.mExtents[0], face.mExtents[1]); - center.mul(0.5f); - LLVector4a size; - size.setSub(face.mExtents[1],face.mExtents[0]); - size.mul(0.5f); - - for (U32 i = 0; i < 8; i++) - { - LLVector4a t; - t.setMul(size, box[i]); - t.add(center); - - LLVector4a v; - - mat.affineTransform(t, v); - - if (first_transform) - { - first_transform = FALSE; - min = max = v; - } - else - { - update_min_max(min, max, v); - } - } - } -} - -void stretch_extents(LLModel* model, LLMatrix4& mat, LLVector3& min, LLVector3& max, BOOL& first_transform) -{ - LLVector4a mina, maxa; - LLMatrix4a mata; - - mata.loadu(mat); - mina.load3(min.mV); - maxa.load3(max.mV); - - stretch_extents(model, mata, mina, maxa, first_transform); - - min.set(mina.getF32ptr()); - max.set(maxa.getF32ptr()); -} - -void LLModelLoader::run() -{ - doLoadModel(); - doOnIdleOneTime(boost::bind(&LLModelLoader::loadModelCallback,this)); -} - -bool LLModelLoader::doLoadModel() -{ - //first, look for a .slm file of the same name that was modified later - //than the .dae - - if (mTrySLM) - { - std::string filename = mFilename; - - std::string::size_type i = filename.rfind("."); - if (i != std::string::npos) - { - filename.replace(i, filename.size()-1, ".slm"); - llstat slm_status; - if (LLFile::stat(filename, &slm_status) == 0) - { //slm file exists - llstat dae_status; - if (LLFile::stat(mFilename, &dae_status) != 0 || - dae_status.st_mtime < slm_status.st_mtime) - { - if (loadFromSLM(filename)) - { //slm successfully loaded, if this fails, fall through and - //try loading from dae - - mLod = -1; //successfully loading from an slm implicitly sets all - //LoDs - return true; - } - } - } - } - } - - //no suitable slm exists, load from the .dae file - DAE dae; - domCOLLADA* dom = dae.open(mFilename); - - if (!dom) - { - LL_INFOS()<<" Error with dae - traditionally indicates a corrupt file."<<LL_ENDL; - setLoadState( ERROR_PARSING ); - return false; - } - //Dom version - daeString domVersion = dae.getDomVersion(); - std::string sldom(domVersion); - LL_INFOS()<<"Collada Importer Version: "<<sldom<<LL_ENDL; - //Dae version - domVersionType docVersion = dom->getVersion(); - //0=1.4 - //1=1.4.1 - //2=Currently unsupported, however may work - if (docVersion > 1 ) - { - docVersion = VERSIONTYPE_COUNT; - } - LL_INFOS()<<"Dae version "<<colladaVersion[docVersion]<<LL_ENDL; - - - daeDatabase* db = dae.getDatabase(); - - daeInt count = db->getElementCount(NULL, COLLADA_TYPE_MESH); - - daeDocument* doc = dae.getDoc(mFilename); - if (!doc) - { - LL_WARNS() << "can't find internal doc" << LL_ENDL; - return false; - } - - daeElement* root = doc->getDomRoot(); - if (!root) - { - LL_WARNS() << "document has no root" << LL_ENDL; - return false; - } - - //Verify some basic properties of the dae - //1. Basic validity check on controller - U32 controllerCount = (int) db->getElementCount( NULL, "controller" ); - bool result = false; - for ( int i=0; i<controllerCount; ++i ) - { - domController* pController = NULL; - db->getElement( (daeElement**) &pController, i , NULL, "controller" ); - result = mPreview->verifyController( pController ); - if (!result) - { - setLoadState( ERROR_PARSING ); - return true; - } - } - - - //get unit scale - mTransform.setIdentity(); - - domAsset::domUnit* unit = daeSafeCast<domAsset::domUnit>(root->getDescendant(daeElement::matchType(domAsset::domUnit::ID()))); - - if (unit) - { - F32 meter = unit->getMeter(); - mTransform.mMatrix[0][0] = meter; - mTransform.mMatrix[1][1] = meter; - mTransform.mMatrix[2][2] = meter; - } - - //get up axis rotation - LLMatrix4 rotation; - - domUpAxisType up = UPAXISTYPE_Y_UP; // default is Y_UP - domAsset::domUp_axis* up_axis = - daeSafeCast<domAsset::domUp_axis>(root->getDescendant(daeElement::matchType(domAsset::domUp_axis::ID()))); - - if (up_axis) - { - up = up_axis->getValue(); - } - - if (up == UPAXISTYPE_X_UP) - { - rotation.initRotation(0.0f, 90.0f * DEG_TO_RAD, 0.0f); - } - else if (up == UPAXISTYPE_Y_UP) - { - rotation.initRotation(90.0f * DEG_TO_RAD, 0.0f, 0.0f); - } - - rotation *= mTransform; - mTransform = rotation; - - - for (daeInt idx = 0; idx < count; ++idx) - { //build map of domEntities to LLModel - domMesh* mesh = NULL; - db->getElement((daeElement**) &mesh, idx, NULL, COLLADA_TYPE_MESH); - - if (mesh) - { - LLPointer<LLModel> model = LLModel::loadModelFromDomMesh(mesh); - - if(model->getStatus() != LLModel::NO_ERRORS) - { - setLoadState(ERROR_PARSING + model->getStatus()) ; - return false; //abort - } - - if (model.notNull() && validate_model(model)) - { - mModelList.push_back(model); - mModel[mesh] = model; - } - } - } - - count = db->getElementCount(NULL, COLLADA_TYPE_SKIN); - for (daeInt idx = 0; idx < count; ++idx) - { //add skinned meshes as instances - domSkin* skin = NULL; - db->getElement((daeElement**) &skin, idx, NULL, COLLADA_TYPE_SKIN); - - if (skin) - { - domGeometry* geom = daeSafeCast<domGeometry>(skin->getSource().getElement()); - - if (geom) - { - domMesh* mesh = geom->getMesh(); - if (mesh) - { - LLModel* model = mModel[mesh]; - if (model) - { - LLVector3 mesh_scale_vector; - LLVector3 mesh_translation_vector; - model->getNormalizedScaleTranslation(mesh_scale_vector, mesh_translation_vector); - - LLMatrix4 normalized_transformation; - normalized_transformation.setTranslation(mesh_translation_vector); - - LLMatrix4 mesh_scale; - mesh_scale.initScale(mesh_scale_vector); - mesh_scale *= normalized_transformation; - normalized_transformation = mesh_scale; - - glh::matrix4f inv_mat((F32*) normalized_transformation.mMatrix); - inv_mat = inv_mat.inverse(); - LLMatrix4 inverse_normalized_transformation(inv_mat.m); - - domSkin::domBind_shape_matrix* bind_mat = skin->getBind_shape_matrix(); - - if (bind_mat) - { //get bind shape matrix - domFloat4x4& dom_value = bind_mat->getValue(); - - LLMeshSkinInfo& skin_info = model->mSkinInfo; - - for (int i = 0; i < 4; i++) - { - for(int j = 0; j < 4; j++) - { - skin_info.mBindShapeMatrix.mMatrix[i][j] = dom_value[i + j*4]; - } - } - - LLMatrix4 trans = normalized_transformation; - trans *= skin_info.mBindShapeMatrix; - skin_info.mBindShapeMatrix = trans; - } - - - //Some collada setup for accessing the skeleton - daeElement* pElement = 0; - dae.getDatabase()->getElement( &pElement, 0, 0, "skeleton" ); - - //Try to get at the skeletal instance controller - domInstance_controller::domSkeleton* pSkeleton = daeSafeCast<domInstance_controller::domSkeleton>( pElement ); - bool missingSkeletonOrScene = false; - - //If no skeleton, do a breadth-first search to get at specific joints - bool rootNode = false; - - //Need to test for a skeleton that does not have a root node - //This occurs when your instance controller does not have an associated scene - if ( pSkeleton ) - { - daeElement* pSkeletonRootNode = pSkeleton->getValue().getElement(); - if ( pSkeletonRootNode ) - { - rootNode = true; - } - - } - if ( !pSkeleton || !rootNode ) - { - daeElement* pScene = root->getDescendant("visual_scene"); - if ( !pScene ) - { - LL_WARNS()<<"No visual scene - unable to parse bone offsets "<<LL_ENDL; - missingSkeletonOrScene = true; - } - else - { - //Get the children at this level - daeTArray< daeSmartRef<daeElement> > children = pScene->getChildren(); - S32 childCount = children.getCount(); - - //Process any children that are joints - //Not all children are joints, some code be ambient lights, cameras, geometry etc.. - for (S32 i = 0; i < childCount; ++i) - { - domNode* pNode = daeSafeCast<domNode>(children[i]); - if ( isNodeAJoint( pNode ) ) - { - processJointNode( pNode, mJointList ); - } - } - } - } - else - //Has Skeleton - { - //Get the root node of the skeleton - daeElement* pSkeletonRootNode = pSkeleton->getValue().getElement(); - if ( pSkeletonRootNode ) - { - //Once we have the root node - start acccessing it's joint components - const int jointCnt = mJointMap.size(); - std::map<std::string, std::string> :: const_iterator jointIt = mJointMap.begin(); - - //Loop over all the possible joints within the .dae - using the allowed joint list in the ctor. - for ( int i=0; i<jointCnt; ++i, ++jointIt ) - { - //Build a joint for the resolver to work with - char str[64]={0}; - sprintf(str,"./%s",(*jointIt).first.c_str() ); - //LL_WARNS()<<"Joint "<< str <<LL_ENDL; - - //Setup the resolver - daeSIDResolver resolver( pSkeletonRootNode, str ); - - //Look for the joint - domNode* pJoint = daeSafeCast<domNode>( resolver.getElement() ); - if ( pJoint ) - { - //Pull out the translate id and store it in the jointTranslations map - daeSIDResolver jointResolverA( pJoint, "./translate" ); - domTranslate* pTranslateA = daeSafeCast<domTranslate>( jointResolverA.getElement() ); - daeSIDResolver jointResolverB( pJoint, "./location" ); - domTranslate* pTranslateB = daeSafeCast<domTranslate>( jointResolverB.getElement() ); - - LLMatrix4 workingTransform; - - //Translation via SID - if ( pTranslateA ) - { - extractTranslation( pTranslateA, workingTransform ); - } - else - if ( pTranslateB ) - { - extractTranslation( pTranslateB, workingTransform ); - } - else - { - //Translation via child from element - daeElement* pTranslateElement = getChildFromElement( pJoint, "translate" ); - if ( pTranslateElement && pTranslateElement->typeID() != domTranslate::ID() ) - { - LL_WARNS()<< "The found element is not a translate node" <<LL_ENDL; - missingSkeletonOrScene = true; - } - else - if ( pTranslateElement ) - { - extractTranslationViaElement( pTranslateElement, workingTransform ); - } - else - { - extractTranslationViaSID( pJoint, workingTransform ); - } - - } - - //Store the joint transform w/respect to it's name. - mJointList[(*jointIt).second.c_str()] = workingTransform; - } - } - - //If anything failed in regards to extracting the skeleton, joints or translation id, - //mention it - if ( missingSkeletonOrScene ) - { - LL_WARNS()<< "Partial jointmap found in asset - did you mean to just have a partial map?" << LL_ENDL; - } - }//got skeleton? - } - - - domSkin::domJoints* joints = skin->getJoints(); - - domInputLocal_Array& joint_input = joints->getInput_array(); - - for (size_t i = 0; i < joint_input.getCount(); ++i) - { - domInputLocal* input = joint_input.get(i); - xsNMTOKEN semantic = input->getSemantic(); - - if (strcmp(semantic, COMMON_PROFILE_INPUT_JOINT) == 0) - { //found joint source, fill model->mJointMap and model->mSkinInfo.mJointNames - daeElement* elem = input->getSource().getElement(); - - domSource* source = daeSafeCast<domSource>(elem); - if (source) - { - - - domName_array* names_source = source->getName_array(); - - if (names_source) - { - domListOfNames &names = names_source->getValue(); - - for (size_t j = 0; j < names.getCount(); ++j) - { - std::string name(names.get(j)); - if (mJointMap.find(name) != mJointMap.end()) - { - name = mJointMap[name]; - } - model->mSkinInfo.mJointNames.push_back(name); - model->mSkinInfo.mJointMap[name] = j; - } - } - else - { - domIDREF_array* names_source = source->getIDREF_array(); - if (names_source) - { - xsIDREFS& names = names_source->getValue(); - - for (size_t j = 0; j < names.getCount(); ++j) - { - std::string name(names.get(j).getID()); - if (mJointMap.find(name) != mJointMap.end()) - { - name = mJointMap[name]; - } - model->mSkinInfo.mJointNames.push_back(name); - model->mSkinInfo.mJointMap[name] = j; - } - } - } - } - } - else if (strcmp(semantic, COMMON_PROFILE_INPUT_INV_BIND_MATRIX) == 0) - { //found inv_bind_matrix array, fill model->mInvBindMatrix - domSource* source = daeSafeCast<domSource>(input->getSource().getElement()); - if (source) - { - domFloat_array* t = source->getFloat_array(); - if (t) - { - domListOfFloats& transform = t->getValue(); - S32 count = transform.getCount()/16; - - for (S32 k = 0; k < count; ++k) - { - LLMatrix4 mat; - - for (int i = 0; i < 4; i++) - { - for(int j = 0; j < 4; j++) - { - mat.mMatrix[i][j] = transform[k*16 + i + j*4]; - } - } - - model->mSkinInfo.mInvBindMatrix.push_back(mat); - } - } - } - } - } - - //Now that we've parsed the joint array, let's determine if we have a full rig - //(which means we have all the joint sthat are required for an avatar versus - //a skinned asset attached to a node in a file that contains an entire skeleton, - //but does not use the skeleton). - buildJointToNodeMappingFromScene( root ); - mPreview->critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames ); - - if ( !missingSkeletonOrScene ) - { - //Set the joint translations on the avatar - if it's a full mapping - //The joints are reset in the dtor - if ( mPreview->getRigWithSceneParity() ) - { - std::map<std::string, std::string> :: const_iterator masterJointIt = mJointMap.begin(); - std::map<std::string, std::string> :: const_iterator masterJointItEnd = mJointMap.end(); - for (;masterJointIt!=masterJointItEnd;++masterJointIt ) - { - std::string lookingForJoint = (*masterJointIt).first.c_str(); - - if ( mJointList.find( lookingForJoint ) != mJointList.end() ) - { - //LL_INFOS()<<"joint "<<lookingForJoint.c_str()<<LL_ENDL; - LLMatrix4 jointTransform = mJointList[lookingForJoint]; - LLJoint* pJoint = mPreview->getPreviewAvatar()->getJoint( lookingForJoint ); - if ( pJoint ) - { - LLUUID fake_mesh_id; - fake_mesh_id.generate(); - pJoint->addAttachmentPosOverride( jointTransform.getTranslation(), fake_mesh_id, gAgentAvatarp->avString()); - } - else - { - //Most likely an error in the asset. - LL_WARNS()<<"Tried to apply joint position from .dae, but it did not exist in the avatar rig." << LL_ENDL; - } - } - } - } - } //missingSkeletonOrScene - - - //We need to construct the alternate bind matrix (which contains the new joint positions) - //in the same order as they were stored in the joint buffer. The joints associated - //with the skeleton are not stored in the same order as they are in the exported joint buffer. - //This remaps the skeletal joints to be in the same order as the joints stored in the model. - std::vector<std::string> :: const_iterator jointIt = model->mSkinInfo.mJointNames.begin(); - const int jointCnt = model->mSkinInfo.mJointNames.size(); - for ( int i=0; i<jointCnt; ++i, ++jointIt ) - { - std::string lookingForJoint = (*jointIt).c_str(); - //Look for the joint xform that we extracted from the skeleton, using the jointIt as the key - //and store it in the alternate bind matrix - if ( mJointList.find( lookingForJoint ) != mJointList.end() ) - { - LLMatrix4 jointTransform = mJointList[lookingForJoint]; - LLMatrix4 newInverse = model->mSkinInfo.mInvBindMatrix[i]; - newInverse.setTranslation( mJointList[lookingForJoint].getTranslation() ); - model->mSkinInfo.mAlternateBindMatrix.push_back( newInverse ); - } - else - { - LL_WARNS()<<"Possibly misnamed/missing joint [" <<lookingForJoint.c_str()<<" ] "<<LL_ENDL; - } - } - - //grab raw position array - - domVertices* verts = mesh->getVertices(); - if (verts) - { - domInputLocal_Array& inputs = verts->getInput_array(); - for (size_t i = 0; i < inputs.getCount() && model->mPosition.empty(); ++i) - { - if (strcmp(inputs[i]->getSemantic(), COMMON_PROFILE_INPUT_POSITION) == 0) - { - domSource* pos_source = daeSafeCast<domSource>(inputs[i]->getSource().getElement()); - if (pos_source) - { - domFloat_array* pos_array = pos_source->getFloat_array(); - if (pos_array) - { - domListOfFloats& pos = pos_array->getValue(); - - for (size_t j = 0; j < pos.getCount(); j += 3) - { - if (pos.getCount() <= j+2) - { - LL_ERRS() << "Invalid position array size." << LL_ENDL; - } - - LLVector3 v(pos[j], pos[j+1], pos[j+2]); - - //transform from COLLADA space to volume space - v = v * inverse_normalized_transformation; - - model->mPosition.push_back(v); - } - } - } - } - } - } - - //grab skin weights array - domSkin::domVertex_weights* weights = skin->getVertex_weights(); - if (weights) - { - domInputLocalOffset_Array& inputs = weights->getInput_array(); - domFloat_array* vertex_weights = NULL; - for (size_t i = 0; i < inputs.getCount(); ++i) - { - if (strcmp(inputs[i]->getSemantic(), COMMON_PROFILE_INPUT_WEIGHT) == 0) - { - domSource* weight_source = daeSafeCast<domSource>(inputs[i]->getSource().getElement()); - if (weight_source) - { - vertex_weights = weight_source->getFloat_array(); - } - } - } - - if (vertex_weights) - { - domListOfFloats& w = vertex_weights->getValue(); - domListOfUInts& vcount = weights->getVcount()->getValue(); - domListOfInts& v = weights->getV()->getValue(); - - U32 c_idx = 0; - for (size_t vc_idx = 0; vc_idx < vcount.getCount(); ++vc_idx) - { //for each vertex - daeUInt count = vcount[vc_idx]; - - //create list of weights that influence this vertex - LLModel::weight_list weight_list; - - for (daeUInt i = 0; i < count; ++i) - { //for each weight - daeInt joint_idx = v[c_idx++]; - daeInt weight_idx = v[c_idx++]; - - if (joint_idx == -1) - { - //ignore bindings to bind_shape_matrix - continue; - } - - F32 weight_value = w[weight_idx]; - - weight_list.push_back(LLModel::JointWeight(joint_idx, weight_value)); - } - - //sort by joint weight - std::sort(weight_list.begin(), weight_list.end(), LLModel::CompareWeightGreater()); - - std::vector<LLModel::JointWeight> wght; - - F32 total = 0.f; - - for (U32 i = 0; i < llmin((U32) 4, (U32) weight_list.size()); ++i) - { //take up to 4 most significant weights - if (weight_list[i].mWeight > 0.f) - { - wght.push_back( weight_list[i] ); - total += weight_list[i].mWeight; - } - } - - F32 scale = 1.f/total; - if (scale != 1.f) - { //normalize weights - for (U32 i = 0; i < wght.size(); ++i) - { - wght[i].mWeight *= scale; - } - } - - model->mSkinWeights[model->mPosition[vc_idx]] = wght; - } - - //add instance to scene for this model - - LLMatrix4 transformation = mTransform; - // adjust the transformation to compensate for mesh normalization - - LLMatrix4 mesh_translation; - mesh_translation.setTranslation(mesh_translation_vector); - mesh_translation *= transformation; - transformation = mesh_translation; - - LLMatrix4 mesh_scale; - mesh_scale.initScale(mesh_scale_vector); - mesh_scale *= transformation; - transformation = mesh_scale; - - std::map<std::string, LLImportMaterial> materials; - for (U32 i = 0; i < model->mMaterialList.size(); ++i) - { - materials[model->mMaterialList[i]] = LLImportMaterial(); - } - mScene[transformation].push_back(LLModelInstance(model, model->mLabel, transformation, materials)); - stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); - } - } - } - } - } - } - } - - daeElement* scene = root->getDescendant("visual_scene"); - - if (!scene) - { - LL_WARNS() << "document has no visual_scene" << LL_ENDL; - setLoadState( ERROR_PARSING ); - return true; - } - - setLoadState( DONE ); - - bool badElement = false; - - processElement( scene, badElement ); - - if ( badElement ) - { - setLoadState( ERROR_PARSING ); - } - - return true; -} - -void LLModelLoader::setLoadState(U32 state) -{ - if (mPreview) - { - mPreview->setLoadState(state); - } -} - -bool LLModelLoader::loadFromSLM(const std::string& filename) -{ - //only need to populate mScene with data from slm - llstat stat; - - if (LLFile::stat(filename, &stat)) - { //file does not exist - return false; - } - - S32 file_size = (S32) stat.st_size; - - llifstream ifstream(filename.c_str(), std::ifstream::in | std::ifstream::binary); - LLSD data; - LLSDSerialize::fromBinary(data, ifstream, file_size); - ifstream.close(); - - //build model list for each LoD - model_list model[LLModel::NUM_LODS]; - - if (data["version"].asInteger() != SLM_SUPPORTED_VERSION) - { //unsupported version - return false; - } - - LLSD& mesh = data["mesh"]; - - LLVolumeParams volume_params; - volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); - - for (S32 lod = 0; lod < LLModel::NUM_LODS; ++lod) - { - for (U32 i = 0; i < mesh.size(); ++i) - { - std::stringstream str(mesh[i].asString()); - LLPointer<LLModel> loaded_model = new LLModel(volume_params, (F32) lod); - if (loaded_model->loadModel(str)) - { - loaded_model->mLocalID = i; - model[lod].push_back(loaded_model); - - if (lod == LLModel::LOD_HIGH && !loaded_model->mSkinInfo.mJointNames.empty()) - { - //check to see if rig is valid - mPreview->critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames ); - } - } - } - } - - if (model[LLModel::LOD_HIGH].empty()) - { //failed to load high lod - return false; - } - - // Set name. - std::string name = data["name"]; - if (!name.empty()) - { - model[LLModel::LOD_HIGH][0]->mLabel = name; - } - - - //load instance list - model_instance_list instance_list; - - LLSD& instance = data["instance"]; - - for (U32 i = 0; i < instance.size(); ++i) - { - //deserialize instance list - instance_list.push_back(LLModelInstance(instance[i])); - - //match up model instance pointers - S32 idx = instance_list[i].mLocalMeshID; - - for (U32 lod = 0; lod < LLModel::NUM_LODS; ++lod) - { - if (!model[lod].empty()) - { - instance_list[i].mLOD[lod] = model[lod][idx]; - } - } - - instance_list[i].mModel = model[LLModel::LOD_HIGH][idx]; - } - - - //convert instance_list to mScene - mFirstTransform = TRUE; - for (U32 i = 0; i < instance_list.size(); ++i) - { - LLModelInstance& cur_instance = instance_list[i]; - mScene[cur_instance.mTransform].push_back(cur_instance); - stretch_extents(cur_instance.mModel, cur_instance.mTransform, mExtents[0], mExtents[1], mFirstTransform); - } - - setLoadState( DONE ); - - return true; -} - -//static -bool LLModelLoader::isAlive(LLModelLoader* loader) -{ - if(!loader) - { - return false ; - } - - std::list<LLModelLoader*>::iterator iter = sActiveLoaderList.begin() ; - for(; iter != sActiveLoaderList.end() && (*iter) != loader; ++iter) ; - - return *iter == loader ; -} - -void LLModelLoader::loadModelCallback() -{ - assert_main_thread(); - - if (mPreview) - { - mPreview->loadModelCallback(mLod); - } - - while (!isStopped()) - { //wait until this thread is stopped before deleting self - apr_sleep(100); - } - - //doubel check if "this" is valid before deleting it, in case it is aborted during running. - if(!isAlive(this)) - { - return ; - } - - //cleanup model loader - if (mPreview) - { - mPreview->mModelLoader = NULL; - } - - delete this; -} -//----------------------------------------------------------------------------- -// buildJointToNodeMappingFromScene() -//----------------------------------------------------------------------------- -void LLModelLoader::buildJointToNodeMappingFromScene( daeElement* pRoot ) -{ - daeElement* pScene = pRoot->getDescendant("visual_scene"); - if ( pScene ) - { - daeTArray< daeSmartRef<daeElement> > children = pScene->getChildren(); - S32 childCount = children.getCount(); - for (S32 i = 0; i < childCount; ++i) - { - domNode* pNode = daeSafeCast<domNode>(children[i]); - processJointToNodeMapping( pNode ); - } - } -} -//----------------------------------------------------------------------------- -// processJointToNodeMapping() -//----------------------------------------------------------------------------- -void LLModelLoader::processJointToNodeMapping( domNode* pNode ) -{ - if ( isNodeAJoint( pNode ) ) - { - //1.Store the parent - std::string nodeName = pNode->getName(); - if ( !nodeName.empty() ) - { - mJointsFromNode.push_front( pNode->getName() ); - } - //2. Handle the kiddo's - processChildJoints( pNode ); - } - else - { - //Determine if the're any children wrt to this failed node. - //This occurs when an armature is exported and ends up being what essentially amounts to - //as the root for the visual_scene - if ( pNode ) - { - processChildJoints( pNode ); - } - else - { - LL_INFOS()<<"Node is NULL"<<LL_ENDL; - } - - } -} -//----------------------------------------------------------------------------- -// processChildJoint() -//----------------------------------------------------------------------------- -void LLModelLoader::processChildJoints( domNode* pParentNode ) -{ - daeTArray< daeSmartRef<daeElement> > childOfChild = pParentNode->getChildren(); - S32 childOfChildCount = childOfChild.getCount(); - for (S32 i = 0; i < childOfChildCount; ++i) - { - domNode* pChildNode = daeSafeCast<domNode>( childOfChild[i] ); - if ( pChildNode ) - { - processJointToNodeMapping( pChildNode ); - } - } -} - -//----------------------------------------------------------------------------- -// critiqueRigForUploadApplicability() -//----------------------------------------------------------------------------- -void LLModelPreview::critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ) -{ - critiqueJointToNodeMappingFromScene(); - - //Determines the following use cases for a rig: - //1. It is suitable for upload with skin weights & joint positions, or - //2. It is suitable for upload as standard av with just skin weights - - bool isJointPositionUploadOK = isRigSuitableForJointPositionUpload( jointListFromAsset ); - bool isRigLegacyOK = isRigLegacy( jointListFromAsset ); - - //It's OK that both could end up being true, both default to false - if ( isJointPositionUploadOK ) - { - setRigValidForJointPositionUpload( true ); - } - - if ( isRigLegacyOK) - { - setLegacyRigValid( true ); - } - -} -//----------------------------------------------------------------------------- -// critiqueJointToNodeMappingFromScene() -//----------------------------------------------------------------------------- -void LLModelPreview::critiqueJointToNodeMappingFromScene( void ) -{ - //Do the actual nodes back the joint listing from the dae? - //if yes then this is a fully rigged asset, otherwise it's just a partial rig - - std::deque<std::string>::iterator jointsFromNodeIt = mJointsFromNode.begin(); - std::deque<std::string>::iterator jointsFromNodeEndIt = mJointsFromNode.end(); - bool result = true; - - if ( !mJointsFromNode.empty() ) - { - for ( ;jointsFromNodeIt!=jointsFromNodeEndIt;++jointsFromNodeIt ) - { - std::string name = *jointsFromNodeIt; - if ( mJointTransformMap.find( name ) != mJointTransformMap.end() ) - { - continue; - } - else - { - LL_INFOS()<<"critiqueJointToNodeMappingFromScene is missing a: "<<name<<LL_ENDL; - result = false; - } - } - } - else - { - result = false; - } - - //Determines the following use cases for a rig: - //1. Full av rig w/1-1 mapping from the scene and joint array - //2. Partial rig but w/o parity between the scene and joint array - if ( result ) - { - setRigWithSceneParity( true ); - } -} -//----------------------------------------------------------------------------- -// isRigLegacy() -//----------------------------------------------------------------------------- -bool LLModelPreview::isRigLegacy( const std::vector<std::string> &jointListFromAsset ) -{ - //No joints in asset - if ( jointListFromAsset.size() == 0 ) - { - return false; - } - - bool result = false; - - std::deque<std::string> :: const_iterator masterJointIt = mMasterLegacyJointList.begin(); - std::deque<std::string> :: const_iterator masterJointEndIt = mMasterLegacyJointList.end(); - - std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin(); - std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end(); - - for ( ;masterJointIt!=masterJointEndIt;++masterJointIt ) - { - result = false; - modelJointIt = jointListFromAsset.begin(); - - for ( ;modelJointIt!=modelJointItEnd; ++modelJointIt ) - { - if ( *masterJointIt == *modelJointIt ) - { - result = true; - break; - } - } - if ( !result ) - { - LL_INFOS()<<" Asset did not contain the joint (if you're u/l a fully rigged asset w/joint positions - it is required)." << *masterJointIt<< LL_ENDL; - break; - } - } - return result; -} -//----------------------------------------------------------------------------- -// isRigSuitableForJointPositionUpload() -//----------------------------------------------------------------------------- -bool LLModelPreview::isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ) -{ - bool result = false; - - std::deque<std::string> :: const_iterator masterJointIt = mMasterJointList.begin(); - std::deque<std::string> :: const_iterator masterJointEndIt = mMasterJointList.end(); - - std::vector<std::string> :: const_iterator modelJointIt = jointListFromAsset.begin(); - std::vector<std::string> :: const_iterator modelJointItEnd = jointListFromAsset.end(); - - for ( ;masterJointIt!=masterJointEndIt;++masterJointIt ) - { - result = false; - modelJointIt = jointListFromAsset.begin(); - - for ( ;modelJointIt!=modelJointItEnd; ++modelJointIt ) - { - if ( *masterJointIt == *modelJointIt ) - { - result = true; - break; - } - } - if ( !result ) - { - LL_INFOS()<<" Asset did not contain the joint (if you're u/l a fully rigged asset w/joint positions - it is required)." << *masterJointIt<< LL_ENDL; - break; - } - } - return result; -} - - -//called in the main thread -void LLModelLoader::loadTextures() -{ - BOOL is_paused = isPaused() ; - pause() ; //pause the loader - - for(scene::iterator iter = mScene.begin(); iter != mScene.end(); ++iter) - { - for(U32 i = 0 ; i < iter->second.size(); i++) - { - for(std::map<std::string, LLImportMaterial>::iterator j = iter->second[i].mMaterial.begin(); - j != iter->second[i].mMaterial.end(); ++j) - { - LLImportMaterial& material = j->second; - - if(!material.mDiffuseMapFilename.empty()) - { - material.mDiffuseMap = - LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_PREVIEW); - material.mDiffuseMap->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, mPreview, NULL, FALSE); - material.mDiffuseMap->forceToSaveRawImage(0, F32_MAX); - mNumOfFetchingTextures++ ; - } - } - } - } - - if(!is_paused) - { - unpause() ; - } -} - -//----------------------------------------------------------------------------- -// isNodeAJoint() -//----------------------------------------------------------------------------- -bool LLModelLoader::isNodeAJoint( domNode* pNode ) -{ - if ( !pNode ) - { - LL_INFOS()<<"Created node is NULL"<<LL_ENDL; - return false; - } - - if ( pNode->getName() == NULL ) - { - LL_INFOS()<<"Parsed node has no name "<<LL_ENDL; - //Attempt to write the node id, if possible (aids in debugging the visual scene) - if ( pNode->getId() ) - { - LL_INFOS()<<"Parsed node ID: "<<pNode->getId()<<LL_ENDL; - } - return false; - } - - if ( mJointMap.find( pNode->getName() ) != mJointMap.end() ) - { - return true; - } - - return false; -} -//----------------------------------------------------------------------------- -// verifyCount -//----------------------------------------------------------------------------- -bool LLModelPreview::verifyCount( int expected, int result ) -{ - if ( expected != result ) - { - LL_INFOS()<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<LL_ENDL; - return false; - } - return true; -} -//----------------------------------------------------------------------------- -// verifyController -//----------------------------------------------------------------------------- -bool LLModelPreview::verifyController( domController* pController ) -{ - - bool result = true; - - domSkin* pSkin = pController->getSkin(); - - if ( pSkin ) - { - xsAnyURI & uri = pSkin->getSource(); - domElement* pElement = uri.getElement(); - - if ( !pElement ) - { - LL_INFOS()<<"Can't resolve skin source"<<LL_ENDL; - return false; - } - - daeString type_str = pElement->getTypeName(); - if ( stricmp(type_str, "geometry") == 0 ) - { - //Skin is reference directly by geometry and get the vertex count from skin - domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); - U32 vertexWeightsCount = pVertexWeights->getCount(); - domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); - domMesh* pMesh = pGeometry->getMesh(); - - if ( pMesh ) - { - //Get vertex count from geometry - domVertices* pVertices = pMesh->getVertices(); - if ( !pVertices ) - { - LL_INFOS()<<"No vertices!"<<LL_ENDL; - return false; - } - - if ( pVertices ) - { - xsAnyURI src = pVertices->getInput_array()[0]->getSource(); - domSource* pSource = (domSource*) (domElement*) src.getElement(); - U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); - result = verifyCount( verticesCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - } - } - - U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); - result = verifyCount( vcountCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - - domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); - U32 sum = 0; - for (size_t i=0; i<vcountCount; i++) - { - sum += pVertexWeights->getVcount()->getValue()[i]; - } - result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); - } - } - - return result; -} - -//----------------------------------------------------------------------------- -// extractTranslation() -//----------------------------------------------------------------------------- -void LLModelLoader::extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ) -{ - domFloat3 jointTrans = pTranslate->getValue(); - LLVector3 singleJointTranslation( jointTrans[0], jointTrans[1], jointTrans[2] ); - transform.setTranslation( singleJointTranslation ); -} -//----------------------------------------------------------------------------- -// extractTranslationViaElement() -//----------------------------------------------------------------------------- -void LLModelLoader::extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ) -{ - if ( pTranslateElement ) - { - domTranslate* pTranslateChild = dynamic_cast<domTranslate*>( pTranslateElement ); - domFloat3 translateChild = pTranslateChild->getValue(); - LLVector3 singleJointTranslation( translateChild[0], translateChild[1], translateChild[2] ); - transform.setTranslation( singleJointTranslation ); - } -} -//----------------------------------------------------------------------------- -// extractTranslationViaSID() -//----------------------------------------------------------------------------- -void LLModelLoader::extractTranslationViaSID( daeElement* pElement, LLMatrix4& transform ) -{ - if ( pElement ) - { - daeSIDResolver resolver( pElement, "./transform" ); - domMatrix* pMatrix = daeSafeCast<domMatrix>( resolver.getElement() ); - //We are only extracting out the translational component atm - LLMatrix4 workingTransform; - if ( pMatrix ) - { - domFloat4x4 domArray = pMatrix->getValue(); - for ( int i = 0; i < 4; i++ ) - { - for( int j = 0; j < 4; j++ ) - { - workingTransform.mMatrix[i][j] = domArray[i + j*4]; - } - } - LLVector3 trans = workingTransform.getTranslation(); - transform.setTranslation( trans ); - } - } - else - { - LL_WARNS()<<"Element is nonexistent - empty/unsupported node."<<LL_ENDL; - } -} -//----------------------------------------------------------------------------- -// processJointNode() -//----------------------------------------------------------------------------- -void LLModelLoader::processJointNode( domNode* pNode, JointTransformMap& jointTransforms ) -{ - if (pNode->getName() == NULL) - { - LL_WARNS() << "nameless node, can't process" << LL_ENDL; - return; - } - - //LL_WARNS()<<"ProcessJointNode# Node:" <<pNode->getName()<<LL_ENDL; - - //1. handle the incoming node - extract out translation via SID or element - - LLMatrix4 workingTransform; - - //Pull out the translate id and store it in the jointTranslations map - daeSIDResolver jointResolverA( pNode, "./translate" ); - domTranslate* pTranslateA = daeSafeCast<domTranslate>( jointResolverA.getElement() ); - daeSIDResolver jointResolverB( pNode, "./location" ); - domTranslate* pTranslateB = daeSafeCast<domTranslate>( jointResolverB.getElement() ); - - //Translation via SID was successful - if ( pTranslateA ) - { - extractTranslation( pTranslateA, workingTransform ); - } - else - if ( pTranslateB ) - { - extractTranslation( pTranslateB, workingTransform ); - } - else - { - //Translation via child from element - daeElement* pTranslateElement = getChildFromElement( pNode, "translate" ); - if ( !pTranslateElement || pTranslateElement->typeID() != domTranslate::ID() ) - { - //LL_WARNS()<< "The found element is not a translate node" <<LL_ENDL; - daeSIDResolver jointResolver( pNode, "./matrix" ); - domMatrix* pMatrix = daeSafeCast<domMatrix>( jointResolver.getElement() ); - if ( pMatrix ) - { - //LL_INFOS()<<"A matrix SID was however found!"<<LL_ENDL; - domFloat4x4 domArray = pMatrix->getValue(); - for ( int i = 0; i < 4; i++ ) - { - for( int j = 0; j < 4; j++ ) - { - workingTransform.mMatrix[i][j] = domArray[i + j*4]; - } - } - } - else - { - LL_WARNS()<< "The found element is not translate or matrix node - most likely a corrupt export!" <<LL_ENDL; - } - } - else - { - extractTranslationViaElement( pTranslateElement, workingTransform ); - } - } - - //Store the working transform relative to the nodes name. - jointTransforms[ pNode->getName() ] = workingTransform; - - //2. handle the nodes children - - //Gather and handle the incoming nodes children - daeTArray< daeSmartRef<daeElement> > childOfChild = pNode->getChildren(); - S32 childOfChildCount = childOfChild.getCount(); - - for (S32 i = 0; i < childOfChildCount; ++i) - { - domNode* pChildNode = daeSafeCast<domNode>( childOfChild[i] ); - if ( pChildNode ) - { - processJointNode( pChildNode, jointTransforms ); - } - } -} -//----------------------------------------------------------------------------- -// getChildFromElement() -//----------------------------------------------------------------------------- -daeElement* LLModelLoader::getChildFromElement( daeElement* pElement, std::string const & name ) -{ - daeElement* pChildOfElement = pElement->getChild( name.c_str() ); - if ( pChildOfElement ) - { - return pChildOfElement; - } - LL_WARNS()<< "Could not find a child [" << name << "] for the element: \"" << pElement->getAttribute("id") << "\"" << LL_ENDL; - return NULL; -} - -void LLModelLoader::processElement( daeElement* element, bool& badElement ) -{ - LLMatrix4 saved_transform = mTransform; - - domTranslate* translate = daeSafeCast<domTranslate>(element); - if (translate) - { - domFloat3 dom_value = translate->getValue(); - - LLMatrix4 translation; - translation.setTranslation(LLVector3(dom_value[0], dom_value[1], dom_value[2])); - - translation *= mTransform; - mTransform = translation; - } - - domRotate* rotate = daeSafeCast<domRotate>(element); - if (rotate) - { - domFloat4 dom_value = rotate->getValue(); - - LLMatrix4 rotation; - rotation.initRotTrans(dom_value[3] * DEG_TO_RAD, LLVector3(dom_value[0], dom_value[1], dom_value[2]), LLVector3(0, 0, 0)); - - rotation *= mTransform; - mTransform = rotation; - } - - domScale* scale = daeSafeCast<domScale>(element); - if (scale) - { - domFloat3 dom_value = scale->getValue(); - - - LLVector3 scale_vector = LLVector3(dom_value[0], dom_value[1], dom_value[2]); - scale_vector.abs(); // Set all values positive, since we don't currently support mirrored meshes - LLMatrix4 scaling; - scaling.initScale(scale_vector); - - scaling *= mTransform; - mTransform = scaling; - } - - domMatrix* matrix = daeSafeCast<domMatrix>(element); - if (matrix) - { - domFloat4x4 dom_value = matrix->getValue(); - - LLMatrix4 matrix_transform; - - for (int i = 0; i < 4; i++) - { - for(int j = 0; j < 4; j++) - { - matrix_transform.mMatrix[i][j] = dom_value[i + j*4]; - } - } - - matrix_transform *= mTransform; - mTransform = matrix_transform; - } - - domInstance_geometry* instance_geo = daeSafeCast<domInstance_geometry>(element); - if (instance_geo) - { - domGeometry* geo = daeSafeCast<domGeometry>(instance_geo->getUrl().getElement()); - if (geo) - { - domMesh* mesh = daeSafeCast<domMesh>(geo->getDescendant(daeElement::matchType(domMesh::ID()))); - if (mesh) - { - LLModel* model = mModel[mesh]; - if (model) - { - LLMatrix4 transformation = mTransform; - - if (mTransform.determinant() < 0) - { //negative scales are not supported - LL_INFOS() << "Negative scale detected, unsupported transform. domInstance_geometry: " << LLModel::getElementLabel(instance_geo) << LL_ENDL; - badElement = true; - } - - std::map<std::string, LLImportMaterial> materials = getMaterials(model, instance_geo); - - // adjust the transformation to compensate for mesh normalization - LLVector3 mesh_scale_vector; - LLVector3 mesh_translation_vector; - model->getNormalizedScaleTranslation(mesh_scale_vector, mesh_translation_vector); - - LLMatrix4 mesh_translation; - mesh_translation.setTranslation(mesh_translation_vector); - mesh_translation *= transformation; - transformation = mesh_translation; - - LLMatrix4 mesh_scale; - mesh_scale.initScale(mesh_scale_vector); - mesh_scale *= transformation; - transformation = mesh_scale; - - std::string label = getElementLabel(instance_geo); - mScene[transformation].push_back(LLModelInstance(model, label, transformation, materials)); - - stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); - } - } - } - else - { - LL_INFOS()<<"Unable to resolve geometry URL."<<LL_ENDL; - badElement = true; - } - - } - - domInstance_node* instance_node = daeSafeCast<domInstance_node>(element); - if (instance_node) - { - daeElement* instance = instance_node->getUrl().getElement(); - if (instance) - { - processElement(instance,badElement); - } - } - - //process children - daeTArray< daeSmartRef<daeElement> > children = element->getChildren(); - int childCount = children.getCount(); - for (S32 i = 0; i < childCount; i++) - { - processElement(children[i],badElement); - } - - domNode* node = daeSafeCast<domNode>(element); - if (node) - { //this element was a node, restore transform before processiing siblings - mTransform = saved_transform; - } -} - -std::map<std::string, LLImportMaterial> LLModelLoader::getMaterials(LLModel* model, domInstance_geometry* instance_geo) -{ - std::map<std::string, LLImportMaterial> materials; - for (int i = 0; i < model->mMaterialList.size(); i++) - { - LLImportMaterial import_material; - - domInstance_material* instance_mat = NULL; - - domBind_material::domTechnique_common* technique = - daeSafeCast<domBind_material::domTechnique_common>(instance_geo->getDescendant(daeElement::matchType(domBind_material::domTechnique_common::ID()))); - - if (technique) - { - daeTArray< daeSmartRef<domInstance_material> > inst_materials = technique->getChildrenByType<domInstance_material>(); - for (int j = 0; j < inst_materials.getCount(); j++) - { - std::string symbol(inst_materials[j]->getSymbol()); - - if (symbol == model->mMaterialList[i]) // found the binding - { - instance_mat = inst_materials[j]; - } - } - } - - if (instance_mat) - { - domMaterial* material = daeSafeCast<domMaterial>(instance_mat->getTarget().getElement()); - if (material) - { - domInstance_effect* instance_effect = - daeSafeCast<domInstance_effect>(material->getDescendant(daeElement::matchType(domInstance_effect::ID()))); - if (instance_effect) - { - domEffect* effect = daeSafeCast<domEffect>(instance_effect->getUrl().getElement()); - if (effect) - { - domProfile_COMMON* profile = - daeSafeCast<domProfile_COMMON>(effect->getDescendant(daeElement::matchType(domProfile_COMMON::ID()))); - if (profile) - { - import_material = profileToMaterial(profile); - } - } - } - } - } - - import_material.mBinding = model->mMaterialList[i]; - materials[model->mMaterialList[i]] = import_material; - } - - return materials; -} - -LLImportMaterial LLModelLoader::profileToMaterial(domProfile_COMMON* material) -{ - LLImportMaterial mat; - mat.mFullbright = FALSE; - - daeElement* diffuse = material->getDescendant("diffuse"); - if (diffuse) - { - domCommon_color_or_texture_type_complexType::domTexture* texture = - daeSafeCast<domCommon_color_or_texture_type_complexType::domTexture>(diffuse->getDescendant("texture")); - if (texture) - { - domCommon_newparam_type_Array newparams = material->getNewparam_array(); - for (S32 i = 0; i < newparams.getCount(); i++) - { - domFx_surface_common* surface = newparams[i]->getSurface(); - if (surface) - { - domFx_surface_init_common* init = surface->getFx_surface_init_common(); - if (init) - { - domFx_surface_init_from_common_Array init_from = init->getInit_from_array(); - - if (init_from.getCount() > i) - { - domImage* image = daeSafeCast<domImage>(init_from[i]->getValue().getElement()); - if (image) - { - // we only support init_from now - embedded data will come later - domImage::domInit_from* init = image->getInit_from(); - if (init) - { - mat.mDiffuseMapFilename = cdom::uriToNativePath(init->getValue().str()); - mat.mDiffuseMapLabel = getElementLabel(material); - } - } - } - } - } - } - } - - domCommon_color_or_texture_type_complexType::domColor* color = - daeSafeCast<domCommon_color_or_texture_type_complexType::domColor>(diffuse->getDescendant("color")); - if (color) - { - domFx_color_common domfx_color = color->getValue(); - LLColor4 value = LLColor4(domfx_color[0], domfx_color[1], domfx_color[2], domfx_color[3]); - mat.mDiffuseColor = value; - } - } - - daeElement* emission = material->getDescendant("emission"); - if (emission) - { - LLColor4 emission_color = getDaeColor(emission); - if (((emission_color[0] + emission_color[1] + emission_color[2]) / 3.0) > 0.25) - { - mat.mFullbright = TRUE; - } - } - - return mat; -} - -// try to get a decent label for this element -std::string LLModelLoader::getElementLabel(daeElement *element) -{ - // if we have a name attribute, use it - std::string name = element->getAttribute("name"); - if (name.length()) - { - return name; - } - - // if we have an ID attribute, use it - if (element->getID()) - { - return std::string(element->getID()); - } - - // if we have a parent, use it - daeElement* parent = element->getParent(); - if (parent) - { - // if parent has a name, use it - std::string name = parent->getAttribute("name"); - if (name.length()) - { - return name; - } - - // if parent has an ID, use it - if (parent->getID()) - { - return std::string(parent->getID()); - } - } - - // try to use our type - daeString element_name = element->getElementName(); - if (element_name) - { - return std::string(element_name); - } - - // if all else fails, use "object" - return std::string("object"); -} - -LLColor4 LLModelLoader::getDaeColor(daeElement* element) -{ - LLColor4 value; - domCommon_color_or_texture_type_complexType::domColor* color = - daeSafeCast<domCommon_color_or_texture_type_complexType::domColor>(element->getDescendant("color")); - if (color) - { - domFx_color_common domfx_color = color->getValue(); - value = LLColor4(domfx_color[0], domfx_color[1], domfx_color[2], domfx_color[3]); - } - - return value; -} - -//----------------------------------------------------------------------------- // LLModelPreview //----------------------------------------------------------------------------- @@ -3125,7 +1181,9 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) , mPelvisZOffset( 0.0f ) , mLegacyRigValid( false ) , mRigValidJointUpload( false ) +, mPhysicsSearchLOD( LLModel::LOD_PHYSICS ) , mResetJoints( false ) +, mModelNoErrors( true ) , mRigParityWithScene( false ) , mLastJointUpdate( false ) { @@ -3170,51 +1228,20 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) glodInit(); - //move into joint mapper class - //1. joints for joint offset verification - mMasterJointList.push_front("mPelvis"); - mMasterJointList.push_front("mTorso"); - mMasterJointList.push_front("mChest"); - mMasterJointList.push_front("mNeck"); - mMasterJointList.push_front("mHead"); - mMasterJointList.push_front("mCollarLeft"); - mMasterJointList.push_front("mShoulderLeft"); - mMasterJointList.push_front("mElbowLeft"); - mMasterJointList.push_front("mWristLeft"); - mMasterJointList.push_front("mCollarRight"); - mMasterJointList.push_front("mShoulderRight"); - mMasterJointList.push_front("mElbowRight"); - mMasterJointList.push_front("mWristRight"); - mMasterJointList.push_front("mHipRight"); - mMasterJointList.push_front("mKneeRight"); - mMasterJointList.push_front("mFootRight"); - mMasterJointList.push_front("mHipLeft"); - mMasterJointList.push_front("mKneeLeft"); - mMasterJointList.push_front("mFootLeft"); - //2. legacy joint list - used to verify rigs that will not be using joint offsets - mMasterLegacyJointList.push_front("mPelvis"); - mMasterLegacyJointList.push_front("mTorso"); - mMasterLegacyJointList.push_front("mChest"); - mMasterLegacyJointList.push_front("mNeck"); - mMasterLegacyJointList.push_front("mHead"); - mMasterLegacyJointList.push_front("mHipRight"); - mMasterLegacyJointList.push_front("mKneeRight"); - mMasterLegacyJointList.push_front("mFootRight"); - mMasterLegacyJointList.push_front("mHipLeft"); - mMasterLegacyJointList.push_front("mKneeLeft"); - mMasterLegacyJointList.push_front("mFootLeft"); - createPreviewAvatar(); } LLModelPreview::~LLModelPreview() { - if (mModelLoader) - { - mModelLoader->mPreview = NULL; - mModelLoader = NULL; - } - //*HACK : *TODO : turn this back on when we understand why this crashes + // glod apparently has internal mem alignment issues that are angering + // the heap-check code in windows, these should be hunted down in that + // TP code, if possible + // + // kernel32.dll!HeapFree() + 0x14 bytes + // msvcr100.dll!free(void * pBlock) Line 51 C + // glod.dll!glodGetGroupParameteriv() + 0x119 bytes + // glod.dll!glodShutdown() + 0x77 bytes + // //glodShutdown(); } @@ -3284,7 +1311,9 @@ U32 LLModelPreview::calcResourceCost() decomp, mFMP->childGetValue("upload_skin").asBoolean(), mFMP->childGetValue("upload_joints").asBoolean(), - TRUE); + TRUE, + FALSE, + instance.mModel->mSubmodelID); num_hulls += decomp.mHull.size(); for (U32 i = 0; i < decomp.mHull.size(); ++i) @@ -3351,29 +1380,12 @@ void LLModelPreview::rebuildUploadData() F32 max_scale = 0.f; - //reorder materials to match mBaseModel - for (U32 i = 0; i < LLModel::NUM_LODS-1; i++) - { - if (mBaseModel.size() == mModel[i].size()) - { - for (U32 j = 0; j < mBaseModel.size(); ++j) - { - - int refFaceCnt = 0; - int modelFaceCnt = 0; - - if ( !mModel[i][j]->matchMaterialOrder(mBaseModel[j], refFaceCnt, modelFaceCnt ) ) - { - setLoadState( LLModelLoader::ERROR_MATERIALS ); - mFMP->childDisable( "calculate_btn" ); - } - } - } - } + BOOL importerDebug = gSavedSettings.getBOOL("ImporterDebug"); + BOOL legacyMatching = gSavedSettings.getBOOL("ImporterLegacyMatching"); for (LLModelLoader::scene::iterator iter = mBaseScene.begin(); iter != mBaseScene.end(); ++iter) { //for each transform in scene - LLMatrix4 mat = iter->first; + LLMatrix4 mat = iter->first; // compute position LLVector3 position = LLVector3(0, 0, 0) * mat; @@ -3390,38 +1402,171 @@ void LLModelPreview::rebuildUploadData() mat *= scale_mat; - for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end(); ++model_iter) - { //for each instance with said transform applied - LLModelInstance instance = *model_iter; + for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end();) + { //for each instance with said transform applied + LLModelInstance instance = *model_iter++; LLModel* base_model = instance.mModel; - if (base_model) + if (base_model && !requested_name.empty()) { base_model->mRequestedLabel = requested_name; base_model->mMetric = metric; } - S32 idx = 0; - for (idx = 0; idx < mBaseModel.size(); ++idx) - { //find reference instance for this model - if (mBaseModel[idx] == base_model) + for (int i = LLModel::NUM_LODS - 1; i >= LLModel::LOD_IMPOSTOR; i--) + { + LLModel* lod_model = NULL; + if (!legacyMatching) { - break; + // Fill LOD slots by finding matching meshes by label with name extensions + // in the appropriate scene for each LOD. This fixes all kinds of issues + // where the indexed method below fails in spectacular fashion. + // If you don't take the time to name your LOD and PHYS meshes + // with the name of their corresponding mesh in the HIGH LOD, + // then the indexed method will be attempted below. + + LLMatrix4 transform; + + std::string name_to_match = instance.mLabel; + llassert(!name_to_match.empty()); + + int extensionLOD; + if (i != LLModel::LOD_PHYSICS || mModel[LLModel::LOD_PHYSICS].empty()) + { + extensionLOD = i; + } + else + { + //Physics can be inherited from other LODs or loaded, so we need to adjust what extension we are searching for + extensionLOD = mPhysicsSearchLOD; + } + + std::string toAdd; + switch (extensionLOD) + { + case LLModel::LOD_IMPOSTOR: toAdd = "_LOD0"; break; + case LLModel::LOD_LOW: toAdd = "_LOD1"; break; + case LLModel::LOD_MEDIUM: toAdd = "_LOD2"; break; + case LLModel::LOD_PHYSICS: toAdd = "_PHYS"; break; + case LLModel::LOD_HIGH: break; + } + + if (name_to_match.find(toAdd) == -1) + { + name_to_match += toAdd; + } + + FindModel(mScene[i], name_to_match, lod_model, transform); + + if (!lod_model && i != LLModel::LOD_PHYSICS) + { + if (importerDebug) + { + LL_INFOS() << "Search of" << name_to_match << " in LOD" << i << " list failed. Searching for alternative among LOD lists." << LL_ENDL; + } + + int searchLOD = (i > LLModel::LOD_HIGH) ? LLModel::LOD_HIGH : i; + while ((searchLOD <= LLModel::LOD_HIGH) && !lod_model) + { + std::string name_to_match = instance.mLabel; + llassert(!name_to_match.empty()); + + std::string toAdd; + switch (searchLOD) + { + case LLModel::LOD_IMPOSTOR: toAdd = "_LOD0"; break; + case LLModel::LOD_LOW: toAdd = "_LOD1"; break; + case LLModel::LOD_MEDIUM: toAdd = "_LOD2"; break; + case LLModel::LOD_PHYSICS: toAdd = "_PHYS"; break; + case LLModel::LOD_HIGH: break; + } + + if (name_to_match.find(toAdd) == -1) + { + name_to_match += toAdd; + } + + // See if we can find an appropriately named model in LOD 'searchLOD' + // + FindModel(mScene[searchLOD], name_to_match, lod_model, transform); + searchLOD++; + } + } } - } + else + { + // Use old method of index-based association + U32 idx = 0; + for (idx = 0; idx < mBaseModel.size(); ++idx) + { + // find reference instance for this model + if (mBaseModel[idx] == base_model) + { + if (importerDebug) + { + LL_INFOS() << "Attempting to use model index " << idx << " for LOD " << i << " of " << instance.mLabel << LL_ENDL; + } + break; + } + } - if(idx < mBaseModel.size()) - { - for (U32 i = 0; i < LLModel::NUM_LODS; i++) - { //fill LOD slots based on reference model index + // If the model list for the current LOD includes that index... + // if (mModel[i].size() > idx) { - instance.mLOD[i] = mModel[i][idx]; + // Assign that index from the model list for our LOD as the LOD model for this instance + // + lod_model = mModel[i][idx]; + if (importerDebug) + { + LL_INFOS() << "Indexed match of model index " << idx << " at LOD " << i << " to model named " << lod_model->mLabel << LL_ENDL; + } } - else + else if (importerDebug) + { + LL_INFOS() << "List of models does not include index " << idx << LL_ENDL; + } + } + + if (lod_model) + { + if (importerDebug) + { + if (i == LLModel::LOD_PHYSICS) + { + LL_INFOS() << "Assigning collision for " << instance.mLabel << " to match " << lod_model->mLabel << LL_ENDL; + } + else + { + LL_INFOS() << "Assigning LOD" << i << " for " << instance.mLabel << " to found match " << lod_model->mLabel << LL_ENDL; + } + } + instance.mLOD[i] = lod_model; + } + else if (importerDebug) + { + LL_INFOS() << "List of models does not include " << instance.mLabel << LL_ENDL; + } + } + + LLModel* high_lod_model = instance.mLOD[LLModel::LOD_HIGH]; + if (!high_lod_model) + { + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); + } + else + { + for (U32 i = 0; i < LLModel::NUM_LODS-1; i++) + { + int refFaceCnt = 0; + int modelFaceCnt = 0; + llassert(instance.mLOD[i]); + if (instance.mLOD[i] && !instance.mLOD[i]->matchMaterialOrder(high_lod_model, refFaceCnt, modelFaceCnt ) ) { - instance.mLOD[i] = NULL; + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); } } } @@ -3430,6 +1575,34 @@ void LLModelPreview::rebuildUploadData() } } + for (U32 lod = 0; lod < LLModel::NUM_LODS-1; lod++) + { + // Search for models that are not included into upload data + // If we found any, that means something we loaded is not a sub-model. + for (U32 model_ind = 0; model_ind < mModel[lod].size(); ++model_ind) + { + bool found_model = false; + for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) + { + LLModelInstance& instance = *iter; + if (instance.mLOD[lod] == mModel[lod][model_ind]) + { + found_model = true; + break; + } + } + if (!found_model && mModel[lod][model_ind] && !mModel[lod][model_ind]->mSubmodelID) + { + if (importerDebug) + { + LL_INFOS() << "Model " << mModel[lod][model_ind]->mLabel << " was not used - mismatching lod models." << LL_ENDL; + } + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); + } + } + } + F32 max_import_scale = (DEFAULT_MAX_PRIM_SCALE-0.1f)/max_scale; F32 max_axis = llmax(mPreviewScale.mV[0], mPreviewScale.mV[1]); @@ -3496,7 +1669,6 @@ void LLModelPreview::saveUploadData(const std::string& filename, bool save_skinw meshes.insert(instance.mModel); std::stringstream str; - LLModel::Decomposition& decomp = instance.mLOD[LLModel::LOD_PHYSICS].notNull() ? instance.mLOD[LLModel::LOD_PHYSICS]->mPhysics : @@ -3509,8 +1681,8 @@ void LLModelPreview::saveUploadData(const std::string& filename, bool save_skinw instance.mLOD[LLModel::LOD_LOW], instance.mLOD[LLModel::LOD_IMPOSTOR], decomp, - save_skinweights, save_joint_positions, FALSE, TRUE); - + save_skinweights, save_joint_positions, + FALSE, TRUE, instance.mModel->mSubmodelID); data["mesh"][instance.mModel->mLocalID] = str.str(); } @@ -3578,13 +1750,28 @@ void LLModelPreview::loadModel(std::string filename, S32 lod, bool force_disable clearGLODGroup(); } - mModelLoader = new LLModelLoader(filename, lod, this, mJointTransformMap, mJointsFromNode ); + mModelLoader = new LLDAELoader( + filename, + lod, + &LLModelPreview::loadedCallback, + &LLModelPreview::lookupJointByName, + &LLModelPreview::loadTextures, + &LLModelPreview::stateChangedCallback, + this, + mJointTransformMap, + mJointsFromNode, + gSavedSettings.getU32("ImporterModelLimit")); if (force_disable_slm) { mModelLoader->mTrySLM = false; } - + else + { + //only try to load from slm if viewer is configured to do so and this is the + //initial model load (not an LoD or physics shape) + mModelLoader->mTrySLM = gSavedSettings.getBOOL("MeshImportUseSLM") && mUploadData.empty(); + } mModelLoader->start(); mFMP->childSetTextArg("status", "[STATUS]", mFMP->getString("status_reading_file")); @@ -3615,6 +1802,7 @@ void LLModelPreview::setPhysicsFromLOD(S32 lod) if (lod >= 0 && lod <= 3) { + mPhysicsSearchLOD = lod; mModel[LLModel::LOD_PHYSICS] = mModel[lod]; mScene[LLModel::LOD_PHYSICS] = mScene[lod]; mLODFile[LLModel::LOD_PHYSICS].clear(); @@ -3634,11 +1822,14 @@ void LLModelPreview::clearIncompatible(S32 lod) return; } + // at this point we don't care about sub-models, + // different amount of sub-models means face count mismatch, not incompatibility + U32 lod_size = countRootModels(mModel[lod]); for (U32 i = 0; i <= LLModel::LOD_HIGH; i++) { //clear out any entries that aren't compatible with this model if (i != lod) { - if (mModel[i].size() != mModel[lod].size()) + if (countRootModels(mModel[i]) != lod_size) { mModel[i].clear(); mScene[i].clear(); @@ -3673,7 +1864,7 @@ void LLModelPreview::clearGLODGroup() } } -void LLModelPreview::loadModelCallback(S32 lod) +void LLModelPreview::loadModelCallback(S32 loaded_lod) { assert_main_thread(); @@ -3686,12 +1877,18 @@ void LLModelPreview::loadModelCallback(S32 lod) if(getLoadState() >= LLModelLoader::ERROR_PARSING) { mLoading = false ; + mModelLoader = NULL; return ; } + // Copy determinations about rig so UI will reflect them + // + setRigValidForJointPositionUpload(mModelLoader->isRigValidForJointPositionUpload()); + setLegacyRigValid(mModelLoader->isLegacyRigValid()); + mModelLoader->loadTextures() ; - if (lod == -1) + if (loaded_lod == -1) { //populate all LoDs from model loader scene mBaseModel.clear(); mBaseScene.clear(); @@ -3723,6 +1920,11 @@ void LLModelPreview::loadModelCallback(S32 lod) //override displayed model with current LoD list_iter->mModel = list_iter->mLOD[lod]; + if (!list_iter->mModel) + { + continue; + } + //add current model to current LoD's model list (LLModel::mLocalID makes a good vector index) S32 idx = list_iter->mModel->mLocalID; @@ -3731,7 +1933,7 @@ void LLModelPreview::loadModelCallback(S32 lod) mModel[lod].resize(idx+1); } - mModel[lod][idx] = list_iter->mModel; + mModel[lod][idx] = list_iter->mModel; if (!list_iter->mModel->mSkinWeights.empty()) { skin_weights = true; @@ -3774,31 +1976,108 @@ void LLModelPreview::loadModelCallback(S32 lod) } else { //only replace given LoD - mModel[lod] = mModelLoader->mModelList; - mScene[lod] = mModelLoader->mScene; - mVertexBuffer[lod].clear(); + mModel[loaded_lod] = mModelLoader->mModelList; + mScene[loaded_lod] = mModelLoader->mScene; + mVertexBuffer[loaded_lod].clear(); - setPreviewLOD(lod); + setPreviewLOD(loaded_lod); - if (lod == LLModel::LOD_HIGH) + if (loaded_lod == LLModel::LOD_HIGH) { //save a copy of the highest LOD for automatic LOD manipulation if (mBaseModel.empty()) { //first time we've loaded a model, auto-gen LoD mGenLOD = true; } - mBaseModel = mModel[lod]; + mBaseModel = mModel[loaded_lod]; clearGLODGroup(); - mBaseScene = mScene[lod]; + mBaseScene = mScene[loaded_lod]; mVertexBuffer[5].clear(); } + else + { + BOOL importerDebug = gSavedSettings.getBOOL("ImporterDebug"); + BOOL legacyMatching = gSavedSettings.getBOOL("ImporterLegacyMatching"); + if (!legacyMatching) + { + if (!mBaseModel.empty()) + { + BOOL name_based = FALSE; + BOOL has_submodels = FALSE; + for (U32 idx = 0; idx < mBaseModel.size(); ++idx) + { + if (mBaseModel[idx]->mSubmodelID) + { // don't do index-based renaming when the base model has submodels + has_submodels = TRUE; + if (importerDebug) + { + LL_INFOS() << "High LOD has submodels" << LL_ENDL; + } + break; + } + } - clearIncompatible(lod); + for (U32 idx = 0; idx < mModel[loaded_lod].size(); ++idx) + { + std::string loaded_name = stripSuffix(mModel[loaded_lod][idx]->mLabel); + + LLModel* found_model = NULL; + LLMatrix4 transform; + FindModel(mBaseScene, loaded_name, found_model, transform); + if (found_model) + { // don't rename correctly named models (even if they are placed in a wrong order) + name_based = TRUE; + } + + if (mModel[loaded_lod][idx]->mSubmodelID) + { // don't rename the models when loaded LOD model has submodels + has_submodels = TRUE; + } + } + + if (importerDebug) + { + LL_INFOS() << "Loaded LOD " << loaded_lod << ": correct names" << (name_based ? "" : "NOT ") << "found; submodels " << (has_submodels ? "" : "NOT ") << "found" << LL_ENDL; + } + + if (!name_based && !has_submodels) + { // replace the name of the model loaded for any non-HIGH LOD to match the others (MAINT-5601) + // this actually works like "ImporterLegacyMatching" for this particular LOD + for (U32 idx = 0; idx < mModel[loaded_lod].size() && idx < mBaseModel.size(); ++idx) + { + std::string name = mBaseModel[idx]->mLabel; + std::string loaded_name = stripSuffix(mModel[loaded_lod][idx]->mLabel); + + if (loaded_name != name) + { + switch (loaded_lod) + { + case LLModel::LOD_IMPOSTOR: name += "_LOD0"; break; + case LLModel::LOD_LOW: name += "_LOD1"; break; + case LLModel::LOD_MEDIUM: name += "_LOD2"; break; + case LLModel::LOD_PHYSICS: name += "_PHYS"; break; + case LLModel::LOD_HIGH: break; + } + + if (importerDebug) + { + LL_WARNS() << "Loded model name " << mModel[loaded_lod][idx]->mLabel << " for LOD " << loaded_lod << " doesn't match the base model. Renaming to " << name << LL_ENDL; + } + + mModel[loaded_lod][idx]->mLabel = name; + } + } + } + } + } + } + + clearIncompatible(loaded_lod); mDirty = true; - if (lod == LLModel::LOD_HIGH) + if (loaded_lod == LLModel::LOD_HIGH) { resetPreviewTarget(); } @@ -3810,16 +2089,15 @@ void LLModelPreview::loadModelCallback(S32 lod) mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->set(FALSE); if (!mBaseModel.empty()) { - if (mFMP->getChild<LLUICtrl>("description_form")->getValue().asString().empty()) - { - const std::string& model_name = mBaseModel[0]->getName(); - mFMP->getChild<LLUICtrl>("description_form")->setValue(model_name); - } + const std::string& model_name = mBaseModel[0]->getName(); + mFMP->getChild<LLUICtrl>("description_form")->setValue(model_name); } } refresh(); mModelLoadedSignal(); + + mModelLoader = NULL; } void LLModelPreview::resetPreviewTarget() @@ -4168,6 +2446,20 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); mModel[lod][mdl_idx] = new LLModel(volume_params, 0.f); + std::string name = base->mLabel; + + switch (lod) + { + case LLModel::LOD_IMPOSTOR: name += "_LOD0"; break; + case LLModel::LOD_LOW: name += "_LOD1"; break; + case LLModel::LOD_MEDIUM: name += "_LOD2"; break; + case LLModel::LOD_PHYSICS: name += "_PHYS"; break; + case LLModel::LOD_HIGH: break; + } + + mModel[lod][mdl_idx]->mLabel = name; + mModel[lod][mdl_idx]->mSubmodelID = base->mSubmodelID; + GLint* sizes = new GLint[patch_count*2]; glodGetObjectParameteriv(mObject[base], GLOD_PATCH_SIZES, sizes); stop_gloderror(); @@ -4280,17 +2572,112 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim { shader->bind(); } +} +void LLModelPreview::genModelBBox() +{ + LLVector3 min, max; + min = this->mModelLoader->mExtents[0]; + max = this->mModelLoader->mExtents[1]; + std::vector<LLVector3> v_list; + v_list.resize(4); + std::map<U8, std::vector<LLVector3> > face_list; + + // Face 0 + v_list[0] = LLVector3(min.mV[VX], max.mV[VY], max.mV[VZ]); + v_list[1] = LLVector3(min.mV[VX], min.mV[VY], max.mV[VZ]); + v_list[2] = LLVector3(max.mV[VX], min.mV[VY], max.mV[VZ]); + v_list[3] = LLVector3(max.mV[VX], max.mV[VY], max.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(0, v_list)); + + // Face 1 + v_list[0] = LLVector3(max.mV[VX], min.mV[VY], max.mV[VZ]); + v_list[1] = LLVector3(max.mV[VX], min.mV[VY], min.mV[VZ]); + v_list[2] = LLVector3(max.mV[VX], max.mV[VY], min.mV[VZ]); + v_list[3] = LLVector3(max.mV[VX], max.mV[VY], max.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(1, v_list)); + + // Face 2 + v_list[0] = LLVector3(min.mV[VX], max.mV[VY], min.mV[VZ]); + v_list[1] = LLVector3(min.mV[VX], max.mV[VY], max.mV[VZ]); + v_list[2] = LLVector3(max.mV[VX], max.mV[VY], max.mV[VZ]); + v_list[3] = LLVector3(max.mV[VX], max.mV[VY], min.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(2, v_list)); + + // Face 3 + v_list[0] = LLVector3(min.mV[VX], max.mV[VY], max.mV[VZ]); + v_list[1] = LLVector3(min.mV[VX], max.mV[VY], min.mV[VZ]); + v_list[2] = LLVector3(min.mV[VX], min.mV[VY], min.mV[VZ]); + v_list[3] = LLVector3(min.mV[VX], min.mV[VY], max.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(3, v_list)); + + // Face 4 + v_list[0] = LLVector3(min.mV[VX], min.mV[VY], max.mV[VZ]); + v_list[1] = LLVector3(min.mV[VX], min.mV[VY], min.mV[VZ]); + v_list[2] = LLVector3(max.mV[VX], min.mV[VY], min.mV[VZ]); + v_list[3] = LLVector3(max.mV[VX], min.mV[VY], max.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(4, v_list)); + + // Face 5 + v_list[0] = LLVector3(min.mV[VX], min.mV[VY], min.mV[VZ]); + v_list[1] = LLVector3(min.mV[VX], max.mV[VY], min.mV[VZ]); + v_list[2] = LLVector3(max.mV[VX], max.mV[VY], min.mV[VZ]); + v_list[3] = LLVector3(max.mV[VX], min.mV[VY], min.mV[VZ]); + face_list.insert(std::pair<U8, std::vector<LLVector3> >(5, v_list)); + + U16 Idx[] = { 0, 1, 2, 3, 0, 2, }; - /*if (which_lod == -1 && mScene[LLModel::LOD_PHYSICS].empty()) - { //build physics scene - mScene[LLModel::LOD_PHYSICS] = mScene[LLModel::LOD_LOW]; - mModel[LLModel::LOD_PHYSICS] = mModel[LLModel::LOD_LOW]; + U32 type_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0; + LLPointer<LLVertexBuffer> buff = new LLVertexBuffer(type_mask, 0); + buff->allocateBuffer(4, 6, true); - for (U32 i = 1; i < mModel[LLModel::LOD_PHYSICS].size(); ++i) - { - mPhysicsQ.push(mModel[LLModel::LOD_PHYSICS][i]); - } - }*/ + LLStrider<LLVector3> pos; + LLStrider<U16> idx; + LLStrider<LLVector3> norm; + LLStrider<LLVector2> tc; + + buff->getVertexStrider(pos); + buff->getIndexStrider(idx); + + buff->getNormalStrider(norm); + buff->getTexCoord0Strider(tc); + + for (U32 i = 0; i < 6; ++i) + { + idx[i] = Idx[i]; + } + + LLVolumeParams volume_params; + volume_params.setType(LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE); + LLModel* mdl = new LLModel(volume_params, 0.f); + mdl->mLabel = "BBOX"; // please adopt name from high LOD (mBaseModel) or from original model otherwise it breaks search mechanics which is name based + + mdl->setNumVolumeFaces(6); + for (U8 i = 0; i < 6; ++i) + { + for (U8 j = 0; j < 4; ++j) + { + pos[j] = face_list[i][j]; + } + + mdl->setVolumeFaceData(i, pos, norm, tc, idx, buff->getNumVerts(), buff->getNumIndices()); + } + + if (validate_model(mdl)) + { + LLMatrix4 mat; + std::map<std::string, LLImportMaterial> materials; + std::vector<LLModelInstance> instance_list; + instance_list.push_back(LLModelInstance(mdl, mdl->mLabel, mat, materials)); + + for (S32 i = LLModel::LOD_HIGH - 1; i >= 0; i--) + { + mModel[i].clear(); + mModel[i].push_back(mdl); + + mScene[i].clear(); + mScene[i].insert(std::pair<LLMatrix4, std::vector<LLModelInstance> >(mat, instance_list)); + } + } } void LLModelPreview::updateStatusMessages() @@ -4307,43 +2694,89 @@ void LLModelPreview::updateStatusMessages() S32 total_verts[LLModel::NUM_LODS]; S32 total_submeshes[LLModel::NUM_LODS]; - for (S32 lod = 0; lod < LLModel::NUM_LODS; ++lod) + for (U32 i = 0; i < LLModel::NUM_LODS-1; i++) + { + total_tris[i] = 0; + total_verts[i] = 0; + total_submeshes[i] = 0; + } + + for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) { - //initialize total for this lod to 0 - total_tris[lod] = total_verts[lod] = total_submeshes[lod] = 0; + LLModelInstance& instance = *iter; - for (LLModelLoader::scene::iterator iter = mScene[lod].begin(), endIter = mScene[lod].end(); iter != endIter; ++iter) + LLModel* model_high_lod = instance.mLOD[LLModel::LOD_HIGH]; + if (!model_high_lod) { - for (LLModelLoader::model_instance_list::iterator instance = iter->second.begin(), end_instance = iter->second.end(); instance != end_instance; ++instance) - { - LLModel* model = instance->mModel; - if (model) - { - //for each model in the lod - S32 cur_tris = 0; - S32 cur_verts = 0; - S32 cur_submeshes = model->getNumVolumeFaces(); + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); + continue; + } - for (S32 j = 0; j < cur_submeshes; ++j) - { //for each submesh (face), add triangles and vertices to current total - const LLVolumeFace& face = model->getVolumeFace(j); - cur_tris += face.mNumIndices/3; - cur_verts += face.mNumVertices; - } + for (U32 i = 0; i < LLModel::NUM_LODS-1; i++) + { + LLModel* lod_model = instance.mLOD[i]; + if (!lod_model) + { + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); + } - //add this model to the lod total - total_tris[lod] += cur_tris; - total_verts[lod] += cur_verts; - total_submeshes[lod] += cur_submeshes; + int refFaceCnt = 0; + int modelFaceCnt = 0; - //store this model's counts to asset data - tris[lod].push_back(cur_tris); - verts[lod].push_back(cur_verts); - submeshes[lod].push_back(cur_submeshes); + if (!lod_model->matchMaterialOrder(model_high_lod, refFaceCnt, modelFaceCnt ) ) + { + setLoadState( LLModelLoader::ERROR_MATERIALS ); + mFMP->childDisable( "calculate_btn" ); + } + + if (lod_model) + { + //for each model in the lod + S32 cur_tris = 0; + S32 cur_verts = 0; + S32 cur_submeshes = lod_model->getNumVolumeFaces(); + + for (S32 j = 0; j < cur_submeshes; ++j) + { //for each submesh (face), add triangles and vertices to current total + const LLVolumeFace& face = lod_model->getVolumeFace(j); + cur_tris += face.mNumIndices/3; + cur_verts += face.mNumVertices; } + + std::string instance_name = instance.mLabel; + + BOOL importerDebug = gSavedSettings.getBOOL("ImporterDebug"); + if (importerDebug) + { + // Useful for debugging generalized complaints below about total submeshes which don't have enough + // context to address exactly what needs to be fixed to move towards compliance with the rules. + // + LL_INFOS() << "Instance " << lod_model->mLabel << " LOD " << i << " Verts: " << cur_verts << LL_ENDL; + LL_INFOS() << "Instance " << lod_model->mLabel << " LOD " << i << " Tris: " << cur_tris << LL_ENDL; + LL_INFOS() << "Instance " << lod_model->mLabel << " LOD " << i << " Faces: " << cur_submeshes << LL_ENDL; + + LLModel::material_list::iterator mat_iter = lod_model->mMaterialList.begin(); + while (mat_iter != lod_model->mMaterialList.end()) + { + LL_INFOS() << "Instance " << lod_model->mLabel << " LOD " << i << " Material " << *(mat_iter) << LL_ENDL; + mat_iter++; + } + } + + //add this model to the lod total + total_tris[i] += cur_tris; + total_verts[i] += cur_verts; + total_submeshes[i] += cur_submeshes; + + //store this model's counts to asset data + tris[i].push_back(cur_tris); + verts[i].push_back(cur_verts); + submeshes[i].push_back(cur_submeshes); } } - } + } if (mMaxTriangleLimit == 0) { @@ -4357,37 +2790,48 @@ void LLModelPreview::updateStatusMessages() const LLVector4a scale(0.5f); for (U32 i = 0; i < mModel[lod].size() && !has_degenerate; ++i) { //for each model in the lod - if (mModel[lod][i]->mPhysics.mHull.empty()) + if (mModel[lod][i] && mModel[lod][i]->mPhysics.mHull.empty()) { //no decomp exists S32 cur_submeshes = mModel[lod][i]->getNumVolumeFaces(); for (S32 j = 0; j < cur_submeshes && !has_degenerate; ++j) { //for each submesh (face), add triangles and vertices to current total - const LLVolumeFace& face = mModel[lod][i]->getVolumeFace(j); - for (S32 k = 0; k < face.mNumIndices && !has_degenerate; ) + LLVolumeFace& face = mModel[lod][i]->getVolumeFace(j); + for (S32 k = 0; (k < face.mNumIndices) && !has_degenerate; ) { - LLVector4a v1; v1.setMul(face.mPositions[face.mIndices[k++]], scale); - LLVector4a v2; v2.setMul(face.mPositions[face.mIndices[k++]], scale); - LLVector4a v3; v3.setMul(face.mPositions[face.mIndices[k++]], scale); + U16 index_a = face.mIndices[k+0]; + U16 index_b = face.mIndices[k+1]; + U16 index_c = face.mIndices[k+2]; + + LLVector4a v1; v1.setMul(face.mPositions[index_a], scale); + LLVector4a v2; v2.setMul(face.mPositions[index_b], scale); + LLVector4a v3; v3.setMul(face.mPositions[index_c], scale); if (ll_is_degenerate(v1,v2,v3)) { has_degenerate = true; } + else + { + k += 3; + } } } } } } - + mFMP->childSetTextArg("submeshes_info", "[SUBMESHES]", llformat("%d", total_submeshes[LLModel::LOD_HIGH])); std::string mesh_status_na = mFMP->getString("mesh_status_na"); S32 upload_status[LLModel::LOD_HIGH+1]; - bool upload_ok = true; + mModelNoErrors = true; - for (S32 lod = 0; lod <= LLModel::LOD_HIGH; ++lod) + const U32 lod_high = LLModel::LOD_HIGH; + U32 high_submodel_count = mModel[lod_high].size() - countRootModels(mModel[lod_high]); + + for (S32 lod = 0; lod <= lod_high; ++lod) { upload_status[lod] = 0; @@ -4400,7 +2844,7 @@ void LLModelPreview::updateStatusMessages() } else { - if (lod == LLModel::LOD_HIGH) + if (lod == lod_high) { upload_status[lod] = 2; message = "mesh_status_missing_lod"; @@ -4421,8 +2865,6 @@ void LLModelPreview::updateStatusMessages() mFMP->childSetValue(lod_vertices_name[lod], mesh_status_na); } - const U32 lod_high = LLModel::LOD_HIGH; - if (lod != lod_high) { if (total_submeshes[lod] && total_submeshes[lod] != total_submeshes[lod_high]) @@ -4430,6 +2872,13 @@ void LLModelPreview::updateStatusMessages() message = "mesh_status_submesh_mismatch"; upload_status[lod] = 2; } + else if (mModel[lod].size() - countRootModels(mModel[lod]) != high_submodel_count) + {//number of submodels is different, not all faces are matched correctly. + message = "mesh_status_submesh_mismatch"; + upload_status[lod] = 2; + // Note: Submodels in instance were loaded from higher LOD and as result face count + // returns same value and total_submeshes[lod] is identical to high_lod one. + } else if (!tris[lod].empty() && tris[lod].size() != tris[lod_high].size()) { //number of meshes is different message = "mesh_status_mesh_mismatch"; @@ -4450,7 +2899,7 @@ void LLModelPreview::updateStatusMessages() { //too many vertices in this lod message = "mesh_status_too_many_vertices"; - upload_status[lod] = 2; + upload_status[lod] = 1; } } } @@ -4462,7 +2911,7 @@ void LLModelPreview::updateStatusMessages() if (upload_status[lod] >= 2) { - upload_ok = false; + mModelNoErrors = false; } if (lod == mPreviewLOD) @@ -4476,23 +2925,41 @@ void LLModelPreview::updateStatusMessages() } - //make sure no hulls have more than 256 points in them - for (U32 i = 0; upload_ok && i < mModel[LLModel::LOD_PHYSICS].size(); ++i) + //warn if hulls have more than 256 points in them + BOOL physExceededVertexLimit = FALSE; + for (U32 i = 0; mModelNoErrors && i < mModel[LLModel::LOD_PHYSICS].size(); ++i) { LLModel* mdl = mModel[LLModel::LOD_PHYSICS][i]; - for (U32 j = 0; upload_ok && j < mdl->mPhysics.mHull.size(); ++j) + if (mdl) { - if (mdl->mPhysics.mHull[j].size() > 256) + for (U32 j = 0; j < mdl->mPhysics.mHull.size(); ++j) { - upload_ok = false; + if (mdl->mPhysics.mHull[j].size() > 256) + { + physExceededVertexLimit = TRUE; + LL_INFOS() << "Physical model " << mdl->mLabel << " exceeds vertex per hull limitations." << LL_ENDL; + break; + } } } } + mFMP->childSetVisible("physics_status_message_text", physExceededVertexLimit); + LLIconCtrl* physStatusIcon = mFMP->getChild<LLIconCtrl>("physics_status_message_icon"); + physStatusIcon->setVisible(physExceededVertexLimit); + if (physExceededVertexLimit) + { + mFMP->childSetValue("physics_status_message_text", mFMP->getString("phys_status_vertex_limit_exceeded")); + LLUIImagePtr img = LLUI::getUIImage("ModelImport_Status_Warning"); + physStatusIcon->setImage(img); + } - bool errorStateFromLoader = getLoadState() >= LLModelLoader::ERROR_PARSING ? true : false; + if (getLoadState() >= LLModelLoader::ERROR_PARSING) + { + mModelNoErrors = false; + LL_INFOS() << "Loader returned errors, model can't be uploaded" << LL_ENDL; + } - bool skinAndRigOk = true; bool uploadingSkin = mFMP->childGetValue("upload_skin").asBoolean(); bool uploadingJointPositions = mFMP->childGetValue("upload_joints").asBoolean(); @@ -4500,19 +2967,23 @@ void LLModelPreview::updateStatusMessages() { if ( uploadingJointPositions && !isRigValidForJointPositionUpload() ) { - skinAndRigOk = false; - } + mModelNoErrors = false; + LL_INFOS() << "Invalid rig, there might be issues with uploading Joint positions" << LL_ENDL; + } } - - if(upload_ok && mModelLoader) + + if(mModelNoErrors && mModelLoader) { if(!mModelLoader->areTexturesReady() && mFMP->childGetValue("upload_textures").asBoolean()) { - upload_ok = false ; + // Some textures are still loading, prevent upload until they are done + mModelNoErrors = false; } } - if (!upload_ok || errorStateFromLoader || !skinAndRigOk || has_degenerate) + // Todo: investigate use of has_degenerate and include into mModelNoErrors upload blocking mechanics + // current use of has_degenerate won't block upload permanently - later checks will restore the button + if (!mModelNoErrors || has_degenerate) { mFMP->childDisable("ok_btn"); } @@ -4854,7 +3325,8 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights) LLModel* base_mdl = *base_iter; base_iter++; - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) + S32 num_faces = mdl->getNumVolumeFaces(); + for (S32 i = 0; i < num_faces; ++i) { const LLVolumeFace &vf = mdl->getVolumeFace(i); U32 num_vertices = vf.mNumVertices; @@ -4949,23 +3421,23 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights) void LLModelPreview::update() { - if (mDirty) + if (mGenLOD) { - mDirty = false; - mResourceCost = calcResourceCost(); + mGenLOD = false; + genLODs(); refresh(); updateStatusMessages(); } - if (mGenLOD) + if (mDirty) { - mGenLOD = false; - genLODs(); + mDirty = false; + mResourceCost = calcResourceCost(); refresh(); updateStatusMessages(); } - } + //----------------------------------------------------------------------------- // getTranslationForJointOffset() //----------------------------------------------------------------------------- @@ -4999,8 +3471,77 @@ void LLModelPreview::createPreviewAvatar( void ) } else { - LL_INFOS()<<"Failed to create preview avatar for upload model window"<<LL_ENDL; + LL_INFOS() << "Failed to create preview avatar for upload model window" << LL_ENDL; + } +} + +//static +U32 LLModelPreview::countRootModels(LLModelLoader::model_list models) +{ + U32 root_models = 0; + model_list::iterator model_iter = models.begin(); + while (model_iter != models.end()) + { + LLModel* mdl = *model_iter; + if (mdl && mdl->mSubmodelID == 0) + { + root_models++; + } + model_iter++; + } + return root_models; +} + +void LLModelPreview::loadedCallback( + LLModelLoader::scene& scene, + LLModelLoader::model_list& model_list, + S32 lod, + void* opaque) +{ + LLModelPreview* pPreview = static_cast< LLModelPreview* >(opaque); + if (pPreview && !LLModelPreview::sIgnoreLoadedCallback) + { + pPreview->loadModelCallback(lod); + } +} + +void LLModelPreview::stateChangedCallback(U32 state,void* opaque) +{ + LLModelPreview* pPreview = static_cast< LLModelPreview* >(opaque); + if (pPreview) + { + pPreview->setLoadState(state); + } +} + +LLJoint* LLModelPreview::lookupJointByName(const std::string& str, void* opaque) +{ + LLModelPreview* pPreview = static_cast< LLModelPreview* >(opaque); + if (pPreview) + { + return pPreview->getPreviewAvatar()->getJoint(str); } + return NULL; +} + +U32 LLModelPreview::loadTextures(LLImportMaterial& material,void* opaque) +{ + (void)opaque; + + if (material.mDiffuseMapFilename.size()) + { + material.mOpaqueData = new LLPointer< LLViewerFetchedTexture >; + LLPointer< LLViewerFetchedTexture >& tex = (*reinterpret_cast< LLPointer< LLViewerFetchedTexture > * >(material.mOpaqueData)); + + tex = LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_PREVIEW); + tex->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, opaque, NULL, FALSE); + tex->forceToSaveRawImage(0, F32_MAX); + material.setDiffuseMap(tex->getID()); // record tex ID + return 1; + } + + material.mOpaqueData = NULL; + return 0; } void LLModelPreview::addEmptyFace( LLModel* pTarget ) @@ -5128,6 +3669,7 @@ BOOL LLModelPreview::render() fmp->enableViewOption("show_skin_weight"); fmp->setViewOptionEnabled("show_joint_positions", skin_weight); mFMP->childEnable("upload_skin"); + mFMP->childSetValue("show_skin_weight", skin_weight); } } else @@ -5138,8 +3680,11 @@ BOOL LLModelPreview::render() mViewOption["show_skin_weight"] = false; fmp->disableViewOption("show_skin_weight"); fmp->disableViewOption("show_joint_positions"); + + skin_weight = false; + mFMP->childSetValue("show_skin_weight", false); + fmp->setViewOptionEnabled("show_skin_weight", skin_weight); } - skin_weight = false; } if (upload_skin && !has_skin_weights) @@ -5243,29 +3788,20 @@ BOOL LLModelPreview::render() const LLVertexBuffer* buff = vb_vec[0]; regen = buff->hasDataType(LLVertexBuffer::TYPE_WEIGHT4) != skin_weight; } - } - - //make sure material lists all match - for (U32 i = 0; i < LLModel::NUM_LODS-1; i++) - { - if (mBaseModel.size() == mModel[i].size()) + else { - for (U32 j = 0; j < mBaseModel.size(); ++j) - { - int refFaceCnt = 0; - int modelFaceCnt = 0; - - if ( !mModel[i][j]->matchMaterialOrder(mBaseModel[j], refFaceCnt, modelFaceCnt ) ) - { - mFMP->childDisable( "calculate_btn" ); - } - } + LL_INFOS() << "Vertex Buffer[" << mPreviewLOD << "]" << " is EMPTY!!!" << LL_ENDL; + regen = TRUE; } } if (regen) { genBuffers(mPreviewLOD, skin_weight); + { + LL_INFOS() << "Vertex Buffer[" << mPreviewLOD << "]" << " is EMPTY!!!" << LL_ENDL; + regen = TRUE; + } } if (!skin_weight) @@ -5276,62 +3812,63 @@ BOOL LLModelPreview::render() LLModel* model = instance.mLOD[mPreviewLOD]; - if (!model) - { - continue; - } + if (!model) + { + continue; + } - gGL.pushMatrix(); - LLMatrix4 mat = instance.mTransform; + gGL.pushMatrix(); + LLMatrix4 mat = instance.mTransform; - gGL.multMatrix((GLfloat*) mat.mMatrix); + gGL.multMatrix((GLfloat*) mat.mMatrix); - for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i) - { - LLVertexBuffer* buffer = mVertexBuffer[mPreviewLOD][model][i]; - - buffer->setBuffer(type_mask & buffer->getTypeMask()); - if (textures) + U32 num_models = mVertexBuffer[mPreviewLOD][model].size(); + for (U32 i = 0; i < num_models; ++i) { - int materialCnt = instance.mModel->mMaterialList.size(); - if ( i < materialCnt ) + LLVertexBuffer* buffer = mVertexBuffer[mPreviewLOD][model][i]; + + buffer->setBuffer(type_mask & buffer->getTypeMask()); + + if (textures) { - const std::string& binding = instance.mModel->mMaterialList[i]; - const LLImportMaterial& material = instance.mMaterial[binding]; + int materialCnt = instance.mModel->mMaterialList.size(); + if ( i < materialCnt ) + { + const std::string& binding = instance.mModel->mMaterialList[i]; + const LLImportMaterial& material = instance.mMaterial[binding]; - gGL.diffuseColor4fv(material.mDiffuseColor.mV); + gGL.diffuseColor4fv(material.mDiffuseColor.mV); - if (material.mDiffuseMap.notNull()) - { - if (material.mDiffuseMap->getDiscardLevel() > -1) + // Find the tex for this material, bind it, and add it to our set + // + LLViewerFetchedTexture* tex = bindMaterialDiffuseTexture(material); + if (tex) { - gGL.getTexUnit(0)->bind(material.mDiffuseMap, true); - mTextureSet.insert(material.mDiffuseMap.get()); + mTextureSet.insert(tex); } } } - } - else - { - gGL.diffuseColor4f(1,1,1,1); - } - - buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); + else + { + gGL.diffuseColor4f(1,1,1,1); + } - if (edges) - { - glLineWidth(3.f); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glLineWidth(1.f); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.diffuseColor3f(0.4f, 0.4f, 0.4f); + + if (edges) + { + glLineWidth(3.f); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glLineWidth(1.f); + } } + gGL.popMatrix(); } - gGL.popMatrix(); - } if (physics) { @@ -5359,97 +3896,99 @@ BOOL LLModelPreview::render() LLModel* model = instance.mLOD[LLModel::LOD_PHYSICS]; - if (!model) - { - continue; - } + if (!model) + { + continue; + } - gGL.pushMatrix(); - LLMatrix4 mat = instance.mTransform; + gGL.pushMatrix(); + LLMatrix4 mat = instance.mTransform; gGL.multMatrix((GLfloat*) mat.mMatrix); - bool render_mesh = true; + bool render_mesh = true; - LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; - if (decomp) - { - LLMutexLock(decomp->mMutex); + LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; + if (decomp) + { + LLMutexLock(decomp->mMutex); - LLModel::Decomposition& physics = model->mPhysics; + LLModel::Decomposition& physics = model->mPhysics; - if (!physics.mHull.empty()) - { - render_mesh = false; + if (!physics.mHull.empty()) + { + render_mesh = false; - if (physics.mMesh.empty()) - { //build vertex buffer for physics mesh - gMeshRepo.buildPhysicsMesh(physics); - } + if (physics.mMesh.empty()) + { //build vertex buffer for physics mesh + gMeshRepo.buildPhysicsMesh(physics); + } - if (!physics.mMesh.empty()) - { //render hull instead of mesh - for (U32 i = 0; i < physics.mMesh.size(); ++i) - { - if (explode > 0.f) + if (!physics.mMesh.empty()) + { //render hull instead of mesh + for (U32 i = 0; i < physics.mMesh.size(); ++i) { - gGL.pushMatrix(); + if (explode > 0.f) + { + gGL.pushMatrix(); - LLVector3 offset = model->mHullCenter[i]-model->mCenterOfHullCenters; - offset *= explode; + LLVector3 offset = model->mHullCenter[i]-model->mCenterOfHullCenters; + offset *= explode; - gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); - } + gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); + } - static std::vector<LLColor4U> hull_colors; + static std::vector<LLColor4U> hull_colors; - if (i+1 >= hull_colors.size()) - { - hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 128)); - } + if (i+1 >= hull_colors.size()) + { + hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 128)); + } - gGL.diffuseColor4ubv(hull_colors[i].mV); - LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); + gGL.diffuseColor4ubv(hull_colors[i].mV); + LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); - if (explode > 0.f) - { - gGL.popMatrix(); + if (explode > 0.f) + { + gGL.popMatrix(); + } } } } } - } - - if (render_mesh) - { - if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) - { - genBuffers(LLModel::LOD_PHYSICS, false); - } - for (U32 i = 0; i < mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); ++i) + + if (render_mesh) { - LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i]; + if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) + { + genBuffers(LLModel::LOD_PHYSICS, false); + } - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.diffuseColor4f(0.4f, 0.4f, 0.0f, 0.4f); + U32 num_models = mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); + for (U32 i = 0; i < num_models; ++i) + { + LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i]; - buffer->setBuffer(type_mask & buffer->getTypeMask()); - buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.diffuseColor4f(0.4f, 0.4f, 0.0f, 0.4f); - gGL.diffuseColor3f(1.f, 1.f, 0.f); + buffer->setBuffer(type_mask & buffer->getTypeMask()); + buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); - glLineWidth(2.f); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + gGL.diffuseColor3f(1.f, 1.f, 0.f); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glLineWidth(1.f); + glLineWidth(2.f); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glLineWidth(1.f); + } } - } - gGL.popMatrix(); - } + gGL.popMatrix(); + } glLineWidth(3.f); glPointSize(8.f); @@ -5561,7 +4100,7 @@ BOOL LLModelPreview::render() if (!model->mSkinWeights.empty()) { - for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i) + for (U32 i = 0, e = mVertexBuffer[mPreviewLOD][model].size(); i < e; ++i) { LLVertexBuffer* buffer = mVertexBuffer[mPreviewLOD][model][i]; @@ -5630,19 +4169,20 @@ BOOL LLModelPreview::render() position[j] = v; } + llassert(model->mMaterialList.size() > i); const std::string& binding = instance.mModel->mMaterialList[i]; const LLImportMaterial& material = instance.mMaterial[binding]; buffer->setBuffer(type_mask & buffer->getTypeMask()); gGL.diffuseColor4fv(material.mDiffuseColor.mV); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - if (material.mDiffuseMap.notNull()) + + // Find the tex for this material, bind it, and add it to our set + // + LLViewerFetchedTexture* tex = bindMaterialDiffuseTexture(material); + if (tex) { - if (material.mDiffuseMap->getDiscardLevel() > -1) - { - gGL.getTexUnit(0)->bind(material.mDiffuseMap, true); - mTextureSet.insert(material.mDiffuseMap.get()); - } + mTextureSet.insert(tex); } buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0); @@ -5757,14 +4297,14 @@ void LLFloaterModelPreview::onReset(void* user_data) LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) user_data; fmp->childDisable("reset_btn"); LLModelPreview* mp = fmp->mModelPreview; - std::string filename = mp->mLODFile[3]; + std::string filename = mp->mLODFile[LLModel::LOD_HIGH]; fmp->resetDisplayOptions(); //reset model preview fmp->initModelPreview(); mp = fmp->mModelPreview; - mp->loadModel(filename,3,true); + mp->loadModel(filename,LLModel::LOD_HIGH,true); } //static @@ -5858,7 +4398,7 @@ void LLFloaterModelPreview::toggleCalculateButton(bool visible) } mUploadBtn->setVisible(!visible); - mUploadBtn->setEnabled(mHasUploadPerm && !mUploadModelUrl.empty()); + mUploadBtn->setEnabled(isModelUploadAllowed()); if (visible) { @@ -5924,7 +4464,7 @@ void LLFloaterModelPreview::handleModelPhysicsFeeReceived() childSetTextArg("price_breakdown", "[MODEL]", llformat("%d", result["upload_price_breakdown"]["model"].asInteger())); childSetVisible("upload_fee", true); childSetVisible("price_breakdown", true); - mUploadBtn->setEnabled(mHasUploadPerm && !mUploadModelUrl.empty()); + mUploadBtn->setEnabled(isModelUploadAllowed()); } void LLFloaterModelPreview::setModelPhysicsFeeErrorStatus(S32 status, const std::string& reason) @@ -5948,6 +4488,16 @@ void LLFloaterModelPreview::onModelUploadFailure() mUploadBtn->setEnabled(true); } +bool LLFloaterModelPreview::isModelUploadAllowed() +{ + bool allow_upload = mHasUploadPerm && !mUploadModelUrl.empty(); + if (mModelPreview) + { + allow_upload &= mModelPreview->mModelNoErrors; + } + return allow_upload; +} + S32 LLFloaterModelPreview::DecompRequest::statusCallback(const char* status, S32 p1, S32 p2) { if (mContinue) @@ -5997,8 +4547,8 @@ void LLFloaterModelPreview::onPermissionsReceived(const LLSD& result) // BAP HACK: handle "" for case that MeshUploadFlag cap is broken. mHasUploadPerm = (("" == upload_status) || ("valid" == upload_status)); - //mUploadBtn->setEnabled(mHasUploadPerm); - mUploadBtn->setEnabled(mHasUploadPerm && !mUploadModelUrl.empty()); + // isModelUploadAllowed() includes mHasUploadPerm + mUploadBtn->setEnabled(isModelUploadAllowed()); getChild<LLTextBox>("warning_title")->setVisible(!mHasUploadPerm); getChild<LLTextBox>("warning_message")->setVisible(!mHasUploadPerm); } diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 618748bd4e..07e29d09c7 100755..100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -37,6 +37,8 @@ #include "llviewermenufile.h" #include "llfloatermodeluploadbase.h" +#include "lldaeloader.h" + class LLComboBox; class LLJoint; class LLViewerJointMesh; @@ -45,103 +47,18 @@ class LLTextBox; class LLVertexBuffer; class LLModelPreview; class LLFloaterModelPreview; +class DAE; class daeElement; class domProfile_COMMON; class domInstance_geometry; class domNode; class domTranslate; class domController; +class domSkin; +class domMesh; class LLMenuButton; class LLToggleableMenu; -typedef std::map<std::string, LLMatrix4> JointTransformMap; -typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; - -const S32 NUM_LOD = 4; - -class LLModelLoader : public LLThread -{ -public: - typedef enum - { - STARTING = 0, - READING_FILE, - CREATING_FACES, - GENERATING_VERTEX_BUFFERS, - GENERATING_LOD, - DONE, - ERROR_PARSING, //basically loading failed - ERROR_MATERIALS, - } eLoadState; - - U32 mState; - std::string mFilename; - S32 mLod; - LLModelPreview* mPreview; - LLMatrix4 mTransform; - BOOL mFirstTransform; - LLVector3 mExtents[2]; - bool mTrySLM; - - std::map<daeElement*, LLPointer<LLModel> > mModel; - - typedef std::vector<LLPointer<LLModel> > model_list; - model_list mModelList; - - typedef std::vector<LLModelInstance> model_instance_list; - - typedef std::map<LLMatrix4, model_instance_list > scene; - - scene mScene; - - typedef std::queue<LLPointer<LLModel> > model_queue; - - //queue of models that need a physics rep - model_queue mPhysicsQ; - - LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, - std::deque<std::string>& jointsFromNodes ); - ~LLModelLoader() ; - - virtual void run(); - bool doLoadModel(); - bool loadFromSLM(const std::string& filename); - void loadModelCallback(); - - void loadTextures() ; //called in the main thread. - void processElement(daeElement* element, bool& badElement); - std::map<std::string, LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); - LLImportMaterial profileToMaterial(domProfile_COMMON* material); - std::string getElementLabel(daeElement *element); - LLColor4 getDaeColor(daeElement* element); - - daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); - - bool isNodeAJoint( domNode* pNode ); - void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); - void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); - void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); - void extractTranslationViaSID( daeElement* pElement, LLMatrix4& transform ); - - void setLoadState(U32 state); - - void buildJointToNodeMappingFromScene( daeElement* pRoot ); - void processJointToNodeMapping( domNode* pNode ); - void processChildJoints( domNode* pParentNode ); - - //map of avatar joints as named in COLLADA assets to internal joint names - std::map<std::string, std::string> mJointMap; - JointTransformMap& mJointList; - std::deque<std::string>& mJointsFromNode; - - S32 mNumOfFetchingTextures ; //updated in the main thread - bool areTexturesReady() { return !mNumOfFetchingTextures; } //called in the main thread. - -private: - static std::list<LLModelLoader*> sActiveLoaderList; - static bool isAlive(LLModelLoader* loader) ; -}; - class LLFloaterModelPreview : public LLFloaterModelUploadBase { public: @@ -172,6 +89,7 @@ public: BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); static void onMouseCaptureLostModelPreview(LLMouseHandler*); static void setUploadAmount(S32 amount) { sUploadAmount = amount; } @@ -210,6 +128,8 @@ public: /*virtual*/ void onModelUploadFailure(); + bool isModelUploadAllowed(); + protected: friend class LLModelPreview; friend class LLMeshFilePicker; @@ -342,6 +262,7 @@ public: void loadModel(std::string filename, S32 lod, bool force_disable_slm = false); void loadModelCallback(S32 lod); void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false); + void genModelBBox(); // Generate just a model BBox if we can't generate proper LOD void generateNormals(); void restoreNormals(); U32 calcResourceCost(); @@ -359,21 +280,14 @@ public: void setHasPivot( bool val ) { mHasPivot = val; } void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } - //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) - void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); - void critiqueJointToNodeMappingFromScene( void ); //Is a rig valid so that it can be used as a criteria for allowing for uploading of joint positions //Accessors for joint position upload friendly rigs const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } - bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); - //Determines if a rig is a legacy from the joint list - bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); + //Accessors for the legacy rigs const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } - void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } - //Verify that a controller matches vertex counts - bool verifyController( domController* pController ); + void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); @@ -388,6 +302,16 @@ public: LLVector3 getTranslationForJointOffset( std::string joint ); + static bool sIgnoreLoadedCallback; + +protected: + + static void loadedCallback(LLModelLoader::scene& scene,LLModelLoader::model_list& model_list, S32 lod, void* opaque); + static void stateChangedCallback(U32 state, void* opaque); + + static LLJoint* lookupJointByName(const std::string&, void* opaque); + static U32 loadTextures(LLImportMaterial& material, void* opaque); + private: //Utility function for controller vertex compare bool verifyCount( int expected, int result ); @@ -395,6 +319,8 @@ private: void createPreviewAvatar( void ); //Accessor for the dummy avatar LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } + // Count amount of original models, excluding sub-models + static U32 countRootModels(LLModelLoader::model_list models); protected: friend class LLModelLoader; @@ -416,13 +342,15 @@ private: LLVector3 mPreviewTarget; LLVector3 mPreviewScale; S32 mPreviewLOD; + S32 mPhysicsSearchLOD; U32 mResourceCost; std::string mLODFile[LLModel::NUM_LODS]; bool mLoading; U32 mLoadState; bool mResetJoints; bool mRigParityWithScene; - + bool mModelNoErrors; + std::map<std::string, bool> mViewOption; //GLOD object parameters (must rebuild object if these change) @@ -459,7 +387,7 @@ private: U32 mMaxTriangleLimit; LLMeshUploadThread::instance_list mUploadData; - std::set<LLViewerFetchedTexture* > mTextureSet; + std::set<LLViewerFetchedTexture * > mTextureSet; //map of vertex buffers to models (one vertex buffer in vector per face in model std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1]; @@ -478,10 +406,9 @@ private: bool mLastJointUpdate; - std::deque<std::string> mMasterJointList; - std::deque<std::string> mMasterLegacyJointList; - std::deque<std::string> mJointsFromNode; - JointTransformMap mJointTransformMap; + JointSet mJointsFromNode; + JointTransformMap mJointTransformMap; + LLPointer<LLVOAvatar> mPreviewAvatar; }; diff --git a/indra/newview/llfloatermodeluploadbase.cpp b/indra/newview/llfloatermodeluploadbase.cpp index 22a8ac4705..22a8ac4705 100755..100644 --- a/indra/newview/llfloatermodeluploadbase.cpp +++ b/indra/newview/llfloatermodeluploadbase.cpp diff --git a/indra/newview/llfloatermodeluploadbase.h b/indra/newview/llfloatermodeluploadbase.h index d9a8879687..d9a8879687 100755..100644 --- a/indra/newview/llfloatermodeluploadbase.h +++ b/indra/newview/llfloatermodeluploadbase.h diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp index 0cca715fe2..0cca715fe2 100755..100644 --- a/indra/newview/llfloaternamedesc.cpp +++ b/indra/newview/llfloaternamedesc.cpp diff --git a/indra/newview/llfloaternamedesc.h b/indra/newview/llfloaternamedesc.h index 41643681ac..41643681ac 100755..100644 --- a/indra/newview/llfloaternamedesc.h +++ b/indra/newview/llfloaternamedesc.h diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index fd03efa061..fd03efa061 100755..100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h index 4e92b7d857..4e92b7d857 100755..100644 --- a/indra/newview/llfloaternotificationsconsole.h +++ b/indra/newview/llfloaternotificationsconsole.h diff --git a/indra/newview/llfloaternotificationstabbed.cpp b/indra/newview/llfloaternotificationstabbed.cpp new file mode 100644 index 0000000000..4b5fe4989a --- /dev/null +++ b/indra/newview/llfloaternotificationstabbed.cpp @@ -0,0 +1,575 @@ +/** + * @file llfloaternotificationstabbed.cpp + * @brief + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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 "llfloaternotificationstabbed.h" + +#include "llchiclet.h" +#include "llchicletbar.h" +#include "llflatlistview.h" +#include "llfloaterreg.h" +#include "llnotificationmanager.h" +#include "llnotificationsutil.h" +#include "llscriptfloater.h" +#include "llspeakers.h" +#include "lltoastpanel.h" +#include "lltoastnotifypanel.h" + +//--------------------------------------------------------------------------------- +LLFloaterNotificationsTabbed::LLFloaterNotificationsTabbed(const LLSD& key) : LLTransientDockableFloater(NULL, true, key), + mChannel(NULL), + mSysWellChiclet(NULL), + mGroupInviteMessageList(NULL), + mGroupNoticeMessageList(NULL), + mTransactionMessageList(NULL), + mSystemMessageList(NULL), + mNotificationsSeparator(NULL), + mNotificationsTabContainer(NULL), + NOTIFICATION_TABBED_ANCHOR_NAME("notification_well_panel"), + IM_WELL_ANCHOR_NAME("im_well_panel"), + mIsReshapedByUser(false) + +{ + setOverlapsScreenChannel(true); + mNotificationUpdates.reset(new NotificationTabbedChannel(this)); + mNotificationsSeparator = new LLNotificationSeparator(); +} + +//--------------------------------------------------------------------------------- +BOOL LLFloaterNotificationsTabbed::postBuild() +{ + mGroupInviteMessageList = getChild<LLNotificationListView>("group_invite_notification_list"); + mGroupNoticeMessageList = getChild<LLNotificationListView>("group_notice_notification_list"); + mTransactionMessageList = getChild<LLNotificationListView>("transaction_notification_list"); + mSystemMessageList = getChild<LLNotificationListView>("system_notification_list"); + mNotificationsSeparator->initTaggedList(LLNotificationListItem::getGroupInviteTypes(), mGroupInviteMessageList); + mNotificationsSeparator->initTaggedList(LLNotificationListItem::getGroupNoticeTypes(), mGroupNoticeMessageList); + mNotificationsSeparator->initTaggedList(LLNotificationListItem::getTransactionTypes(), mTransactionMessageList); + mNotificationsSeparator->initUnTaggedList(mSystemMessageList); + mNotificationsTabContainer = getChild<LLTabContainer>("notifications_tab_container"); + + mDeleteAllBtn = getChild<LLButton>("delete_all_button"); + mDeleteAllBtn->setClickedCallback(boost::bind(&LLFloaterNotificationsTabbed::onClickDeleteAllBtn,this)); + + mCollapseAllBtn = getChild<LLButton>("collapse_all_button"); + mCollapseAllBtn->setClickedCallback(boost::bind(&LLFloaterNotificationsTabbed::onClickCollapseAllBtn,this)); + + // get a corresponding channel + initChannel(); + BOOL rv = LLTransientDockableFloater::postBuild(); + + setTitle(getString("title_notification_tabbed_window")); + return rv; +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::setMinimized(BOOL minimize) +{ + LLTransientDockableFloater::setMinimized(minimize); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::handleReshape(const LLRect& rect, bool by_user) +{ + mIsReshapedByUser |= by_user; // mark floater that it is reshaped by user + LLTransientDockableFloater::handleReshape(rect, by_user); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onStartUpToastClick(S32 x, S32 y, MASK mask) +{ + // just set floater visible. Screen channels will be cleared. + setVisible(TRUE); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::setSysWellChiclet(LLSysWellChiclet* chiclet) +{ + mSysWellChiclet = chiclet; + if(NULL != mSysWellChiclet) + { + mSysWellChiclet->updateWidget(isWindowEmpty()); + } +} + +//--------------------------------------------------------------------------------- +LLFloaterNotificationsTabbed::~LLFloaterNotificationsTabbed() +{ +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::removeItemByID(const LLUUID& id, std::string type) +{ + if(mNotificationsSeparator->removeItemByID(type, id)) + { + if (NULL != mSysWellChiclet) + { + mSysWellChiclet->updateWidget(isWindowEmpty()); + } + reshapeWindow(); + updateNotificationCounters(); + } + else + { + LL_WARNS() << "Unable to remove notification from the list, ID: " << id + << LL_ENDL; + } + + // hide chiclet window if there are no items left + if(isWindowEmpty()) + { + setVisible(FALSE); + } +} + +//--------------------------------------------------------------------------------- +LLPanel * LLFloaterNotificationsTabbed::findItemByID(const LLUUID& id, std::string type) +{ + return mNotificationsSeparator->findItemByID(type, id); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::initChannel() +{ + LLNotificationsUI::LLScreenChannelBase* channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID( + LLUUID(gSavedSettings.getString("NotificationChannelUUID"))); + mChannel = dynamic_cast<LLNotificationsUI::LLScreenChannel*>(channel); + if(NULL == mChannel) + { + LL_WARNS() << "LLSysWellWindow::initChannel() - could not get a requested screen channel" << LL_ENDL; + } + + if(mChannel) + { + mChannel->addOnStoreToastCallback(boost::bind(&LLFloaterNotificationsTabbed::onStoreToast, this, _1, _2)); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::setVisible(BOOL visible) +{ + if (visible) + { + // when Notification channel is cleared, storable toasts will be added into the list. + clearScreenChannels(); + } + if (visible) + { + if (NULL == getDockControl() && getDockTongue().notNull()) + { + setDockControl(new LLDockControl( + LLChicletBar::getInstance()->getChild<LLView>(getAnchorViewName()), this, + getDockTongue(), LLDockControl::BOTTOM)); + } + } + + // do not show empty window + if (NULL == mNotificationsSeparator || isWindowEmpty()) visible = FALSE; + + LLTransientDockableFloater::setVisible(visible); + + // update notification channel state + initChannel(); // make sure the channel still exists + if(mChannel) + { + mChannel->updateShowToastsState(); + mChannel->redrawToasts(); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::setDocked(bool docked, bool pop_on_undock) +{ + LLTransientDockableFloater::setDocked(docked, pop_on_undock); + + // update notification channel state + if(mChannel) + { + mChannel->updateShowToastsState(); + mChannel->redrawToasts(); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::reshapeWindow() +{ + // update notification channel state + // update on a window reshape is important only when a window is visible and docked + if(mChannel && getVisible() && isDocked()) + { + mChannel->updateShowToastsState(); + } +} + +//--------------------------------------------------------------------------------- +bool LLFloaterNotificationsTabbed::isWindowEmpty() +{ + return mNotificationsSeparator->size() == 0; +} + +//--------------------------------------------------------------------------------- +LLFloaterNotificationsTabbed::NotificationTabbedChannel::NotificationTabbedChannel(LLFloaterNotificationsTabbed* notifications_tabbed_window) + : LLNotificationChannel(LLNotificationChannel::Params().name(notifications_tabbed_window->getPathname())), + mNotificationsTabbedWindow(notifications_tabbed_window) +{ + connectToChannel("Notifications"); + connectToChannel("Group Notifications"); + connectToChannel("Offer"); +} + +// static +//--------------------------------------------------------------------------------- +LLFloaterNotificationsTabbed* LLFloaterNotificationsTabbed::getInstance(const LLSD& key /*= LLSD()*/) +{ + return LLFloaterReg::getTypedInstance<LLFloaterNotificationsTabbed>("notification_well_window", key); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::updateNotificationCounter(S32 panelIndex, S32 counterValue, std::string stringName) +{ + LLStringUtil::format_map_t string_args; + string_args["[COUNT]"] = llformat("%d", counterValue); + std::string label = getString(stringName, string_args); + mNotificationsTabContainer->setPanelTitle(panelIndex, label); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::updateNotificationCounters() +{ + updateNotificationCounter(0, mSystemMessageList->size(), "system_tab_title"); + updateNotificationCounter(1, mTransactionMessageList->size(), "transactions_tab_title"); + updateNotificationCounter(2, mGroupInviteMessageList->size(), "group_invitations_tab_title"); + updateNotificationCounter(3, mGroupNoticeMessageList->size(), "group_notices_tab_title"); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::addItem(LLNotificationListItem::Params p) +{ + // do not add clones + if (mNotificationsSeparator->findItemByID(p.notification_name, p.notification_id)) + return; + LLNotificationListItem* new_item = LLNotificationListItem::create(p); + if (new_item == NULL) + { + return; + } + if (mNotificationsSeparator->addItem(new_item->getNotificationName(), new_item)) + { + mSysWellChiclet->updateWidget(isWindowEmpty()); + reshapeWindow(); + updateNotificationCounters(); + new_item->setOnItemCloseCallback(boost::bind(&LLFloaterNotificationsTabbed::onItemClose, this, _1)); + new_item->setOnItemClickCallback(boost::bind(&LLFloaterNotificationsTabbed::onItemClick, this, _1)); + } + else + { + LL_WARNS() << "Unable to add Notification into the list, notification ID: " << p.notification_id + << ", title: " << new_item->getTitle() + << LL_ENDL; + + new_item->die(); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::closeAll() +{ + // Need to clear notification channel, to add storable toasts into the list. + clearScreenChannels(); + + std::vector<LLNotificationListItem*> items; + mNotificationsSeparator->getItems(items); + std::vector<LLNotificationListItem*>::iterator iter = items.begin(); + for (; iter != items.end(); ++iter) + { + onItemClose(*iter); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::getAllItemsOnCurrentTab(std::vector<LLPanel*>& items) const +{ + switch (mNotificationsTabContainer->getCurrentPanelIndex()) + { + case 0: + mSystemMessageList->getItems(items); + break; + case 1: + mTransactionMessageList->getItems(items); + break; + case 2: + mGroupInviteMessageList->getItems(items); + break; + case 3: + mGroupNoticeMessageList->getItems(items); + break; + default: + break; + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::closeAllOnCurrentTab() +{ + // Need to clear notification channel, to add storable toasts into the list. + clearScreenChannels(); + std::vector<LLPanel*> items; + getAllItemsOnCurrentTab(items); + std::vector<LLPanel*>::iterator iter = items.begin(); + for (; iter != items.end(); ++iter) + { + LLNotificationListItem* notify_item = dynamic_cast<LLNotificationListItem*>(*iter); + if (notify_item) + onItemClose(notify_item); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::collapseAllOnCurrentTab() +{ + std::vector<LLPanel*> items; + getAllItemsOnCurrentTab(items); + std::vector<LLPanel*>::iterator iter = items.begin(); + for (; iter != items.end(); ++iter) + { + LLNotificationListItem* notify_item = dynamic_cast<LLNotificationListItem*>(*iter); + if (notify_item) + notify_item->setExpanded(FALSE); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::clearScreenChannels() +{ + // 1 - remove StartUp toast and channel if present + if(!LLNotificationsUI::LLScreenChannel::getStartUpToastShown()) + { + LLNotificationsUI::LLChannelManager::getInstance()->onStartUpToastClose(); + } + + // 2 - remove toasts in Notification channel + if(mChannel) + { + mChannel->removeAndStoreAllStorableToasts(); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onStoreToast(LLPanel* info_panel, LLUUID id) +{ + LLNotificationListItem::Params p; + p.notification_id = id; + p.title = static_cast<LLToastPanel*>(info_panel)->getTitle(); + LLNotificationPtr notify = mChannel->getToastByNotificationID(id)->getNotification(); + LLSD payload = notify->getPayload(); + p.notification_name = notify->getName(); + p.transaction_id = payload["transaction_id"]; + p.group_id = payload["group_id"]; + p.fee = payload["fee"]; + p.subject = payload["subject"].asString(); + p.message = payload["message"].asString(); + p.sender = payload["sender_name"].asString(); + p.time_stamp = notify->getDate(); + p.received_time = payload["received_time"].asDate(); + p.paid_from_id = payload["from_id"]; + p.paid_to_id = payload["dest_id"]; + p.inventory_offer = payload["inventory_offer"]; + p.notification_priority = notify->getPriority(); + addItem(p); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onItemClick(LLNotificationListItem* item) +{ + LLUUID id = item->getID(); + if (item->showPopup()) + { + LLFloaterReg::showInstance("inspect_toast", id); + } + else + { + item->setExpanded(TRUE); + } +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onItemClose(LLNotificationListItem* item) +{ + LLUUID id = item->getID(); + + if(mChannel) + { + // removeItemByID() is invoked from killToastByNotificationID() and item will removed; + mChannel->killToastByNotificationID(id); + } + else + { + // removeItemByID() should be called one time for each item to remove it from notification well + removeItemByID(id, item->getNotificationName()); + } + +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onAdd( LLNotificationPtr notify ) +{ + removeItemByID(notify->getID(), notify->getName()); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onClickDeleteAllBtn() +{ + closeAllOnCurrentTab(); +} + +//--------------------------------------------------------------------------------- +void LLFloaterNotificationsTabbed::onClickCollapseAllBtn() +{ + collapseAllOnCurrentTab(); +} + +//--------------------------------------------------------------------------------- +void LLNotificationSeparator::initTaggedList(const std::string& tag, LLNotificationListView* list) +{ + mNotificationListMap.insert(notification_list_map_t::value_type(tag, list)); + mNotificationLists.push_back(list); +} + +//--------------------------------------------------------------------------------- +void LLNotificationSeparator::initTaggedList(const std::set<std::string>& tags, LLNotificationListView* list) +{ + std::set<std::string>::const_iterator it = tags.begin(); + for(;it != tags.end();it++) + { + initTaggedList(*it, list); + } +} + +//--------------------------------------------------------------------------------- +void LLNotificationSeparator::initUnTaggedList(LLNotificationListView* list) +{ + mUnTaggedList = list; +} + +//--------------------------------------------------------------------------------- +bool LLNotificationSeparator::addItem(std::string& tag, LLNotificationListItem* item) +{ + notification_list_map_t::iterator it = mNotificationListMap.find(tag); + if (it != mNotificationListMap.end()) + { + return it->second->addNotification(item); + } + else if (mUnTaggedList != NULL) + { + return mUnTaggedList->addNotification(item); + } + return false; +} + +//--------------------------------------------------------------------------------- +bool LLNotificationSeparator::removeItemByID(std::string& tag, const LLUUID& id) +{ + notification_list_map_t::iterator it = mNotificationListMap.find(tag); + if (it != mNotificationListMap.end()) + { + return it->second->removeItemByValue(id); + } + else if (mUnTaggedList != NULL) + { + return mUnTaggedList->removeItemByValue(id); + } + return false; +} + +//--------------------------------------------------------------------------------- +U32 LLNotificationSeparator::size() const +{ + U32 size = 0; + notification_list_list_t::const_iterator it = mNotificationLists.begin(); + for (; it != mNotificationLists.end(); it++) + { + size = size + (*it)->size(); + } + if (mUnTaggedList != NULL) + { + size = size + mUnTaggedList->size(); + } + return size; +} + +//--------------------------------------------------------------------------------- +LLPanel* LLNotificationSeparator::findItemByID(std::string& tag, const LLUUID& id) +{ + notification_list_map_t::iterator it = mNotificationListMap.find(tag); + if (it != mNotificationListMap.end()) + { + return it->second->getItemByValue(id); + } + else if (mUnTaggedList != NULL) + { + return mUnTaggedList->getItemByValue(id); + } + + return NULL; +} + +//static +//--------------------------------------------------------------------------------- +void LLNotificationSeparator::getItemsFromList(std::vector<LLNotificationListItem*>& items, LLNotificationListView* list) +{ + std::vector<LLPanel*> list_items; + list->getItems(list_items); + std::vector<LLPanel*>::iterator it = list_items.begin(); + for (; it != list_items.end(); ++it) + { + LLNotificationListItem* notify_item = dynamic_cast<LLNotificationListItem*>(*it); + if (notify_item) + items.push_back(notify_item); + } +} + +//--------------------------------------------------------------------------------- +void LLNotificationSeparator::getItems(std::vector<LLNotificationListItem*>& items) const +{ + items.clear(); + notification_list_list_t::const_iterator lists_it = mNotificationLists.begin(); + for (; lists_it != mNotificationLists.end(); lists_it++) + { + getItemsFromList(items, *lists_it); + } + if (mUnTaggedList != NULL) + { + getItemsFromList(items, mUnTaggedList); + } +} + +//--------------------------------------------------------------------------------- +LLNotificationSeparator::LLNotificationSeparator() + : mUnTaggedList(NULL) +{} + +//--------------------------------------------------------------------------------- +LLNotificationSeparator::~LLNotificationSeparator() +{} diff --git a/indra/newview/llfloaternotificationstabbed.h b/indra/newview/llfloaternotificationstabbed.h new file mode 100644 index 0000000000..8dd20b18c4 --- /dev/null +++ b/indra/newview/llfloaternotificationstabbed.h @@ -0,0 +1,174 @@ +/** + * @file llfloaternotificationstabbed.h + * @brief + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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_FLOATERNOTIFICATIONSTABBED_H +#define LL_FLOATERNOTIFICATIONSTABBED_H + +#include "llimview.h" +#include "llnotifications.h" +#include "llscreenchannel.h" +#include "llsyswellitem.h" +#include "lltransientdockablefloater.h" +#include "llnotificationlistview.h" +#include "lltabcontainer.h" + +class LLAvatarName; +class LLChiclet; +class LLFlatListView; +class LLIMChiclet; +class LLScriptChiclet; +class LLSysWellChiclet; + +class LLNotificationSeparator +{ +public: + LLNotificationSeparator(); + ~LLNotificationSeparator(); + void initTaggedList(const std::string& tag, LLNotificationListView* list); + void initTaggedList(const std::set<std::string>& tags, LLNotificationListView* list); + void initUnTaggedList(LLNotificationListView* list); + bool addItem(std::string& tag, LLNotificationListItem* item); + LLPanel* findItemByID(std::string& tag, const LLUUID& id); + bool removeItemByID(std::string& tag, const LLUUID& id); + void getItems(std::vector<LLNotificationListItem*>& items) const; + U32 size() const; +private: + static void getItemsFromList(std::vector<LLNotificationListItem*>& items, LLNotificationListView* list); + + typedef std::map<std::string, LLNotificationListView*> notification_list_map_t; + notification_list_map_t mNotificationListMap; + typedef std::list<LLNotificationListView*> notification_list_list_t; + notification_list_list_t mNotificationLists; + LLNotificationListView* mUnTaggedList; +}; + +class LLFloaterNotificationsTabbed : public LLTransientDockableFloater +{ +public: + LOG_CLASS(LLFloaterNotificationsTabbed); + + LLFloaterNotificationsTabbed(const LLSD& key); + virtual ~LLFloaterNotificationsTabbed(); + BOOL postBuild(); + + // other interface functions + // check is window empty + bool isWindowEmpty(); + + // Operating with items + void removeItemByID(const LLUUID& id, std::string type); + LLPanel * findItemByID(const LLUUID& id, std::string type); + void updateNotificationCounters(); + void updateNotificationCounter(S32 panelIndex, S32 counterValue, std::string stringName); + + // Operating with outfit + virtual void setVisible(BOOL visible); + + /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); + // override LLFloater's minimization according to EXT-1216 + /*virtual*/ void setMinimized(BOOL minimize); + /*virtual*/ void handleReshape(const LLRect& rect, bool by_user); + + void onStartUpToastClick(S32 x, S32 y, MASK mask); + /*virtual*/ void onAdd(LLNotificationPtr notify); + + void setSysWellChiclet(LLSysWellChiclet* chiclet); + void closeAll(); + + static LLFloaterNotificationsTabbed* getInstance(const LLSD& key = LLSD()); + + // size constants for the window and for its elements + static const S32 MAX_WINDOW_HEIGHT = 200; + static const S32 MIN_WINDOW_WIDTH = 318; + +private: + // init Window's channel + virtual void initChannel(); + + const std::string NOTIFICATION_TABBED_ANCHOR_NAME; + const std::string IM_WELL_ANCHOR_NAME; + //virtual const std::string& getAnchorViewName() = 0; + + void reshapeWindow(); + + // pointer to a corresponding channel's instance + LLNotificationsUI::LLScreenChannel* mChannel; + + /** + * Reference to an appropriate Well chiclet to release "new message" state. EXT-3147 + */ + LLSysWellChiclet* mSysWellChiclet; + + bool mIsReshapedByUser; + + struct NotificationTabbedChannel : public LLNotificationChannel + { + NotificationTabbedChannel(LLFloaterNotificationsTabbed*); + void onDelete(LLNotificationPtr notify) + { + mNotificationsTabbedWindow->removeItemByID(notify->getID(), notify->getName()); + } + + LLFloaterNotificationsTabbed* mNotificationsTabbedWindow; + }; + + LLNotificationChannelPtr mNotificationUpdates; + virtual const std::string& getAnchorViewName() { return NOTIFICATION_TABBED_ANCHOR_NAME; } + + // init Window's channel + // void initChannel(); + void clearScreenChannels(); + // Operating with items + void addItem(LLNotificationListItem::Params p); + void getAllItemsOnCurrentTab(std::vector<LLPanel*>& items) const; + + // Closes all notifications and removes them from the Notification Well + void closeAllOnCurrentTab(); + void collapseAllOnCurrentTab(); + + void onStoreToast(LLPanel* info_panel, LLUUID id); + void onClickDeleteAllBtn(); + void onClickCollapseAllBtn(); + // Handlers + void onItemClick(LLNotificationListItem* item); + void onItemClose(LLNotificationListItem* item); + // ID of a toast loaded by user (by clicking notification well item) + LLUUID mLoadedToastId; + + LLNotificationListView* mGroupInviteMessageList; + LLNotificationListView* mGroupNoticeMessageList; + LLNotificationListView* mTransactionMessageList; + LLNotificationListView* mSystemMessageList; + LLNotificationSeparator* mNotificationsSeparator; + LLTabContainer* mNotificationsTabContainer; + LLButton* mDeleteAllBtn; + LLButton* mCollapseAllBtn; +}; + +#endif // LL_FLOATERNOTIFICATIONSTABBED_H + + + diff --git a/indra/newview/llfloaterobjectweights.cpp b/indra/newview/llfloaterobjectweights.cpp index feaeef4ad0..feaeef4ad0 100755..100644 --- a/indra/newview/llfloaterobjectweights.cpp +++ b/indra/newview/llfloaterobjectweights.cpp diff --git a/indra/newview/llfloaterobjectweights.h b/indra/newview/llfloaterobjectweights.h index 1a2c317bad..1a2c317bad 100755..100644 --- a/indra/newview/llfloaterobjectweights.h +++ b/indra/newview/llfloaterobjectweights.h diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index ef746d308d..ef746d308d 100755..100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp diff --git a/indra/newview/llfloateropenobject.h b/indra/newview/llfloateropenobject.h index 2e761f99bf..2e761f99bf 100755..100644 --- a/indra/newview/llfloateropenobject.h +++ b/indra/newview/llfloateropenobject.h diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp index e5efca1102..b7b1634a5f 100755..100644 --- a/indra/newview/llfloateroutbox.cpp +++ b/indra/newview/llfloateroutbox.cpp @@ -160,6 +160,12 @@ BOOL LLFloaterOutbox::postBuild() mCategoryAddedObserver = new LLOutboxAddedObserver(this); gInventory.addObserver(mCategoryAddedObserver); + // Setup callbacks for importer + LLMarketplaceInventoryImporter& importer = LLMarketplaceInventoryImporter::instance(); + importer.setInitializationErrorCallback(boost::bind(&LLFloaterOutbox::initializationReportError, this, _1, _2)); + importer.setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1)); + importer.setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2)); + return TRUE; } @@ -298,12 +304,8 @@ void LLFloaterOutbox::initializeMarketPlace() // Initialize the marketplace import API // LLMarketplaceInventoryImporter& importer = LLMarketplaceInventoryImporter::instance(); - if (!importer.isInitialized()) { - importer.setInitializationErrorCallback(boost::bind(&LLFloaterOutbox::initializationReportError, this, _1, _2)); - importer.setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1)); - importer.setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2)); importer.initialize(); } } @@ -516,7 +518,7 @@ void LLFloaterOutbox::onImportButtonClicked() { mOutboxInventoryPanel.get()->clearSelection(); } - + mImportBusy = LLMarketplaceInventoryImporter::instance().triggerImport(); } @@ -617,3 +619,5 @@ void LLFloaterOutbox::showNotification(const LLNotificationPtr& notification) notification_handler->processNotification(notification); } + + diff --git a/indra/newview/llfloateroutbox.h b/indra/newview/llfloateroutbox.h index 40519c8fd2..2cf69fc3cc 100755..100644 --- a/indra/newview/llfloateroutbox.h +++ b/indra/newview/llfloateroutbox.h @@ -1,7 +1,6 @@ /** * @file llfloateroutbox.h - * @brief LLFloaterOutbox - * class definition + * @brief Implementation of the merchant outbox window * * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code @@ -30,6 +29,7 @@ #include "llfloater.h" #include "llfoldertype.h" +#include "llinventoryfilter.h" #include "llnotificationptr.h" diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp index 87f927ff65..87f927ff65 100755..100644 --- a/indra/newview/llfloaterpathfindingcharacters.cpp +++ b/indra/newview/llfloaterpathfindingcharacters.cpp diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h index 4021f4f119..4021f4f119 100755..100644 --- a/indra/newview/llfloaterpathfindingcharacters.h +++ b/indra/newview/llfloaterpathfindingcharacters.h diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index ccf3e723fd..ccf3e723fd 100755..100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index e999e57741..e999e57741 100755..100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 1e46d7a402..1e46d7a402 100755..100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index 7149da9215..7149da9215 100755..100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index f6ff83eaf4..f6ff83eaf4 100755..100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h index 4024e15fd6..4024e15fd6 100755..100644 --- a/indra/newview/llfloaterpathfindingobjects.h +++ b/indra/newview/llfloaterpathfindingobjects.h diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index 31245db344..31245db344 100755..100644 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp diff --git a/indra/newview/llfloaterpay.h b/indra/newview/llfloaterpay.h index f322e5ef04..f322e5ef04 100755..100644 --- a/indra/newview/llfloaterpay.h +++ b/indra/newview/llfloaterpay.h diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index 042cf47070..04a818c2c0 100755..100644 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -166,15 +166,59 @@ void LLFloaterPermsDefault::onCommitCopy(const LLSD& user_data) xfer->setEnabled(copyable); } -class LLFloaterPermsResponder : public LLHTTPClient::Responder +const int MAX_HTTP_RETRIES = 5; +LLFloaterPermsRequester* LLFloaterPermsRequester::sPermsRequester = NULL; + +LLFloaterPermsRequester::LLFloaterPermsRequester(const std::string url, const LLSD report, + int maxRetries) + : mRetriesCount(0), mMaxRetries(maxRetries), mUrl(url), mReport(report) +{} + +//static +void LLFloaterPermsRequester::init(const std::string url, const LLSD report, int maxRetries) +{ + if (sPermsRequester == NULL) { + sPermsRequester = new LLFloaterPermsRequester(url, report, maxRetries); + } +} + +//static +void LLFloaterPermsRequester::finalize() +{ + if (sPermsRequester != NULL) + { + delete sPermsRequester; + sPermsRequester = NULL; + } +} + +//static +LLFloaterPermsRequester* LLFloaterPermsRequester::instance() +{ + return sPermsRequester; +} + +void LLFloaterPermsRequester::start() { -public: - LLFloaterPermsResponder(): LLHTTPClient::Responder() {} -private: - static std::string sPreviousReason; + ++mRetriesCount; + LLHTTPClient::post(mUrl, mReport, new LLFloaterPermsResponder()); +} + +bool LLFloaterPermsRequester::retry() +{ + if (++mRetriesCount < mMaxRetries) + { + LLHTTPClient::post(mUrl, mReport, new LLFloaterPermsResponder()); + return true; + } + return false; +} - void httpFailure() +void LLFloaterPermsResponder::httpFailure() +{ + if (!LLFloaterPermsRequester::instance() || !LLFloaterPermsRequester::instance()->retry()) { + LLFloaterPermsRequester::finalize(); const std::string& reason = getReason(); // Do not display the same error more than once in a row if (reason != sPreviousReason) @@ -185,27 +229,27 @@ private: LLNotificationsUtil::add("DefaultObjectPermissions", args); } } +} - void httpSuccess() - { - //const LLSD& content = getContent(); - //dump_sequential_xml("perms_responder_result.xml", content); - - // Since we have had a successful POST call be sure to display the next error message - // even if it is the same as a previous one. - sPreviousReason = ""; - LLFloaterPermsDefault::setCapSent(true); - LL_INFOS("ObjectPermissionsFloater") << "Default permissions successfully sent to simulator" << LL_ENDL; - } -}; +void LLFloaterPermsResponder::httpSuccess() +{ + //const LLSD& content = getContent(); + //dump_sequential_xml("perms_responder_result.xml", content); - std::string LLFloaterPermsResponder::sPreviousReason; + // Since we have had a successful POST call be sure to display the next error message + // even if it is the same as a previous one. + sPreviousReason = ""; + LL_INFOS("ObjectPermissionsFloater") << "Default permissions successfully sent to simulator" << LL_ENDL; +} + +std::string LLFloaterPermsResponder::sPreviousReason; void LLFloaterPermsDefault::sendInitialPerms() { if(!mCapSent) { updateCap(); + setCapSent(true); } } @@ -230,8 +274,8 @@ void LLFloaterPermsDefault::updateCap() LLSDSerialize::toPrettyXML(report, sent_perms_log); LL_CONT << sent_perms_log.str() << LL_ENDL; } - - LLHTTPClient::post(object_url, report, new LLFloaterPermsResponder()); + LLFloaterPermsRequester::init(object_url, report, MAX_HTTP_RETRIES); + LLFloaterPermsRequester::instance()->start(); } else { diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h index 2bb0a19dc1..d3b52c1fe5 100755..100644 --- a/indra/newview/llfloaterperms.h +++ b/indra/newview/llfloaterperms.h @@ -29,6 +29,7 @@ #define LL_LLFLOATERPERMPREFS_H #include "llfloater.h" +#include "llhttpclient.h" class LLFloaterPerms : public LLFloater { @@ -89,4 +90,36 @@ private: bool mNextOwnerTransfer[CAT_LAST]; }; +class LLFloaterPermsRequester +{ +public: + LLFloaterPermsRequester(const std::string url, const LLSD report, int maxRetries); + + static void init(const std::string url, const LLSD report, int maxRetries); + static void finalize(); + static LLFloaterPermsRequester* instance(); + + void start(); + bool retry(); + +private: + int mRetriesCount; + int mMaxRetries; + const std::string mUrl; + const LLSD mReport; +public: + static LLFloaterPermsRequester* sPermsRequester; +}; + +class LLFloaterPermsResponder : public LLHTTPClient::Responder +{ +public: + LLFloaterPermsResponder() : LLHTTPClient::Responder() {} +private: + static std::string sPreviousReason; + + void httpFailure(); + void httpSuccess(); +}; + #endif diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp index 2d61109e17..2d61109e17 100755..100644 --- a/indra/newview/llfloaterpostprocess.cpp +++ b/indra/newview/llfloaterpostprocess.cpp diff --git a/indra/newview/llfloaterpostprocess.h b/indra/newview/llfloaterpostprocess.h index 424a5fc8f0..424a5fc8f0 100755..100644 --- a/indra/newview/llfloaterpostprocess.h +++ b/indra/newview/llfloaterpostprocess.h diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index ee4396758e..f7861fb4fd 100755..100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -49,6 +49,7 @@ //#include "llfirstuse.h" #include "llfloaterreg.h" #include "llfloaterabout.h" +#include "llfavoritesbar.h" #include "llfloaterhardwaresettings.h" #include "llfloatersidepanelcontainer.h" #include "llfloaterimsession.h" @@ -107,6 +108,7 @@ #include "llpluginclassmedia.h" #include "llteleporthistorystorage.h" #include "llproxy.h" +#include "llweb.h" #include "lllogininstance.h" // to check if logged in yet #include "llsdserialize.h" @@ -1919,7 +1921,7 @@ BOOL LLPanelPreference::postBuild() } if (hasChild("favorites_on_login_check", TRUE)) { - getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setCommitCallback(boost::bind(&showFavoritesOnLoginWarning, _1, _2)); + getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setCommitCallback(boost::bind(&handleFavoritesOnLoginChanged, _1, _2)); bool show_favorites_at_login = LLPanelLogin::getShowFavorites(); getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setValue(show_favorites_at_login); } @@ -1941,6 +1943,16 @@ BOOL LLPanelPreference::postBuild() gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&LLPanelPreference::Updater::update, mBandWidthUpdater, _2)); } +#ifdef EXTERNAL_TOS + LLRadioGroup* ext_browser_settings = getChild<LLRadioGroup>("preferred_browser_behavior"); + if (ext_browser_settings) + { + // turn off ability to set external/internal browser + ext_browser_settings->setSelectedByValue(LLWeb::BROWSER_EXTERNAL_ONLY, true); + ext_browser_settings->setEnabled(false); + } +#endif + apply(); return true; } @@ -2004,11 +2016,15 @@ void LLPanelPreference::showFriendsOnlyWarning(LLUICtrl* checkbox, const LLSD& v } } -void LLPanelPreference::showFavoritesOnLoginWarning(LLUICtrl* checkbox, const LLSD& value) +void LLPanelPreference::handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const LLSD& value) { - if (checkbox && checkbox->getValue()) + if (checkbox) { - LLNotificationsUtil::add("FavoritesOnLogin"); + LLFavoritesOrderStorage::instance().showFavoritesOnLoginChanged(checkbox->getValue().asBoolean()); + if(checkbox->getValue()) + { + LLNotificationsUtil::add("FavoritesOnLogin"); + } } } @@ -2235,6 +2251,11 @@ void LLFloaterPreferenceProxy::onOpen(const LLSD& key) void LLFloaterPreferenceProxy::onClose(bool app_quitting) { + if(app_quitting) + { + cancel(); + } + if (mSocksSettingsDirty) { @@ -2334,6 +2355,11 @@ void LLFloaterPreferenceProxy::onBtnCancel() cancel(); } +void LLFloaterPreferenceProxy::onClickCloseBtn(bool app_quitting) +{ + cancel(); +} + void LLFloaterPreferenceProxy::cancel() { @@ -2344,7 +2370,7 @@ void LLFloaterPreferenceProxy::cancel() LLSD ctrl_value = iter->second; control->set(ctrl_value); } - + mSocksSettingsDirty = false; closeFloater(); } diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 7bf6ae7d79..04e5e37731 100755..100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -229,7 +229,7 @@ private: //for "Only friends and groups can call or IM me" static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&); //for "Show my Favorite Landmarks at Login" - static void showFavoritesOnLoginWarning(LLUICtrl* checkbox, const LLSD& value); + static void handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const LLSD& value); typedef std::map<std::string, LLColor4> string_color_map_t; string_color_map_t mSavedColors; @@ -269,6 +269,7 @@ protected: void saveSettings(); void onBtnOk(); void onBtnCancel(); + void onClickCloseBtn(bool app_quitting = false); void onChangeSocksSettings(); diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index 6bfc780722..6bfc780722 100755..100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h index aa3fcec337..aa3fcec337 100755..100644 --- a/indra/newview/llfloaterproperties.h +++ b/indra/newview/llfloaterproperties.h diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index 40757a4d04..40757a4d04 100755..100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp diff --git a/indra/newview/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h index fd3af4152e..fd3af4152e 100755..100644 --- a/indra/newview/llfloaterregiondebugconsole.h +++ b/indra/newview/llfloaterregiondebugconsole.h diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index a2af9da670..5d1e01c1f7 100755..100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -92,6 +92,11 @@ #include "llagentui.h" #include "llmeshrepository.h" #include "llfloaterregionrestarting.h" +#include "llpanelexperiencelisteditor.h" +#include <boost/function.hpp> +#include "llpanelexperiencepicker.h" +#include "llexperiencecache.h" +#include "llpanelexperiences.h" const S32 TERRAIN_TEXTURE_COUNT = 4; const S32 CORNER_COUNT = 4; @@ -126,6 +131,18 @@ public: const sparam_t& strings); }; +class LLDispatchSetEstateExperience : public LLDispatchHandler +{ +public: + virtual bool operator()( + const LLDispatcher* dispatcher, + const std::string& key, + const LLUUID& invoice, + const sparam_t& strings); + + LLSD getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count ); +}; + /* void unpack_request_params( @@ -215,6 +232,14 @@ BOOL LLFloaterRegionInfo::postBuild() panel->buildFromFile("panel_region_debug.xml"); mTab->addTabPanel(panel); + if(!gAgent.getRegion()->getCapability("RegionExperiences").empty()) + { + panel = new LLPanelRegionExperiences; + mInfoPanels.push_back(panel); + panel->buildFromFile("panel_region_experiences.xml"); + mTab->addTabPanel(panel); + } + gMessageSystem->setHandlerFunc( "EstateOwnerMessage", &processEstateOwnerRequest); @@ -445,6 +470,16 @@ LLPanelRegionTerrainInfo* LLFloaterRegionInfo::getPanelRegionTerrain() return panel; } +LLPanelRegionExperiences* LLFloaterRegionInfo::getPanelExperiences() +{ + LLFloaterRegionInfo* floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info"); + if (!floater) return NULL; + LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels"); + return (LLPanelRegionExperiences*)tab->getChild<LLPanel>("Experiences"); +} + + + void LLFloaterRegionInfo::onTabSelected(const LLSD& param) { LLPanel* active_panel = getChild<LLPanel>(param.asString()); @@ -1394,6 +1429,11 @@ void LLPanelEstateInfo::initDispatch(LLDispatcher& dispatch) static LLDispatchSetEstateAccess set_access; dispatch.addHandler(name, &set_access); + + name.assign("setexperience"); + static LLDispatchSetEstateExperience set_experience; + dispatch.addHandler(name, &set_experience); + estate_dispatch_initialized = true; } @@ -2903,6 +2943,56 @@ bool LLDispatchSetEstateAccess::operator()( return true; } +LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count ) +{ + LLSD idList = LLSD::emptyArray(); + LLUUID id; + while(count--> 0) + { + memcpy(id.mData, (*(it++)).data(), UUID_BYTES); + idList.append(id); + } + return idList; +} + +// key = "setexperience" +// strings[0] = str(estate_id) +// strings[1] = str(send_to_agent_only) +// strings[2] = str(num blocked) +// strings[3] = str(num trusted) +// strings[4] = str(num allowed) +// strings[8] = bin(uuid) ... +// ... +bool LLDispatchSetEstateExperience::operator()( + const LLDispatcher* dispatcher, + const std::string& key, + const LLUUID& invoice, + const sparam_t& strings) +{ + LLPanelRegionExperiences* panel = LLFloaterRegionInfo::getPanelExperiences(); + if (!panel) return true; + + sparam_t::const_iterator it = strings.begin(); + ++it; // U32 estate_id = strtol((*it).c_str(), NULL, 10); + ++it; // U32 send_to_agent_only = strtoul((*(++it)).c_str(), NULL, 10); + + LLUUID id; + S32 num_blocked = strtol((*(it++)).c_str(), NULL, 10); + S32 num_trusted = strtol((*(it++)).c_str(), NULL, 10); + S32 num_allowed = strtol((*(it++)).c_str(), NULL, 10); + + LLSD ids = LLSD::emptyMap() + .with("blocked", getIDs(it, strings.end(), num_blocked)) + .with("trusted", getIDs(it + (num_blocked), strings.end(), num_trusted)) + .with("allowed", getIDs(it + (num_blocked+num_trusted), strings.end(), num_allowed)); + + panel->processResponse(ids); + + return true; +} + + + LLPanelEnvironmentInfo::LLPanelEnvironmentInfo() : mEnableEditing(false), mRegionSettingsRadioGroup(NULL), @@ -3494,3 +3584,284 @@ void LLPanelEnvironmentInfo::onRegionSettingsApplied(bool ok) LLEnvManagerNew::instance().requestRegionSettings(); } } + +BOOL LLPanelRegionExperiences::postBuild() +{ + mAllowed = setupList("panel_allowed", ESTATE_EXPERIENCE_ALLOWED_ADD, ESTATE_EXPERIENCE_ALLOWED_REMOVE); + mTrusted = setupList("panel_trusted", ESTATE_EXPERIENCE_TRUSTED_ADD, ESTATE_EXPERIENCE_TRUSTED_REMOVE); + mBlocked = setupList("panel_blocked", ESTATE_EXPERIENCE_BLOCKED_ADD, ESTATE_EXPERIENCE_BLOCKED_REMOVE); + + getChild<LLLayoutPanel>("trusted_layout_panel")->setVisible(TRUE); + getChild<LLTextBox>("experiences_help_text")->setText(getString("estate_caption")); + getChild<LLTextBox>("trusted_text_help")->setText(getString("trusted_estate_text")); + getChild<LLTextBox>("allowed_text_help")->setText(getString("allowed_estate_text")); + getChild<LLTextBox>("blocked_text_help")->setText(getString("blocked_estate_text")); + + return LLPanelRegionInfo::postBuild(); +} + +LLPanelExperienceListEditor* LLPanelRegionExperiences::setupList( const char* control_name, U32 add_id, U32 remove_id ) +{ + LLPanelExperienceListEditor* child = findChild<LLPanelExperienceListEditor>(control_name); + if(child) + { + child->getChild<LLTextBox>("text_name")->setText(child->getString(control_name)); + child->setMaxExperienceIDs(ESTATE_MAX_EXPERIENCE_IDS); + child->setAddedCallback( boost::bind(&LLPanelRegionExperiences::itemChanged, this, add_id, _1)); + child->setRemovedCallback(boost::bind(&LLPanelRegionExperiences::itemChanged, this, remove_id, _1)); + } + + return child; +} + + +void LLPanelRegionExperiences::processResponse( const LLSD& content ) +{ + if(content.has("default")) + { + mDefaultExperience = content["default"].asUUID(); + } + + mAllowed->setExperienceIds(content["allowed"]); + mBlocked->setExperienceIds(content["blocked"]); + + LLSD trusted = content["trusted"]; + if(mDefaultExperience.notNull()) + { + mTrusted->setStickyFunction(boost::bind(LLPanelExperiencePicker::FilterMatching, _1, mDefaultExperience)); + trusted.append(mDefaultExperience); + } + + mTrusted->setExperienceIds(trusted); + + mAllowed->refreshExperienceCounter(); + mBlocked->refreshExperienceCounter(); + mTrusted->refreshExperienceCounter(); + +} + + +class LLRegionExperienceResponder : public LLHTTPClient::Responder +{ +public: + typedef boost::function<void (const LLSD&)> callback_t; + + callback_t mCallback; + + LLRegionExperienceResponder(callback_t callback) : mCallback(callback) { } + +protected: + /*virtual*/ void httpSuccess() + { + mCallback(getContent()); + } + + /*virtual*/ void httpFailure() + { + LL_WARNS() << "experience responder failed [status:" << getStatus() << "]: " << getContent() << LL_ENDL; + } +}; + + +// Used for both access add and remove operations, depending on the flag +// passed in (ESTATE_EXPERIENCE_ALLOWED_ADD, ESTATE_EXPERIENCE_ALLOWED_REMOVE, etc.) +// static +bool LLPanelRegionExperiences::experienceCoreConfirm(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + const U32 originalFlags = (U32)notification["payload"]["operation"].asInteger(); + + LLViewerRegion* region = gAgent.getRegion(); + + LLSD::array_const_iterator end_it = notification["payload"]["allowed_ids"].endArray(); + + for (LLSD::array_const_iterator iter = notification["payload"]["allowed_ids"].beginArray(); + iter != end_it; + iter++) + { + U32 flags = originalFlags; + if (iter + 1 != end_it) + flags |= ESTATE_ACCESS_NO_REPLY; + + const LLUUID id = iter->asUUID(); + switch(option) + { + case 0: + // This estate + sendEstateExperienceDelta(flags, id); + break; + case 1: + { + // All estates, either than I own or manage for this owner. + // This will be verified on simulator. JC + if (!region) break; + if (region->getOwner() == gAgent.getID() + || gAgent.isGodlike()) + { + flags |= ESTATE_ACCESS_APPLY_TO_ALL_ESTATES; + sendEstateExperienceDelta(flags, id); + } + else if (region->isEstateManager()) + { + flags |= ESTATE_ACCESS_APPLY_TO_MANAGED_ESTATES; + sendEstateExperienceDelta(flags, id); + } + break; + } + case 2: + default: + break; + } + } + return false; +} + + +// Send the actual "estateexperiencedelta" message +void LLPanelRegionExperiences::sendEstateExperienceDelta(U32 flags, const LLUUID& experience_id) +{ + strings_t str(3, std::string()); + gAgent.getID().toString(str[0]); + str[1] = llformat("%u", flags); + experience_id.toString(str[2]); + + LLPanelRegionExperiences* panel = LLFloaterRegionInfo::getPanelExperiences(); + if (panel) + { + panel->sendEstateOwnerMessage(gMessageSystem, "estateexperiencedelta", LLFloaterRegionInfo::getLastInvoice(), str); + } +} + + +void LLPanelRegionExperiences::infoCallback(LLHandle<LLPanelRegionExperiences> handle, const LLSD& content) +{ + if(handle.isDead()) + return; + + LLPanelRegionExperiences* floater = handle.get(); + if (floater) + { + floater->processResponse(content); + } +} + + +bool LLPanelRegionExperiences::refreshFromRegion(LLViewerRegion* region) +{ + BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); + + mAllowed->loading(); + mAllowed->setReadonly(!allow_modify); + // remove grid-wide experiences + mAllowed->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithProperty, _1, LLExperienceCache::PROPERTY_GRID)); + // remove default experience + mAllowed->addFilter(boost::bind(LLPanelExperiencePicker::FilterMatching, _1, mDefaultExperience)); + + mBlocked->loading(); + mBlocked->setReadonly(!allow_modify); + // only grid-wide experiences + mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithoutProperty, _1, LLExperienceCache::PROPERTY_GRID)); + // but not privileged ones + mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterWithProperty, _1, LLExperienceCache::PROPERTY_PRIVILEGED)); + // remove default experience + mBlocked->addFilter(boost::bind(LLPanelExperiencePicker::FilterMatching, _1, mDefaultExperience)); + + mTrusted->loading(); + mTrusted->setReadonly(!allow_modify); + + std::string url = region->getCapability("RegionExperiences"); + if (!url.empty()) + { + LLHTTPClient::get(url, new LLRegionExperienceResponder(boost::bind(&LLPanelRegionExperiences::infoCallback, + getDerivedHandle<LLPanelRegionExperiences>(), _1))); + } + return LLPanelRegionInfo::refreshFromRegion(region); +} + +LLSD LLPanelRegionExperiences::addIds(LLPanelExperienceListEditor* panel) +{ + LLSD ids; + const uuid_list_t& id_list = panel->getExperienceIds(); + for(uuid_list_t::const_iterator it = id_list.begin(); it != id_list.end(); ++it) + { + ids.append(*it); + } + return ids; +} + + +BOOL LLPanelRegionExperiences::sendUpdate() +{ + LLViewerRegion* region = gAgent.getRegion(); + std::string url = region->getCapability("RegionExperiences"); + if (!url.empty()) + { + LLSD content; + + content["allowed"]=addIds(mAllowed); + content["blocked"]=addIds(mBlocked); + content["trusted"]=addIds(mTrusted); + + LLHTTPClient::post(url, content, new LLRegionExperienceResponder(boost::bind(&LLPanelRegionExperiences::infoCallback, + getDerivedHandle<LLPanelRegionExperiences>(), _1))); + } + + return TRUE; +} + +void LLPanelRegionExperiences::itemChanged( U32 event_type, const LLUUID& id ) +{ + std::string dialog_name; + switch (event_type) + { + case ESTATE_EXPERIENCE_ALLOWED_ADD: + dialog_name = "EstateAllowedExperienceAdd"; + break; + + case ESTATE_EXPERIENCE_ALLOWED_REMOVE: + dialog_name = "EstateAllowedExperienceRemove"; + break; + + case ESTATE_EXPERIENCE_TRUSTED_ADD: + dialog_name = "EstateTrustedExperienceAdd"; + break; + + case ESTATE_EXPERIENCE_TRUSTED_REMOVE: + dialog_name = "EstateTrustedExperienceRemove"; + break; + + case ESTATE_EXPERIENCE_BLOCKED_ADD: + dialog_name = "EstateBlockedExperienceAdd"; + break; + + case ESTATE_EXPERIENCE_BLOCKED_REMOVE: + dialog_name = "EstateBlockedExperienceRemove"; + break; + + default: + return; + } + + LLSD payload; + payload["operation"] = (S32)event_type; + payload["dialog_name"] = dialog_name; + payload["allowed_ids"].append(id); + + LLSD args; + args["ALL_ESTATES"] = all_estates_text(); + + LLNotification::Params params(dialog_name); + params.payload(payload) + .substitutions(args) + .functor.function(LLPanelRegionExperiences::experienceCoreConfirm); + if (LLPanelEstateInfo::isLindenEstate()) + { + LLNotifications::instance().forceResponse(params, 0); + } + else + { + LLNotifications::instance().add(params); + } + + onChangeAnything(); +} diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 792f60ebc8..e7b49d8553 100755..100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -60,6 +60,9 @@ class LLPanelRegionDebugInfo; class LLPanelRegionTerrainInfo; class LLPanelEstateInfo; class LLPanelEstateCovenant; +class LLPanelExperienceListEditor; +class LLPanelExperiences; +class LLPanelRegionExperiences; class LLEventTimer; class LLEnvironmentSettings; @@ -90,6 +93,7 @@ public: static LLPanelEstateInfo* getPanelEstate(); static LLPanelEstateCovenant* getPanelCovenant(); static LLPanelRegionTerrainInfo* getPanelRegionTerrain(); + static LLPanelRegionExperiences* getPanelExperiences(); // from LLPanel virtual void refresh(); @@ -453,4 +457,34 @@ private: LLComboBox* mDayCyclePresetCombo; }; +class LLPanelRegionExperiences : public LLPanelRegionInfo +{ + LOG_CLASS(LLPanelEnvironmentInfo); + +public: + LLPanelRegionExperiences(){} + /*virtual*/ BOOL postBuild(); + virtual BOOL sendUpdate(); + + static bool experienceCoreConfirm(const LLSD& notification, const LLSD& response); + static void sendEstateExperienceDelta(U32 flags, const LLUUID& agent_id); + + static void infoCallback(LLHandle<LLPanelRegionExperiences> handle, const LLSD& content); + bool refreshFromRegion(LLViewerRegion* region); + void sendPurchaseRequest()const; + void processResponse( const LLSD& content ); +private: + void refreshRegionExperiences(); + + LLPanelExperienceListEditor* setupList(const char* control_name, U32 add_id, U32 remove_id); + static LLSD addIds( LLPanelExperienceListEditor* panel ); + + void itemChanged(U32 event_type, const LLUUID& id); + + LLPanelExperienceListEditor* mTrusted; + LLPanelExperienceListEditor* mAllowed; + LLPanelExperienceListEditor* mBlocked; + LLUUID mDefaultExperience; +}; + #endif diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index ae330211db..99a5cf8002 100755..100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -35,6 +35,7 @@ #include "llassetstorage.h" #include "llavatarnamecache.h" #include "llcachename.h" +#include "llcheckboxctrl.h" #include "llfontgl.h" #include "llimagej2c.h" #include "llinventory.h" @@ -81,6 +82,7 @@ #include "llagentui.h" #include "lltrans.h" +#include "llexperiencecache.h" //----------------------------------------------------------------------------- // Globals @@ -106,14 +108,6 @@ LLFloaterReporter::LLFloaterReporter(const LLSD& key) { } -// static -void LLFloaterReporter::processRegionInfo(LLMessageSystem* msg) -{ - if ( LLFloaterReg::instanceVisible("reporter") ) - { - LLNotificationsUtil::add("HelpReportAbuseEmailLL"); - }; -} // virtual BOOL LLFloaterReporter::postBuild() { @@ -144,19 +138,10 @@ BOOL LLFloaterReporter::postBuild() mOwnerName = LLStringUtil::null; getChild<LLUICtrl>("summary_edit")->setFocus(TRUE); + getChild<LLCheckBoxCtrl>("screen_check")->set(TRUE); mDefaultSummary = getChild<LLUICtrl>("details_edit")->getValue().asString(); - // send a message and ask for information about this region - - // result comes back in processRegionInfo(..) - LLMessageSystem* msg = gMessageSystem; - msg->newMessage("RequestRegionInfo"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - gAgent.sendReliableMessage(); - - // abuser name is selected from a list LLUICtrl* le = getChild<LLUICtrl>("abuser_name_edit"); le->setEnabled( false ); @@ -225,6 +210,30 @@ void LLFloaterReporter::enableControls(BOOL enable) getChildView("cancel_btn")->setEnabled(enable); } +void LLFloaterReporter::getExperienceInfo(const LLUUID& experience_id) +{ + mExperienceID = experience_id; + + if (LLUUID::null != mExperienceID) + { + const LLSD& experience = LLExperienceCache::get(mExperienceID); + std::stringstream desc; + + if(experience.isDefined()) + { + setFromAvatarID(experience[LLExperienceCache::AGENT_ID]); + desc << "Experience id: " << mExperienceID; + } + else + { + desc << "Unable to retrieve details for id: "<< mExperienceID; + } + + LLUICtrl* details = getChild<LLUICtrl>("details_edit"); + details->setValue(desc.str()); + } +} + void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) { // TODO -- @@ -470,7 +479,7 @@ void LLFloaterReporter::showFromMenu(EReportType report_type) } // static -void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_name) +void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_name, const LLUUID& experience_id) { LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); @@ -483,6 +492,23 @@ void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_ { f->setFromAvatarID(object_id); } + if(experience_id.notNull()) + { + f->getExperienceInfo(experience_id); + } + + // Need to deselect on close + f->mDeselectOnClose = TRUE; + + f->openFloater(); +} + + + +void LLFloaterReporter::showFromExperience( const LLUUID& experience_id ) +{ + LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); + f->getExperienceInfo(experience_id); // Need to deselect on close f->mDeselectOnClose = TRUE; @@ -492,9 +518,9 @@ void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_ // static -void LLFloaterReporter::showFromObject(const LLUUID& object_id) +void LLFloaterReporter::showFromObject(const LLUUID& object_id, const LLUUID& experience_id) { - show(object_id); + show(object_id, LLStringUtil::null, experience_id); } // static @@ -854,6 +880,7 @@ void LLFloaterReporter::setPosBox(const LLVector3d &pos) getChild<LLUICtrl>("pos_field")->setValue(pos_string); } + // void LLFloaterReporter::setDescription(const std::string& description, LLMeanCollisionData *mcd) // { // LLFloaterReporter *self = LLFloaterReg::findTypedInstance<LLFloaterReporter>("reporter"); diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h index d54e7f6ab0..d857528f10 100755..100644 --- a/indra/newview/llfloaterreporter.h +++ b/indra/newview/llfloaterreporter.h @@ -88,8 +88,9 @@ public: // Enables all buttons static void showFromMenu(EReportType report_type); - static void showFromObject(const LLUUID& object_id); + static void showFromObject(const LLUUID& object_id, const LLUUID& experience_id = LLUUID::null); static void showFromAvatar(const LLUUID& avatar_id, const std::string avatar_name); + static void showFromExperience(const LLUUID& experience_id); static void onClickSend (void *userdata); static void onClickCancel (void *userdata); @@ -99,14 +100,11 @@ public: static void uploadDoneCallback(const LLUUID &uuid, void* user_data, S32 result, LLExtStat ext_status); static void addDescription(const std::string& description, LLMeanCollisionData *mcd = NULL); static void setDescription(const std::string& description, LLMeanCollisionData *mcd = NULL); - - // static - static void processRegionInfo(LLMessageSystem* msg); - + void setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id); private: - static void show(const LLUUID& object_id, const std::string& avatar_name = LLStringUtil::null); + static void show(const LLUUID& object_id, const std::string& avatar_name = LLStringUtil::null, const LLUUID& experience_id = LLUUID::null); void takeScreenshot(); void sendReportViaCaps(std::string url); @@ -118,6 +116,7 @@ private: void sendReportViaCaps(std::string url, std::string sshot_url, const LLSD & report); void setPosBox(const LLVector3d &pos); void enableControls(BOOL own_avatar); + void getExperienceInfo(const LLUUID& object_id); void getObjectInfo(const LLUUID& object_id); void callbackAvatarID(const uuid_vec_t& ids, const std::vector<LLAvatarName> names); void setFromAvatarID(const LLUUID& avatar_id); @@ -128,6 +127,7 @@ private: LLUUID mObjectID; LLUUID mScreenID; LLUUID mAbuserID; + LLUUID mExperienceID; // Store the real name, not the link, for upstream reporting std::string mOwnerName; BOOL mDeselectOnClose; diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index 6c17f62c1e..6c17f62c1e 100755..100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp diff --git a/indra/newview/llfloaterscriptdebug.h b/indra/newview/llfloaterscriptdebug.h index 6d9d1eb500..6d9d1eb500 100755..100644 --- a/indra/newview/llfloaterscriptdebug.h +++ b/indra/newview/llfloaterscriptdebug.h diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 5fbdd75e97..5fbdd75e97 100755..100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 5ba0185d32..5ba0185d32 100755..100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index a446b767ac..a446b767ac 100755..100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h index 35b268e1b2..35b268e1b2 100755..100644 --- a/indra/newview/llfloatersearch.h +++ b/indra/newview/llfloatersearch.h diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp index 0cb37dabe7..0cb37dabe7 100755..100644 --- a/indra/newview/llfloatersellland.cpp +++ b/indra/newview/llfloatersellland.cpp diff --git a/indra/newview/llfloatersellland.h b/indra/newview/llfloatersellland.h index 808e2ce4b0..808e2ce4b0 100755..100644 --- a/indra/newview/llfloatersellland.h +++ b/indra/newview/llfloatersellland.h diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp index fb202b4c40..fb202b4c40 100755..100644 --- a/indra/newview/llfloatersettingsdebug.cpp +++ b/indra/newview/llfloatersettingsdebug.cpp diff --git a/indra/newview/llfloatersettingsdebug.h b/indra/newview/llfloatersettingsdebug.h index f07e0557e3..f07e0557e3 100755..100644 --- a/indra/newview/llfloatersettingsdebug.h +++ b/indra/newview/llfloatersettingsdebug.h diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp index aee20ff706..aee20ff706 100755..100644 --- a/indra/newview/llfloatersidepanelcontainer.cpp +++ b/indra/newview/llfloatersidepanelcontainer.cpp diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h index d7ecd52e57..d7ecd52e57 100755..100644 --- a/indra/newview/llfloatersidepanelcontainer.h +++ b/indra/newview/llfloatersidepanelcontainer.h diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index b27a42cb8e..afec981d56 100755..100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -448,9 +448,9 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) floater->getChild<LLUICtrl>("file_size_label")->setTextArg("[SIZE]", got_snap ? bytes_string : floater->getString("unknown")); floater->getChild<LLUICtrl>("file_size_label")->setColor( - shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD - && got_bytes - && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" )); + shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD + && got_bytes + && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" )); // Update the width and height spinners based on the corresponding resolution combos. (?) switch(shot_type) @@ -600,7 +600,11 @@ void LLFloaterSnapshot::Impl::onClickUICheck(LLUICtrl *ctrl, void* data) LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; if (view) { - checkAutoSnapshot(getPreviewView(view), TRUE); + LLSnapshotLivePreview* previewp = getPreviewView(view); + if(previewp) + { + previewp->updateSnapshot(TRUE, TRUE); + } updateControls(view); } } @@ -614,7 +618,11 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data) LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; if (view) { - checkAutoSnapshot(getPreviewView(view), TRUE); + LLSnapshotLivePreview* previewp = getPreviewView(view); + if(previewp) + { + previewp->updateSnapshot(TRUE, TRUE); + } updateControls(view); } } @@ -655,14 +663,20 @@ void LLFloaterSnapshot::Impl::onCommitFreezeFrame(LLUICtrl* ctrl, void* data) { LLCheckBoxCtrl* check_box = (LLCheckBoxCtrl*)ctrl; LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; + LLSnapshotLivePreview* previewp = getPreviewView(view); - if (!view || !check_box) + if (!view || !check_box || !previewp) { return; } gSavedSettings.setBOOL("UseFreezeFrame", check_box->get()); + if (check_box->get()) + { + previewp->prepareFreezeFrame(); + } + updateLayout(view); } diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h index 0bb9474bb5..0bb9474bb5 100755..100644 --- a/indra/newview/llfloatersnapshot.h +++ b/indra/newview/llfloatersnapshot.h diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp index 72c077d215..72c077d215 100755..100644 --- a/indra/newview/llfloatersounddevices.cpp +++ b/indra/newview/llfloatersounddevices.cpp diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h index f09ee3b069..f09ee3b069 100755..100644 --- a/indra/newview/llfloatersounddevices.h +++ b/indra/newview/llfloatersounddevices.h diff --git a/indra/newview/llfloaterspellchecksettings.cpp b/indra/newview/llfloaterspellchecksettings.cpp index 5124dae147..5124dae147 100755..100644 --- a/indra/newview/llfloaterspellchecksettings.cpp +++ b/indra/newview/llfloaterspellchecksettings.cpp diff --git a/indra/newview/llfloaterspellchecksettings.h b/indra/newview/llfloaterspellchecksettings.h index de59d83f24..de59d83f24 100755..100644 --- a/indra/newview/llfloaterspellchecksettings.h +++ b/indra/newview/llfloaterspellchecksettings.h diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp index b845fd132d..b845fd132d 100755..100644 --- a/indra/newview/llfloatertelehub.cpp +++ b/indra/newview/llfloatertelehub.cpp diff --git a/indra/newview/llfloatertelehub.h b/indra/newview/llfloatertelehub.h index 9b9b11fb29..9b9b11fb29 100755..100644 --- a/indra/newview/llfloatertelehub.h +++ b/indra/newview/llfloatertelehub.h diff --git a/indra/newview/llfloatertestinspectors.cpp b/indra/newview/llfloatertestinspectors.cpp index 8a1582569b..8a1582569b 100755..100644 --- a/indra/newview/llfloatertestinspectors.cpp +++ b/indra/newview/llfloatertestinspectors.cpp diff --git a/indra/newview/llfloatertestinspectors.h b/indra/newview/llfloatertestinspectors.h index 1724a2e076..1724a2e076 100755..100644 --- a/indra/newview/llfloatertestinspectors.h +++ b/indra/newview/llfloatertestinspectors.h diff --git a/indra/newview/llfloatertestlistview.cpp b/indra/newview/llfloatertestlistview.cpp index 97cf95baed..97cf95baed 100755..100644 --- a/indra/newview/llfloatertestlistview.cpp +++ b/indra/newview/llfloatertestlistview.cpp diff --git a/indra/newview/llfloatertestlistview.h b/indra/newview/llfloatertestlistview.h index 0d4c7eb793..0d4c7eb793 100755..100644 --- a/indra/newview/llfloatertestlistview.h +++ b/indra/newview/llfloatertestlistview.h diff --git a/indra/newview/llfloatertexturefetchdebugger.cpp b/indra/newview/llfloatertexturefetchdebugger.cpp index 9a23d99802..9a23d99802 100755..100644 --- a/indra/newview/llfloatertexturefetchdebugger.cpp +++ b/indra/newview/llfloatertexturefetchdebugger.cpp diff --git a/indra/newview/llfloatertexturefetchdebugger.h b/indra/newview/llfloatertexturefetchdebugger.h index 096ad88e07..096ad88e07 100755..100644 --- a/indra/newview/llfloatertexturefetchdebugger.h +++ b/indra/newview/llfloatertexturefetchdebugger.h diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 7477b02867..987a7449ee 100755..100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -92,6 +92,7 @@ // Globals LLFloaterTools *gFloaterTools = NULL; bool LLFloaterTools::sShowObjectCost = true; +bool LLFloaterTools::sPreviousFocusOnAvatar = false; const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] = { @@ -369,6 +370,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mLandImpactsObserver(NULL), mDirty(TRUE), + mHasSelection(TRUE), mNeedMediaTitle(TRUE) { gFloaterTools = this; @@ -540,7 +542,14 @@ void LLFloaterTools::refresh() void LLFloaterTools::draw() { - if (mDirty) + BOOL has_selection = !LLSelectMgr::getInstance()->getSelection()->isEmpty(); + if(!has_selection && (mHasSelection != has_selection)) + { + mDirty = TRUE; + } + mHasSelection = has_selection; + + if (mDirty) { refresh(); mDirty = FALSE; @@ -891,6 +900,12 @@ void LLFloaterTools::onClose(bool app_quitting) // prepare content for next call mPanelContents->clearContents(); + + if(sPreviousFocusOnAvatar) + { + sPreviousFocusOnAvatar = false; + gAgentCamera.setAllowChangeToFollow(TRUE); + } } void click_popup_info(void*) diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 189bae46c2..8f586f7da6 100755..100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -198,14 +198,17 @@ public: private: BOOL mDirty; + BOOL mHasSelection; std::map<std::string, std::string> mStatusText; + protected: LLSD mMediaSettings; public: static bool sShowObjectCost; + static bool sPreviousFocusOnAvatar; }; diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index d604b8619a..f8681fe098 100755..100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -118,25 +118,32 @@ void LLFloaterTopObjects::setMode(U32 mode) // static void LLFloaterTopObjects::handle_land_reply(LLMessageSystem* msg, void** data) { - LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects"); - if(!instance) return; - // Make sure dialog is on screen - LLFloaterReg::showInstance("top_objects"); - instance->handleReply(msg, data); - - //HACK: for some reason sometimes top scripts originally comes back - //with no results even though they're there - if (!instance->mObjectListIDs.size() && !instance->mInitialized) + LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects"); + if(instance && instance->isInVisibleChain()) + { + instance->handleReply(msg, data); + //HACK: for some reason sometimes top scripts originally comes back + //with no results even though they're there + if (!instance->mObjectListIDs.size() && !instance->mInitialized) + { + instance->onRefresh(); + instance->mInitialized = TRUE; + } + } + else { - instance->onRefresh(); - instance->mInitialized = TRUE; + LLFloaterRegionInfo* region_info_floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info"); + if(region_info_floater) + { + region_info_floater->enableTopButtons(); + } } } void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) { - U32 request_flags; + U32 request_flags; U32 total_count; msg->getU32Fast(_PREHASH_RequestData, _PREHASH_RequestFlags, request_flags); diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index dbbe9ac521..dbbe9ac521 100755..100644 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index c1c21c593e..4cb1ca6cc0 100755..100644 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -46,7 +46,6 @@ #include "message.h" #include "llstartup.h" // login_alert_done - LLFloaterTOS::LLFloaterTOS(const LLSD& data) : LLModalDialog( data["message"].asString() ), mMessage(data["message"].asString()), @@ -85,7 +84,7 @@ protected: { if ( mParent ) { - mParent->setSiteIsAlive( true ); + mParent->setSiteIsAlive(true); } } @@ -136,11 +135,32 @@ BOOL LLFloaterTOS::postBuild() LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html"); if ( web_browser ) { +// if we are forced to send users to an external site in their system browser +// (e.g.) Linux users because of lack of media support for HTML ToS page +// remove exisiting UI and replace with a link to external page where users can accept ToS +#ifdef EXTERNAL_TOS + LLTextBox* header = getChild<LLTextBox>("tos_heading"); + if (header) + header->setVisible(false); + + LLTextBox* external_prompt = getChild<LLTextBox>("external_tos_required"); + if (external_prompt) + external_prompt->setVisible(true); + + web_browser->setVisible(false); +#else web_browser->addObserver(this); // Don't use the start_url parameter for this browser instance -- it may finish loading before we get to add our observer. // Store the URL separately and navigate here instead. web_browser->navigateTo( getString( "loading_url" ) ); + LLPluginClassMedia* media_plugin = web_browser->getMediaPlugin(); + if (media_plugin) + { + // All links from tos_html should be opened in external browser + media_plugin->setOverrideClickTarget("_external"); + } +#endif } return TRUE; @@ -148,6 +168,13 @@ BOOL LLFloaterTOS::postBuild() void LLFloaterTOS::setSiteIsAlive( bool alive ) { +// if we are forced to send users to an external site in their system browser +// (e.g.) Linux users because of lack of media support for HTML ToS page +// force the regular HTML UI to deactivate so alternative is rendered instead. +#ifdef EXTERNAL_TOS + mSiteAlive = false; +#else + mSiteAlive = alive; // only do this for TOS pages @@ -176,6 +203,7 @@ void LLFloaterTOS::setSiteIsAlive( bool alive ) tos_agreement->setEnabled( true ); } } +#endif } LLFloaterTOS::~LLFloaterTOS() diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h index 47126d06a6..47126d06a6 100755..100644 --- a/indra/newview/llfloatertos.h +++ b/indra/newview/llfloatertos.h diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp index a025a859e7..a025a859e7 100755..100644 --- a/indra/newview/llfloatertoybox.cpp +++ b/indra/newview/llfloatertoybox.cpp diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h index 10aee0e6f5..10aee0e6f5 100755..100644 --- a/indra/newview/llfloatertoybox.h +++ b/indra/newview/llfloatertoybox.h diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp index 965d29b09c..965d29b09c 100755..100644 --- a/indra/newview/llfloatertranslationsettings.cpp +++ b/indra/newview/llfloatertranslationsettings.cpp diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h index b9bfd6265a..b9bfd6265a 100755..100644 --- a/indra/newview/llfloatertranslationsettings.h +++ b/indra/newview/llfloatertranslationsettings.h diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 76ad2146f1..76ad2146f1 100755..100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp diff --git a/indra/newview/llfloateruipreview.h b/indra/newview/llfloateruipreview.h index 910ab7ebc9..910ab7ebc9 100755..100644 --- a/indra/newview/llfloateruipreview.h +++ b/indra/newview/llfloateruipreview.h diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index e02e8eeb5a..e02e8eeb5a 100755..100644 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp diff --git a/indra/newview/llfloaterurlentry.h b/indra/newview/llfloaterurlentry.h index bdd1ebe592..bdd1ebe592 100755..100644 --- a/indra/newview/llfloaterurlentry.h +++ b/indra/newview/llfloaterurlentry.h diff --git a/indra/newview/llfloatervoiceeffect.cpp b/indra/newview/llfloatervoiceeffect.cpp index 227720bee3..227720bee3 100755..100644 --- a/indra/newview/llfloatervoiceeffect.cpp +++ b/indra/newview/llfloatervoiceeffect.cpp diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h index 4d432c46cc..4d432c46cc 100755..100644 --- a/indra/newview/llfloatervoiceeffect.h +++ b/indra/newview/llfloatervoiceeffect.h diff --git a/indra/newview/llfloatervoicevolume.cpp b/indra/newview/llfloatervoicevolume.cpp index 38446e46df..38446e46df 100755..100644 --- a/indra/newview/llfloatervoicevolume.cpp +++ b/indra/newview/llfloatervoicevolume.cpp diff --git a/indra/newview/llfloatervoicevolume.h b/indra/newview/llfloatervoicevolume.h index 8fcf7f250b..8fcf7f250b 100755..100644 --- a/indra/newview/llfloatervoicevolume.h +++ b/indra/newview/llfloatervoicevolume.h diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 024e315632..024e315632 100755..100644 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h index 4291fd9f2c..4291fd9f2c 100755..100644 --- a/indra/newview/llfloaterwebcontent.h +++ b/indra/newview/llfloaterwebcontent.h diff --git a/indra/newview/llfloaterwebprofile.cpp b/indra/newview/llfloaterwebprofile.cpp index a46f1d8af2..a46f1d8af2 100755..100644 --- a/indra/newview/llfloaterwebprofile.cpp +++ b/indra/newview/llfloaterwebprofile.cpp diff --git a/indra/newview/llfloaterwebprofile.h b/indra/newview/llfloaterwebprofile.h index 4c355e401b..4c355e401b 100755..100644 --- a/indra/newview/llfloaterwebprofile.h +++ b/indra/newview/llfloaterwebprofile.h diff --git a/indra/newview/llfloaterwhitelistentry.cpp b/indra/newview/llfloaterwhitelistentry.cpp index 2a499f681b..2a499f681b 100755..100644 --- a/indra/newview/llfloaterwhitelistentry.cpp +++ b/indra/newview/llfloaterwhitelistentry.cpp diff --git a/indra/newview/llfloaterwhitelistentry.h b/indra/newview/llfloaterwhitelistentry.h index deab49c523..deab49c523 100755..100644 --- a/indra/newview/llfloaterwhitelistentry.h +++ b/indra/newview/llfloaterwhitelistentry.h diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp index ec161018b8..ec161018b8 100755..100644 --- a/indra/newview/llfloaterwindowsize.cpp +++ b/indra/newview/llfloaterwindowsize.cpp diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h index a71e5e273c..a71e5e273c 100755..100644 --- a/indra/newview/llfloaterwindowsize.h +++ b/indra/newview/llfloaterwindowsize.h diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 1b1c24b19a..ece3e10faa 100755..100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -284,12 +284,12 @@ BOOL LLFloaterWorldMap::postBuild() LLComboBox *avatar_combo = getChild<LLComboBox>("friend combo"); avatar_combo->selectFirstItem(); avatar_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onAvatarComboPrearrange, this) ); - avatar_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); + avatar_combo->setTextChangedCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); mListFriendCombo = dynamic_cast<LLCtrlListInterface *>(avatar_combo); LLSearchEditor *location_editor = getChild<LLSearchEditor>("location"); location_editor->setFocusChangedCallback(boost::bind(&LLFloaterWorldMap::onLocationFocusChanged, this, _1)); - location_editor->setKeystrokeCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this)); + location_editor->setTextChangedCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this)); getChild<LLScrollListCtrl>("search_results")->setDoubleClickCallback( boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this)); mListSearchResults = childGetListInterface("search_results"); @@ -297,7 +297,7 @@ BOOL LLFloaterWorldMap::postBuild() LLComboBox *landmark_combo = getChild<LLComboBox>( "landmark combo"); landmark_combo->selectFirstItem(); landmark_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onLandmarkComboPrearrange, this) ); - landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); + landmark_combo->setTextChangedCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); mListLandmarkCombo = dynamic_cast<LLCtrlListInterface *>(landmark_combo); mCurZoomVal = log(LLWorldMapView::sMapScale)/log(2.f); diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h index 7ce8dae9a9..7ce8dae9a9 100755..100644 --- a/indra/newview/llfloaterworldmap.h +++ b/indra/newview/llfloaterworldmap.h diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index 3271a40ea0..e9f80b795a 100755..100644 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -27,6 +27,7 @@ #include "llviewerprecompiledheaders.h" #include "llfolderviewmodelinventory.h" #include "llinventorymodelbackgroundfetch.h" +#include "llinventoryfunctions.h" #include "llinventorypanel.h" #include "lltooldraganddrop.h" #include "llfavoritesbar.h" @@ -108,6 +109,29 @@ bool LLFolderViewModelInventory::contentsReady() return !LLInventoryModelBackgroundFetch::instance().folderFetchActive(); } +bool LLFolderViewModelInventory::isFolderComplete(LLFolderViewFolder* folder) +{ + LLFolderViewModelItemInventory* modelp = static_cast<LLFolderViewModelItemInventory*>(folder->getViewModelItem()); + LLUUID cat_id = modelp->getUUID(); + if (cat_id.isNull()) + { + return false; + } + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); + if (cat) + { + // don't need to check version - descendents_server == -1 if we have no data + S32 descendents_server = cat->getDescendentCount(); + S32 descendents_actual = cat->getViewerDescendentCount(); + if (descendents_server == descendents_actual + || (descendents_actual > 0 && descendents_server == -1)) // content was loaded in previous session + { + return true; + } + } + return false; +} + void LLFolderViewModelItemInventory::requestSort() { LLFolderViewModelItemCommon::requestSort(); @@ -277,7 +301,7 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a, // We sort by name if we aren't sorting by date // OR if these are folders and we are sorting folders by name. - bool by_name = (!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM))); + bool by_name = ((!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM))) && !mFoldersByWeight); if (a->getSortGroup() != b->getSortGroup()) { @@ -309,6 +333,31 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a, return (compare < 0); } } + else if (mFoldersByWeight) + { + S32 weight_a = compute_stock_count(a->getUUID()); + S32 weight_b = compute_stock_count(b->getUUID()); + if (weight_a == weight_b) + { + // Equal weight -> use alphabetical order + return (LLStringUtil::compareDict(a->getDisplayName(), b->getDisplayName()) < 0); + } + else if (weight_a == COMPUTE_STOCK_INFINITE) + { + // No stock -> move a at the end of the list + return false; + } + else if (weight_b == COMPUTE_STOCK_INFINITE) + { + // No stock -> move b at the end of the list + return true; + } + else + { + // Lighter is first (sorted in increasing order of weight) + return (weight_a < weight_b); + } + } else { time_t first_create = a->getCreationDate(); diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h index 8772185ad0..dea54cbe57 100755..100644 --- a/indra/newview/llfolderviewmodelinventory.h +++ b/indra/newview/llfolderviewmodelinventory.h @@ -89,6 +89,7 @@ public: mByDate = (mSortOrder & LLInventoryFilter::SO_DATE); mSystemToTop = (mSortOrder & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP); mFoldersByName = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); + mFoldersByWeight = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); } bool operator()(const LLFolderViewModelItemInventory* const& a, const LLFolderViewModelItemInventory* const& b) const; @@ -97,6 +98,7 @@ private: bool mByDate; bool mSystemToTop; bool mFoldersByName; + bool mFoldersByWeight; }; class LLFolderViewModelInventory @@ -113,6 +115,7 @@ public: void sort(LLFolderViewFolder* folder); bool contentsReady(); + bool isFolderComplete(LLFolderViewFolder* folder); bool startDrag(std::vector<LLFolderViewModelItem*>& items); private: diff --git a/indra/newview/llfollowcam.cpp b/indra/newview/llfollowcam.cpp index 612afc0d18..612afc0d18 100755..100644 --- a/indra/newview/llfollowcam.cpp +++ b/indra/newview/llfollowcam.cpp diff --git a/indra/newview/llfollowcam.h b/indra/newview/llfollowcam.h index f4b7b2723a..f4b7b2723a 100755..100644 --- a/indra/newview/llfollowcam.h +++ b/indra/newview/llfollowcam.h diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index 307e259006..307e259006 100755..100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h index 48a9f70079..48a9f70079 100755..100644 --- a/indra/newview/llfriendcard.h +++ b/indra/newview/llfriendcard.h diff --git a/indra/newview/llgesturelistener.cpp b/indra/newview/llgesturelistener.cpp index 6fd749d83e..6fd749d83e 100755..100644 --- a/indra/newview/llgesturelistener.cpp +++ b/indra/newview/llgesturelistener.cpp diff --git a/indra/newview/llgesturelistener.h b/indra/newview/llgesturelistener.h index 6f59698ed1..6f59698ed1 100755..100644 --- a/indra/newview/llgesturelistener.h +++ b/indra/newview/llgesturelistener.h diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 119872ec29..950a6cfaef 100755..100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -59,10 +59,6 @@ // Longest time, in seconds, to wait for all animations to stop playing const F32 MAX_WAIT_ANIM_SECS = 30.f; -// If this gesture is a link, get the base gesture that this link points to, -// otherwise just return this id. -static const LLUUID& get_linked_uuid(const LLUUID& item_id); - // Lightweight constructor. // init() does the heavy lifting. LLGestureMgr::LLGestureMgr() @@ -253,7 +249,7 @@ void LLGestureMgr::activateGestureWithAsset(const LLUUID& item_id, BOOL inform_server, BOOL deactivate_similar) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); if( !gAssetStorage ) { @@ -307,7 +303,7 @@ void notify_update_label(const LLUUID& base_item_id) void LLGestureMgr::deactivateGesture(const LLUUID& item_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); if (it == mActive.end()) { @@ -353,7 +349,7 @@ void LLGestureMgr::deactivateGesture(const LLUUID& item_id) void LLGestureMgr::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id) { - const LLUUID& base_in_item_id = get_linked_uuid(in_item_id); + const LLUUID& base_in_item_id = gInventory.getLinkedItemID(in_item_id); uuid_vec_t gest_item_ids; // Deactivate all gestures that match @@ -440,7 +436,7 @@ void LLGestureMgr::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& i BOOL LLGestureMgr::isGestureActive(const LLUUID& item_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); return (it != mActive.end()); } @@ -448,7 +444,7 @@ BOOL LLGestureMgr::isGestureActive(const LLUUID& item_id) BOOL LLGestureMgr::isGesturePlaying(const LLUUID& item_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); if (it == mActive.end()) return FALSE; @@ -471,7 +467,7 @@ BOOL LLGestureMgr::isGesturePlaying(LLMultiGesture* gesture) void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); if (it == mActive.end()) @@ -513,7 +509,7 @@ void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_ges void LLGestureMgr::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = LLGestureMgr::instance().mActive.find(base_item_id); if (it == mActive.end()) @@ -608,7 +604,7 @@ void LLGestureMgr::playGesture(LLMultiGesture* gesture) // Convenience function that looks up the item_id for you. void LLGestureMgr::playGesture(const LLUUID& item_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); if (it == mActive.end()) return; @@ -1297,7 +1293,7 @@ void LLGestureMgr::stopGesture(LLMultiGesture* gesture) void LLGestureMgr::stopGesture(const LLUUID& item_id) { - const LLUUID& base_item_id = get_linked_uuid(item_id); + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); item_map_t::iterator it = mActive.find(base_item_id); if (it == mActive.end()) return; @@ -1457,14 +1453,4 @@ void LLGestureMgr::done() } } -// static -const LLUUID& get_linked_uuid(const LLUUID &item_id) -{ - LLViewerInventoryItem* item = gInventory.getItem(item_id); - if (item && item->getIsLinkType()) - { - return item->getLinkedUUID(); - } - return item_id; -} diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index 26a5924ec3..26a5924ec3 100755..100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h diff --git a/indra/newview/llgiveinventory.cpp b/indra/newview/llgiveinventory.cpp index 813d2081ce..813d2081ce 100755..100644 --- a/indra/newview/llgiveinventory.cpp +++ b/indra/newview/llgiveinventory.cpp diff --git a/indra/newview/llgiveinventory.h b/indra/newview/llgiveinventory.h index 85bc1ed49c..85bc1ed49c 100755..100644 --- a/indra/newview/llgiveinventory.h +++ b/indra/newview/llgiveinventory.h diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index c80dec0e75..c80dec0e75 100755..100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 913efd6434..913efd6434 100755..100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h index afc4686dd7..afc4686dd7 100755..100644 --- a/indra/newview/llgroupactions.h +++ b/indra/newview/llgroupactions.h diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp index 6abf9ea637..6abf9ea637 100755..100644 --- a/indra/newview/llgroupiconctrl.cpp +++ b/indra/newview/llgroupiconctrl.cpp diff --git a/indra/newview/llgroupiconctrl.h b/indra/newview/llgroupiconctrl.h index f42593c9e1..f42593c9e1 100755..100644 --- a/indra/newview/llgroupiconctrl.h +++ b/indra/newview/llgroupiconctrl.h diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index ef238cefe3..ef238cefe3 100755..100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h index e96a720886..e96a720886 100755..100644 --- a/indra/newview/llgrouplist.h +++ b/indra/newview/llgrouplist.h diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 56e671d902..e1315adfde 100755..100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -239,7 +239,8 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) : mRoleMemberDataComplete(false), mGroupPropertiesDataComplete(false), mPendingRoleMemberRequest(false), - mAccessTime(0.0f) + mAccessTime(0.0f), + mPendingBanRequest(false) { mMemberVersion.generate(); } @@ -761,8 +762,69 @@ void LLGroupMgrGroupData::removeBanEntry(const LLUUID& ban_id) mBanList.erase(ban_id); } +void LLGroupMgrGroupData::banMemberById(const LLUUID& participant_uuid) +{ + if (!mMemberDataComplete || + !mRoleDataComplete || + !(mRoleMemberDataComplete && mMembers.size())) + { + LL_WARNS() << "No Role-Member data yet, setting ban request to pending." << LL_ENDL; + mPendingBanRequest = true; + mPendingBanMemberID = participant_uuid; + + if (!mMemberDataComplete || !mMembers.size()) + { + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mID); + } + if (!mRoleDataComplete) + { + LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mID); + } + return; + } + + LLGroupMgrGroupData::member_list_t::iterator mi = mMembers.find((participant_uuid)); + if (mi == mMembers.end()) + { + if (!mPendingBanRequest) + { + mPendingBanRequest = true; + mPendingBanMemberID = participant_uuid; + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mID); // member isn't in members list, request reloading + } + else + { + mPendingBanRequest = false; + } + + return; + } + + mPendingBanRequest = false; + + LLGroupMemberData* member_data = (*mi).second; + if (member_data && member_data->isInRole(mOwnerRole)) + { + return; // can't ban group owner + } + + std::vector<LLUUID> ids; + ids.push_back(participant_uuid); + + LLGroupBanData ban_data; + createBanEntry(participant_uuid, ban_data); + LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_POST, mID, LLGroupMgr::BAN_CREATE, ids); + LLGroupMgr::getInstance()->sendGroupMemberEjects(mID, ids); + LLGroupMgr::getInstance()->sendGroupMembersRequest(mID); + LLSD args; + std::string name; + gCacheName->getFullName(participant_uuid, name); + args["AVATAR_NAME"] = name; + args["GROUP_NAME"] = mName; + LLNotifications::instance().add(LLNotification::Params("EjectAvatarFromGroup").substitutions(args)); +} // // LLGroupMgr @@ -1245,6 +1307,11 @@ void LLGroupMgr::processGroupRoleMembersReply(LLMessageSystem* msg, void** data) group_datap->mChanged = TRUE; LLGroupMgr::getInstance()->notifyObservers(GC_ROLE_MEMBER_DATA); + + if (group_datap->mPendingBanRequest) + { + group_datap->banMemberById(group_datap->mPendingBanMemberID); + } } // static @@ -1970,7 +2037,8 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); if (!gdatap) return; - + + gdatap->clearBanList(); LLSD::map_const_iterator i = content["ban_list"].beginMap(); LLSD::map_const_iterator iEnd = content["ban_list"].endMap(); for(;i != iEnd; ++i) @@ -1992,8 +2060,6 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) LLGroupMgr::getInstance()->notifyObservers(GC_BANLIST); } - - // Responder class for capability group management class GroupMemberDataResponder : public LLHTTPClient::Responder { @@ -2082,11 +2148,6 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) return; } - // If we have no members, there's no reason to do anything else - S32 num_members = content["member_count"]; - if(num_members < 1) - return; - LLUUID group_id = content["group_id"].asUUID(); LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); @@ -2096,6 +2157,18 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) return; } + // If we have no members, there's no reason to do anything else + S32 num_members = content["member_count"]; + if (num_members < 1) + { + LL_INFOS("GrpMgr") << "Received empty group members list for group id: " << group_id.asString() << LL_ENDL; + // Set mMemberDataComplete for correct handling of empty responses. See MAINT-5237 + group_datap->mMemberDataComplete = true; + group_datap->mChanged = TRUE; + LLGroupMgr::getInstance()->notifyObservers(GC_MEMBER_DATA); + return; + } + group_datap->mMemberCount = num_members; LLSD member_list = content["members"]; diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 2e94e8d9a0..5307c4de92 100755..100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -149,7 +149,7 @@ public: const uuid_vec_t& getRoleMembers() const { return mMemberIDs; } S32 getMembersInRole(uuid_vec_t members, BOOL needs_sort = TRUE); - S32 getTotalMembersInRole() { return mMemberIDs.size(); } + S32 getTotalMembersInRole() { return mMemberCount ? mMemberCount : mMemberIDs.size(); } //FIXME: Returns 0 for Everyone role when Member list isn't yet loaded, see MAINT-5225 LLRoleData getRoleData() const { return mRoleData; } void setRoleData(LLRoleData data) { mRoleData = data; } @@ -269,8 +269,8 @@ public: void createBanEntry(const LLUUID& ban_id, const LLGroupBanData& ban_data = LLGroupBanData()); void removeBanEntry(const LLUUID& ban_id); + void banMemberById(const LLUUID& participant_uuid); - public: typedef std::map<LLUUID,LLGroupMemberData*> member_list_t; typedef std::map<LLUUID,LLGroupRoleData*> role_list_t; @@ -302,6 +302,9 @@ public: S32 mMemberCount; S32 mRoleCount; + bool mPendingBanRequest; + LLUUID mPendingBanMemberID; + protected: void sendRoleChanges(); void cancelRoleChanges(); diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp index 197408b40e..197408b40e 100755..100644 --- a/indra/newview/llhints.cpp +++ b/indra/newview/llhints.cpp diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h index ebffe561b9..ebffe561b9 100755..100644 --- a/indra/newview/llhints.h +++ b/indra/newview/llhints.h diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp index d0492bcdb4..d0492bcdb4 100755..100644 --- a/indra/newview/llhomelocationresponder.cpp +++ b/indra/newview/llhomelocationresponder.cpp diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h index adc6c8cb58..adc6c8cb58 100755..100644 --- a/indra/newview/llhomelocationresponder.h +++ b/indra/newview/llhomelocationresponder.h diff --git a/indra/newview/llhttpretrypolicy.cpp b/indra/newview/llhttpretrypolicy.cpp index 2d4ce6c883..2d4ce6c883 100755..100644 --- a/indra/newview/llhttpretrypolicy.cpp +++ b/indra/newview/llhttpretrypolicy.cpp diff --git a/indra/newview/llhttpretrypolicy.h b/indra/newview/llhttpretrypolicy.h index cf79e0b401..cf79e0b401 100755..100644 --- a/indra/newview/llhttpretrypolicy.h +++ b/indra/newview/llhttpretrypolicy.h diff --git a/indra/newview/llhudeffect.cpp b/indra/newview/llhudeffect.cpp index eff5587610..eff5587610 100755..100644 --- a/indra/newview/llhudeffect.cpp +++ b/indra/newview/llhudeffect.cpp diff --git a/indra/newview/llhudeffect.h b/indra/newview/llhudeffect.h index 7c825e3f3d..7c825e3f3d 100755..100644 --- a/indra/newview/llhudeffect.h +++ b/indra/newview/llhudeffect.h diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp index 54e683e048..54e683e048 100755..100644 --- a/indra/newview/llhudeffectbeam.cpp +++ b/indra/newview/llhudeffectbeam.cpp diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h index fdee5178af..fdee5178af 100755..100644 --- a/indra/newview/llhudeffectbeam.h +++ b/indra/newview/llhudeffectbeam.h diff --git a/indra/newview/llhudeffectblob.cpp b/indra/newview/llhudeffectblob.cpp index c909551b51..c909551b51 100755..100644 --- a/indra/newview/llhudeffectblob.cpp +++ b/indra/newview/llhudeffectblob.cpp diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h index ce3e8500fc..ce3e8500fc 100755..100644 --- a/indra/newview/llhudeffectblob.h +++ b/indra/newview/llhudeffectblob.h diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp index 73120a0242..73120a0242 100755..100644 --- a/indra/newview/llhudeffectlookat.cpp +++ b/indra/newview/llhudeffectlookat.cpp diff --git a/indra/newview/llhudeffectlookat.h b/indra/newview/llhudeffectlookat.h index fd057715b6..fd057715b6 100755..100644 --- a/indra/newview/llhudeffectlookat.h +++ b/indra/newview/llhudeffectlookat.h diff --git a/indra/newview/llhudeffectpointat.cpp b/indra/newview/llhudeffectpointat.cpp index 44c8db19c0..44c8db19c0 100755..100644 --- a/indra/newview/llhudeffectpointat.cpp +++ b/indra/newview/llhudeffectpointat.cpp diff --git a/indra/newview/llhudeffectpointat.h b/indra/newview/llhudeffectpointat.h index 6200b68cbc..6200b68cbc 100755..100644 --- a/indra/newview/llhudeffectpointat.h +++ b/indra/newview/llhudeffectpointat.h diff --git a/indra/newview/llhudeffecttrail.cpp b/indra/newview/llhudeffecttrail.cpp index fc6efdb840..fc6efdb840 100755..100644 --- a/indra/newview/llhudeffecttrail.cpp +++ b/indra/newview/llhudeffecttrail.cpp diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h index 6f5a328c63..6f5a328c63 100755..100644 --- a/indra/newview/llhudeffecttrail.h +++ b/indra/newview/llhudeffecttrail.h diff --git a/indra/newview/llhudicon.cpp b/indra/newview/llhudicon.cpp index 825c2b31be..825c2b31be 100755..100644 --- a/indra/newview/llhudicon.cpp +++ b/indra/newview/llhudicon.cpp diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h index e00a985ddc..e00a985ddc 100755..100644 --- a/indra/newview/llhudicon.h +++ b/indra/newview/llhudicon.h diff --git a/indra/newview/llhudmanager.cpp b/indra/newview/llhudmanager.cpp index 1f9b0f47b1..1f9b0f47b1 100755..100644 --- a/indra/newview/llhudmanager.cpp +++ b/indra/newview/llhudmanager.cpp diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h index 9c5d49decd..9c5d49decd 100755..100644 --- a/indra/newview/llhudmanager.h +++ b/indra/newview/llhudmanager.h diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp index c7d108b6de..c7d108b6de 100755..100644 --- a/indra/newview/llhudnametag.cpp +++ b/indra/newview/llhudnametag.cpp diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h index 38a4f18415..38a4f18415 100755..100644 --- a/indra/newview/llhudnametag.h +++ b/indra/newview/llhudnametag.h diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp index 45fa09e1a1..45fa09e1a1 100755..100644 --- a/indra/newview/llhudobject.cpp +++ b/indra/newview/llhudobject.cpp diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h index 2f7a98c86c..2f7a98c86c 100755..100644 --- a/indra/newview/llhudobject.h +++ b/indra/newview/llhudobject.h diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp index dff310ecf9..dff310ecf9 100755..100644 --- a/indra/newview/llhudrender.cpp +++ b/indra/newview/llhudrender.cpp diff --git a/indra/newview/llhudrender.h b/indra/newview/llhudrender.h index b541cd5036..b541cd5036 100755..100644 --- a/indra/newview/llhudrender.h +++ b/indra/newview/llhudrender.h diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 2c204170f2..2c204170f2 100755..100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp diff --git a/indra/newview/llhudtext.h b/indra/newview/llhudtext.h index 36015d51f0..36015d51f0 100755..100644 --- a/indra/newview/llhudtext.h +++ b/indra/newview/llhudtext.h diff --git a/indra/newview/llhudview.cpp b/indra/newview/llhudview.cpp index cead4dbce6..cead4dbce6 100755..100644 --- a/indra/newview/llhudview.cpp +++ b/indra/newview/llhudview.cpp diff --git a/indra/newview/llhudview.h b/indra/newview/llhudview.h index 6689554706..6689554706 100755..100644 --- a/indra/newview/llhudview.h +++ b/indra/newview/llhudview.h diff --git a/indra/newview/llimhandler.cpp b/indra/newview/llimhandler.cpp index c2b29f36e8..c2b29f36e8 100755..100644 --- a/indra/newview/llimhandler.cpp +++ b/indra/newview/llimhandler.cpp diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index c194dc05b0..c194dc05b0 100755..100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp diff --git a/indra/newview/llimpanel.h b/indra/newview/llimpanel.h index c5930b56f7..c5930b56f7 100755..100644 --- a/indra/newview/llimpanel.h +++ b/indra/newview/llimpanel.h diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 5d3a11e245..b8b6bdaa11 100755..100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1295,8 +1295,15 @@ void LLIMModel::sendMessage(const std::string& utf8_text, gAgent.sendReliableMessage(); } + bool is_group_chat = false; + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id); + if(session) + { + is_group_chat = session->isGroupSessionType(); + } + // If there is a mute list and this is not a group chat... - if ( LLMuteList::getInstance() ) + if ( LLMuteList::getInstance() && !is_group_chat) { // ... the target should not be in our mute list for some message types. // Auto-remove them if present. @@ -1345,7 +1352,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text, if (is_not_group_id) { - LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id); if( session == 0)//??? shouldn't really happen { LLRecentPeople::instance().add(other_participant_id); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index f92eff4845..f92eff4845 100755..100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp index e6cb068613..e6cb068613 100755..100644 --- a/indra/newview/llinspect.cpp +++ b/indra/newview/llinspect.cpp diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h index 1f6aafc7bd..1f6aafc7bd 100755..100644 --- a/indra/newview/llinspect.h +++ b/indra/newview/llinspect.h diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 1e15dc832c..1e15dc832c 100755..100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp diff --git a/indra/newview/llinspectavatar.h b/indra/newview/llinspectavatar.h index 4329504b62..4329504b62 100755..100644 --- a/indra/newview/llinspectavatar.h +++ b/indra/newview/llinspectavatar.h diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp index 76617b55bf..76617b55bf 100755..100644 --- a/indra/newview/llinspectgroup.cpp +++ b/indra/newview/llinspectgroup.cpp diff --git a/indra/newview/llinspectgroup.h b/indra/newview/llinspectgroup.h index 8b135a465e..8b135a465e 100755..100644 --- a/indra/newview/llinspectgroup.h +++ b/indra/newview/llinspectgroup.h diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index 46019557f8..46019557f8 100755..100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp diff --git a/indra/newview/llinspectobject.h b/indra/newview/llinspectobject.h index 9362139458..9362139458 100755..100644 --- a/indra/newview/llinspectobject.h +++ b/indra/newview/llinspectobject.h diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index a12ec390af..a12ec390af 100755..100644 --- a/indra/newview/llinspectremoteobject.cpp +++ b/indra/newview/llinspectremoteobject.cpp diff --git a/indra/newview/llinspectremoteobject.h b/indra/newview/llinspectremoteobject.h index 173efd1c0c..173efd1c0c 100755..100644 --- a/indra/newview/llinspectremoteobject.h +++ b/indra/newview/llinspectremoteobject.h diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp index d04378daaf..47560341e7 100755..100644 --- a/indra/newview/llinspecttoast.cpp +++ b/indra/newview/llinspecttoast.cpp @@ -47,6 +47,7 @@ public: /*virtual*/ void onOpen(const LLSD& notification_id); /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); + /*virtual*/ void removeChild(LLView* child); private: void onToastDestroy(LLToast * toast); @@ -98,7 +99,7 @@ void LLInspectToast::onOpen(const LLSD& notification_id) panel->setMouseOpaque(FALSE); if(mPanel != NULL && mPanel->getParent() == this) { - removeChild(mPanel); + LLInspect::removeChild(mPanel); } addChild(panel); panel->setFocus(TRUE); @@ -121,6 +122,16 @@ BOOL LLInspectToast::handleToolTip(S32 x, S32 y, MASK mask) return LLFloater::handleToolTip(x, y, mask); } +// virtual +void LLInspectToast::removeChild(LLView* child) +{ + if (mPanel == child) + { + mPanel = NULL; + } + LLInspect::removeChild(child); +} + void LLInspectToast::onToastDestroy(LLToast * toast) { closeFloater(false); diff --git a/indra/newview/llinspecttoast.h b/indra/newview/llinspecttoast.h index 441dffdfde..441dffdfde 100755..100644 --- a/indra/newview/llinspecttoast.h +++ b/indra/newview/llinspecttoast.h diff --git a/indra/newview/llinventoryactions.h b/indra/newview/llinventoryactions.h index 96e9f42ca4..96e9f42ca4 100755..100644 --- a/indra/newview/llinventoryactions.h +++ b/indra/newview/llinventoryactions.h diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1dc5558555..9782c792c9 100755..100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -40,6 +40,7 @@ #include "llfavoritesbar.h" // management of favorites folder #include "llfloateropenobject.h" #include "llfloaterreg.h" +#include "llfloatermarketplacelistings.h" #include "llfloatersidepanelcontainer.h" #include "llfloaterworldmap.h" #include "llfolderview.h" @@ -65,6 +66,7 @@ #include "llsidepanelappearance.h" #include "lltooldraganddrop.h" #include "lltrans.h" +#include "llurlaction.h" #include "llviewerassettype.h" #include "llviewerfoldertype.h" #include "llviewermenu.h" @@ -74,15 +76,13 @@ #include "llviewerwindow.h" #include "llvoavatarself.h" #include "llwearablelist.h" +#include "llwearableitemslist.h" #include "lllandmarkactions.h" #include "llpanellandmarks.h" -void copy_slurl_to_clipboard_callback_inv(const std::string& slurl); +#include <boost/shared_ptr.hpp> -// Marketplace outbox current disabled -#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU 1 -#define ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU 0 -#define BLOCK_WORN_ITEMS_IN_OUTBOX 1 +void copy_slurl_to_clipboard_callback_inv(const std::string& slurl); typedef std::pair<LLUUID, LLUUID> two_uuids_t; typedef std::list<two_uuids_t> two_uuids_list_t; @@ -101,7 +101,7 @@ struct LLMoveInv using namespace LLOldEvents; // Function declarations -bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*); +bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, boost::shared_ptr<LLMoveInv>); bool confirm_attachment_rez(const LLSD& notification, const LLSD& response); void teleport_via_landmark(const LLUUID& asset_id); static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit); @@ -123,7 +123,7 @@ bool isAddAction(const std::string& action) bool isRemoveAction(const std::string& action) { - return ("take_off" == action || "detach" == action || "deactivate" == action); + return ("take_off" == action || "detach" == action); } bool isMarketplaceCopyAction(const std::string& action) @@ -205,7 +205,6 @@ const std::string& LLInvFVBridge::getDisplayName() const { buildDisplayName(); } - return mDisplayName; } @@ -269,13 +268,53 @@ BOOL LLInvFVBridge::isLibraryItem() const /** * @brief Adds this item into clipboard storage */ -BOOL LLInvFVBridge::cutToClipboard() const +BOOL LLInvFVBridge::cutToClipboard() +{ + const LLInventoryObject* obj = gInventory.getObject(mUUID); + if (obj && isItemMovable() && isItemRemovable()) + { + const LLUUID &marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const BOOL cut_from_marketplacelistings = gInventory.isObjectDescendentOf(mUUID, marketplacelistings_id); + + if (cut_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(mUUID) || + LLMarketplaceData::instance().isListedAndActive(mUUID))) + { + // Prompt the user if cutting from a marketplace active listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLInvFVBridge::callback_cutToClipboard, this, _1, _2)); + } + else + { + // Otherwise just perform the cut + return perform_cutToClipboard(); + } + } + return FALSE; +} + +// Callback for cutToClipboard if DAMA required... +BOOL LLInvFVBridge::callback_cutToClipboard(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + const LLInventoryObject* obj = gInventory.getObject(mUUID); + LLUUID parent_uuid = obj->getParentUUID(); + BOOL result = perform_cutToClipboard(); + gInventory.addChangedMask(LLInventoryObserver::STRUCTURE, parent_uuid); + return result; + } + return FALSE; +} + +BOOL LLInvFVBridge::perform_cutToClipboard() { const LLInventoryObject* obj = gInventory.getObject(mUUID); if (obj && isItemMovable() && isItemRemovable()) { LLClipboard::instance().setCutMode(true); - return LLClipboard::instance().addToClipboard(mUUID); + BOOL added_to_clipboard = LLClipboard::instance().addToClipboard(mUUID); + removeObject(&gInventory, mUUID); // Always perform the remove even if the object couldn't make it to the clipboard + return added_to_clipboard; } return FALSE; } @@ -290,15 +329,22 @@ BOOL LLInvFVBridge::copyToClipboard() const return FALSE; } -// *TODO: make sure this does the right thing void LLInvFVBridge::showProperties() { - show_item_profile(mUUID); - - // Disable old properties floater; this is replaced by the sidepanel. - /* - LLFloaterReg::showInstance("properties", mUUID); - */ + if (isMarketplaceListingsFolder()) + { + LLFloaterReg::showInstance("item_properties", LLSD().with("id",mUUID),TRUE); + // Force it to show on top as this floater has a tendency to hide when confirmation dialog shows up + LLFloater* floater_properties = LLFloaterReg::findInstance("item_properties", LLSD().with("id",mUUID)); + if (floater_properties) + { + floater_properties->setVisibleAndFrontmost(); + } + } + else + { + show_item_profile(mUUID); + } } void LLInvFVBridge::removeBatch(std::vector<LLFolderViewModelItem*>& batch) @@ -557,6 +603,46 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const return TRUE; } +void disable_context_entries_if_present(LLMenuGL& menu, + const menuentry_vec_t &disabled_entries) +{ + const LLView::child_list_t *list = menu.getChildList(); + for (LLView::child_list_t::const_iterator itor = list->begin(); + itor != list->end(); + ++itor) + { + LLView *menu_item = (*itor); + std::string name = menu_item->getName(); + + // descend into split menus: + LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(menu_item); + if ((name == "More") && branchp) + { + disable_context_entries_if_present(*branchp->getBranch(), disabled_entries); + } + + bool found = false; + menuentry_vec_t::const_iterator itor2; + for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2) + { + if (*itor2 == name) + { + found = true; + break; + } + } + + if (found) + { + menu_item->setVisible(TRUE); + // A bit of a hack so we can remember that some UI element explicitly set this to be visible + // so that some other UI element from multi-select doesn't later set this invisible. + menu_item->pushVisible(TRUE); + + menu_item->setEnabled(FALSE); + } + } +} void hide_context_entries(LLMenuGL& menu, const menuentry_vec_t &entries_to_show, const menuentry_vec_t &disabled_entries) @@ -655,7 +741,7 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, if (!isInboxFolder()) { items.push_back(std::string("Rename")); - if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0) + if (!isItemRenameable() || ((flags & FIRST_SELECTED_ITEM) == 0)) { disabled_items.push_back(std::string("Rename")); } @@ -693,15 +779,20 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, disabled_items.push_back(std::string("Cut")); } - if (canListOnMarketplace()) + if (canListOnMarketplace() && !isMarketplaceListingsFolder() && !isInboxFolder()) { items.push_back(std::string("Marketplace Separator")); - items.push_back(std::string("Merchant Copy")); - if (!canListOnMarketplaceNow()) - { - disabled_items.push_back(std::string("Merchant Copy")); - } + if (gMenuHolder->getChild<LLView>("MarketplaceListings")->getVisible()) + { + items.push_back(std::string("Marketplace Copy")); + items.push_back(std::string("Marketplace Move")); + if (!canListOnMarketplaceNow()) + { + disabled_items.push_back(std::string("Marketplace Copy")); + disabled_items.push_back(std::string("Marketplace Move")); + } + } } } } @@ -765,6 +856,31 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) hide_context_entries(menu, items, disabled_items); } +bool get_selection_item_uuids(LLFolderView::selected_items_t& selected_items, uuid_vec_t& ids) +{ + uuid_vec_t results; + S32 non_item = 0; + for(LLFolderView::selected_items_t::iterator it = selected_items.begin(); it != selected_items.end(); ++it) + { + LLItemBridge *view_model = dynamic_cast<LLItemBridge *>((*it)->getViewModelItem()); + + if(view_model && view_model->getUUID().notNull()) + { + results.push_back(view_model->getUUID()); + } + else + { + non_item++; + } + } + if (non_item == 0) + { + ids = results; + return true; + } + return false; +} + void LLInvFVBridge::addTrashContextMenuOptions(menuentry_vec_t &items, menuentry_vec_t &disabled_items) { @@ -797,15 +913,7 @@ void LLInvFVBridge::addDeleteContextMenuOptions(menuentry_vec_t &items, return; } - // "Remove link" and "Delete" are the same operation. - if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID)) - { - items.push_back(std::string("Remove Link")); - } - else - { - items.push_back(std::string("Delete")); - } + items.push_back(std::string("Delete")); if (!isItemRemovable()) { @@ -835,21 +943,130 @@ void LLInvFVBridge::addOutboxContextMenuOptions(U32 flags, { disabled_items.push_back(std::string("Rename")); } - -#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU - if (isOutboxFolderDirectParent()) - { - items.push_back(std::string("Marketplace Separator")); - items.push_back(std::string("Marketplace Send")); - - if ((flags & FIRST_SELECTED_ITEM) == 0) - { - disabled_items.push_back(std::string("Marketplace Send")); - } - } -#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU } +void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags, + menuentry_vec_t &items, + menuentry_vec_t &disabled_items) +{ + S32 depth = depth_nesting_in_marketplace(mUUID); + if (depth == 1) + { + // Options available at the Listing Folder level + items.push_back(std::string("Marketplace Create Listing")); + items.push_back(std::string("Marketplace Associate Listing")); + items.push_back(std::string("Marketplace Check Listing")); + items.push_back(std::string("Marketplace List")); + items.push_back(std::string("Marketplace Unlist")); + if (LLMarketplaceData::instance().isUpdating(mUUID,depth) || ((flags & FIRST_SELECTED_ITEM) == 0)) + { + // During SLM update, disable all marketplace related options + // Also disable all if multiple selected items + disabled_items.push_back(std::string("Marketplace Create Listing")); + disabled_items.push_back(std::string("Marketplace Associate Listing")); + disabled_items.push_back(std::string("Marketplace Check Listing")); + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + } + else + { + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + items.push_back(std::string("Marketplace Get Listing")); + } + if (LLMarketplaceData::instance().isListed(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Create Listing")); + disabled_items.push_back(std::string("Marketplace Associate Listing")); + if (LLMarketplaceData::instance().getVersionFolder(mUUID).isNull()) + { + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + } + else + { + if (LLMarketplaceData::instance().getActivationState(mUUID)) + { + disabled_items.push_back(std::string("Marketplace List")); + } + else + { + disabled_items.push_back(std::string("Marketplace Unlist")); + } + } + } + else + { + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + disabled_items.push_back(std::string("Marketplace Get Listing")); + } + } + } + } + if (depth == 2) + { + // Options available at the Version Folder levels and only for folders + LLInventoryCategory* cat = gInventory.getCategory(mUUID); + if (cat && LLMarketplaceData::instance().isListed(cat->getParentUUID())) + { + items.push_back(std::string("Marketplace Activate")); + items.push_back(std::string("Marketplace Deactivate")); + if (LLMarketplaceData::instance().isUpdating(mUUID,depth) || ((flags & FIRST_SELECTED_ITEM) == 0)) + { + // During SLM update, disable all marketplace related options + // Also disable all if multiple selected items + disabled_items.push_back(std::string("Marketplace Activate")); + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + else + { + if (LLMarketplaceData::instance().isVersionFolder(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Activate")); + if (LLMarketplaceData::instance().getActivationState(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + } + else + { + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + } + } + } + + items.push_back(std::string("Marketplace Edit Listing")); + LLUUID listing_folder_id = nested_parent_id(mUUID,depth); + LLUUID version_folder_id = LLMarketplaceData::instance().getVersionFolder(listing_folder_id); + + if (depth >= 2) + { + // Prevent creation of new folders if the max count has been reached on this version folder (active or not) + LLUUID local_version_folder_id = nested_parent_id(mUUID,depth-1); + LLInventoryModel::cat_array_t categories; + LLInventoryModel::item_array_t items; + gInventory.collectDescendents(local_version_folder_id, categories, items, FALSE); + if (categories.size() >= gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + disabled_items.push_back(std::string("New Folder")); + } + } + + // Options available at all levels on items and categories + if (!LLMarketplaceData::instance().isListed(listing_folder_id) || version_folder_id.isNull()) + { + disabled_items.push_back(std::string("Marketplace Edit Listing")); + } + + // Separator + items.push_back(std::string("Marketplace Listings Separator")); +} + + // *TODO: remove this BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const { @@ -952,6 +1169,7 @@ BOOL LLInvFVBridge::isCOFFolder() const return LLAppearanceMgr::instance().getIsInCOF(mUUID); } +// *TODO : Suppress isInboxFolder() once Merchant Outbox is fully deprecated BOOL LLInvFVBridge::isInboxFolder() const { const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, false); @@ -964,6 +1182,18 @@ BOOL LLInvFVBridge::isInboxFolder() const return gInventory.isObjectDescendentOf(mUUID, inbox_id); } +BOOL LLInvFVBridge::isMarketplaceListingsFolder() const +{ + const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + + if (folder_id.isNull()) + { + return FALSE; + } + + return gInventory.isObjectDescendentOf(mUUID, folder_id); +} + BOOL LLInvFVBridge::isOutboxFolder() const { const LLUUID outbox_id = getOutboxFolder(); @@ -1120,16 +1350,23 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, { LL_WARNS() << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << LL_ENDL; } - new_listener = new LLWearableBridge(inventory, root, uuid, asset_type, inv_type, (LLWearableType::EType)flags); + new_listener = new LLWearableBridge(inventory, root, uuid, asset_type, inv_type, LLWearableType::inventoryFlagsToWearableType(flags)); break; case LLAssetType::AT_CATEGORY: if (actual_asset_type == LLAssetType::AT_LINK_FOLDER) { - // Create a link folder handler instead. + // Create a link folder handler instead new_listener = new LLLinkFolderBridge(inventory, root, uuid); - break; } - new_listener = new LLFolderBridge(inventory, root, uuid); + else if (actual_asset_type == LLAssetType::AT_MARKETPLACE_FOLDER) + { + // Create a marketplace folder handler + new_listener = new LLMarketplaceFolderBridge(inventory, root, uuid); + } + else + { + new_listener = new LLFolderBridge(inventory, root, uuid); + } break; case LLAssetType::AT_LINK: case LLAssetType::AT_LINK_FOLDER: @@ -1172,6 +1409,22 @@ void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid) } } +void LLInvFVBridge::removeObject(LLInventoryModel *model, const LLUUID &uuid) +{ + // Keep track of the parent + LLInventoryItem* itemp = model->getItem(uuid); + LLUUID parent_id = (itemp ? itemp->getParentUUID() : LLUUID::null); + // Remove the object + model->removeObject(uuid); + // Get the parent updated + if (parent_id.notNull()) + { + LLViewerInventoryCategory* parent_cat = model->getCategory(parent_id); + model->updateCategory(parent_cat); + model->notifyObservers(); + } +} + bool LLInvFVBridge::canShare() const { bool can_share = false; @@ -1202,11 +1455,9 @@ bool LLInvFVBridge::canShare() const bool LLInvFVBridge::canListOnMarketplace() const { -#if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU - LLInventoryModel * model = getInventoryModel(); - const LLViewerInventoryCategory * cat = model->getCategory(mUUID); + LLViewerInventoryCategory * cat = model->getCategory(mUUID); if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType())) { return false; @@ -1217,16 +1468,6 @@ bool LLInvFVBridge::canListOnMarketplace() const return false; } - if (getOutboxFolder().isNull()) - { - return false; - } - - if (isInboxFolder() || isOutboxFolder()) - { - return false; - } - LLViewerInventoryItem * item = model->getItem(mUUID); if (item) { @@ -1242,16 +1483,11 @@ bool LLInvFVBridge::canListOnMarketplace() const } return true; - -#else - return false; -#endif } -bool LLInvFVBridge::canListOnMarketplaceNow() const +// *TODO : Suppress canListOnOutboxNow() once we deprecate Merchant Outbox completely +bool LLInvFVBridge::canListOnOutboxNow() const { -#if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU - bool can_list = true; // Do not allow listing while import is in progress @@ -1297,10 +1533,56 @@ bool LLInvFVBridge::canListOnMarketplaceNow() const } return can_list; +} -#else - return false; -#endif +bool LLInvFVBridge::canListOnMarketplaceNow() const +{ + bool can_list = true; + + const LLInventoryObject* obj = getInventoryObject(); + can_list &= (obj != NULL); + + if (can_list) + { + const LLUUID& object_id = obj->getLinkedUUID(); + can_list = object_id.notNull(); + + if (can_list) + { + LLFolderViewFolder * object_folderp = mInventoryPanel.get() ? mInventoryPanel.get()->getFolderByID(object_id) : NULL; + if (object_folderp) + { + can_list = !static_cast<LLFolderBridge*>(object_folderp->getViewModelItem())->isLoading(); + } + } + + if (can_list) + { + std::string error_msg; + LLInventoryModel* model = getInventoryModel(); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.notNull()) + { + LLViewerInventoryCategory * master_folder = model->getCategory(marketplacelistings_id); + LLInventoryCategory *cat = model->getCategory(mUUID); + if (cat) + { + can_list = can_move_folder_to_marketplace(master_folder, master_folder, cat, error_msg); + } + else + { + LLInventoryItem *item = model->getItem(mUUID); + can_list = (item ? can_move_item_to_marketplace(master_folder, master_folder, item, error_msg) : false); + } + } + else + { + can_list = false; + } + } + } + + return can_list; } LLToolDragAndDrop::ESource LLInvFVBridge::getDragSource() const @@ -1392,7 +1674,6 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) else if ("cut" == action) { cutToClipboard(); - gInventory.removeObject(mUUID); return; } else if ("copy" == action) @@ -1423,16 +1704,14 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) folder_view_itemp->getViewModelItem()->pasteLinkFromClipboard(); return; } - else if (isMarketplaceCopyAction(action)) + else if (("move_to_marketplace_listings" == action) || ("copy_to_marketplace_listings" == action) || ("copy_or_move_to_marketplace_listings" == action)) { - LL_INFOS() << "Copy item to marketplace action!" << LL_ENDL; - LLInventoryItem* itemp = model->getItem(mUUID); if (!itemp) return; - - const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); - copy_item_to_outbox(itemp, outbox_id, LLUUID::null, LLToolDragAndDrop::getOperationId()); - } + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + // Note: For a single item, if it's not a copy, then it's a move + move_item_to_marketplacelistings(itemp, marketplacelistings_id, ("copy_to_marketplace_listings" == action)); + } else if ("copy_slurl" == action) { LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); @@ -1452,6 +1731,11 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) { doActionOnCurSelectedLandmark(boost::bind(&LLItemBridge::doShowOnMap, this, _1)); } + else if ("marketplace_edit_listing" == action) + { + std::string url = LLMarketplaceData::instance().getListingURL(mUUID); + LLUrlAction::openURL(url); + } } void LLItemBridge::doActionOnCurSelectedLandmark(LLLandmarkList::loaded_callback_t cb) @@ -1506,7 +1790,9 @@ void LLItemBridge::restoreItem() if(item) { LLInventoryModel* model = getInventoryModel(); - const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType())); + bool is_snapshot = (item->getInventoryType() == LLInventoryType::IT_SNAPSHOT); + + const LLUUID new_parent = model->findCategoryUUIDForType(is_snapshot? LLFolderType::FT_SNAPSHOT_CATEGORY : LLFolderType::assetTypeToFolderType(item->getType())); // do not restamp on restore. LLInvFVBridge::changeItemParent(model, item, new_parent, FALSE); } @@ -1917,6 +2203,22 @@ void LLFolderBridge::buildDisplayName() const } } +std::string LLFolderBridge::getLabelSuffix() const +{ + static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); + + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + { + return llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()); + } + + return LLInvFVBridge::getLabelSuffix(); +} + +LLFontGL::StyleFlags LLFolderBridge::getLabelStyle() const +{ + return LLFontGL::NORMAL; +} void LLFolderBridge::update() { @@ -1973,6 +2275,11 @@ BOOL LLFolderBridge::isItemRemovable() const return FALSE; } } + + if (isMarketplaceListingsFolder() && LLMarketplaceData::instance().getActivationState(mUUID)) + { + return FALSE; + } return TRUE; } @@ -2108,88 +2415,12 @@ BOOL LLFolderBridge::isClipboardPasteableAsLink() const } -static BOOL can_move_to_outbox(LLInventoryItem* inv_item, std::string& tooltip_msg) -{ - // Collapse links directly to items/folders - LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; - LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); - if (linked_item != NULL) - { - inv_item = linked_item; - } - - bool allow_transfer = inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); - if (!allow_transfer) - { - tooltip_msg = LLTrans::getString("TooltipOutboxNoTransfer"); - return false; - } - -#if BLOCK_WORN_ITEMS_IN_OUTBOX - bool worn = get_is_item_worn(inv_item->getUUID()); - if (worn) - { - tooltip_msg = LLTrans::getString("TooltipOutboxWorn"); - return false; - } -#endif - - bool calling_card = (LLAssetType::AT_CALLINGCARD == inv_item->getType()); - if (calling_card) - { - tooltip_msg = LLTrans::getString("TooltipOutboxCallingCard"); - return false; - } - - return true; -} - - -int get_folder_levels(LLInventoryCategory* inv_cat) -{ - LLInventoryModel::cat_array_t* cats; - LLInventoryModel::item_array_t* items; - gInventory.getDirectDescendentsOf(inv_cat->getUUID(), cats, items); - - int max_child_levels = 0; - - for (S32 i=0; i < cats->size(); ++i) - { - LLInventoryCategory* category = cats->at(i); - max_child_levels = llmax(max_child_levels, get_folder_levels(category)); - } - - return 1 + max_child_levels; -} - -int get_folder_path_length(const LLUUID& ancestor_id, const LLUUID& descendant_id) -{ - int depth = 0; - - if (ancestor_id == descendant_id) return depth; - - const LLInventoryCategory* category = gInventory.getCategory(descendant_id); - - while(category) - { - LLUUID parent_id = category->getParentUUID(); - - if (parent_id.isNull()) break; - - depth++; - - if (parent_id == ancestor_id) return depth; - - category = gInventory.getCategory(parent_id); - } - - LL_WARNS() << "get_folder_path_length() couldn't trace a path from the descendant to the ancestor" << LL_ENDL; - return -1; -} BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, BOOL drop, - std::string& tooltip_msg) + std::string& tooltip_msg, + BOOL is_link, + BOOL user_confirm) { LLInventoryModel* model = getInventoryModel(); @@ -2208,10 +2439,14 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, const LLUUID &cat_id = inv_cat->getUUID(); const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const LLUUID from_folder_uuid = inv_cat->getParentUUID(); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); const BOOL move_is_from_outbox = model->isObjectDescendentOf(cat_id, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + const BOOL move_is_from_marketplacelistings = model->isObjectDescendentOf(cat_id, marketplacelistings_id); // check to make sure source is agent inventory, and is represented there. LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); @@ -2231,6 +2466,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_into_current_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_CURRENT_OUTFIT); const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); //-------------------------------------------------------------------------------- @@ -2239,6 +2475,18 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, BOOL is_movable = TRUE; + if (is_movable && (marketplacelistings_id == cat_id)) + { + is_movable = FALSE; + tooltip_msg = LLTrans::getString("TooltipOutboxCannotMoveRoot"); + } + if (is_movable && move_is_from_marketplacelistings && LLMarketplaceData::instance().getActivationState(cat_id)) + { + // If the incoming folder is listed and active (and is therefore either the listing or the version folder), + // then moving is *not* allowed + is_movable = FALSE; + tooltip_msg = LLTrans::getString("TooltipOutboxDragActive"); + } if (is_movable && (mUUID == cat_id)) { is_movable = FALSE; @@ -2256,14 +2504,30 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } if (is_movable && move_is_into_outfit) { + if((mUUID == my_outifts_id) || (getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE)) + { + is_movable = ((inv_cat->getPreferredType() == LLFolderType::FT_NONE) || (inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT)); + } + else + { + is_movable = false; + } + } + if(is_movable && move_is_into_current_outfit && is_link) + { is_movable = FALSE; - // tooltip? } if (is_movable && (mUUID == model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE))) { is_movable = FALSE; // tooltip? } + if (is_movable && (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)) + { + // One cannot move a folder into a stock folder + is_movable = FALSE; + // tooltip? + } LLInventoryModel::cat_array_t descendent_categories; LLInventoryModel::item_array_t descendent_items; @@ -2331,93 +2595,13 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } } } - if (is_movable && move_is_into_outbox) + + if (is_movable && (move_is_into_outbox || move_is_into_marketplacelistings)) { - const int nested_folder_levels = get_folder_path_length(outbox_id, mUUID) + get_folder_levels(inv_cat); - - if (nested_folder_levels > gSavedSettings.getU32("InventoryOutboxMaxFolderDepth")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels"); - is_movable = FALSE; - } - else - { - int dragged_folder_count = descendent_categories.size(); - int existing_item_count = 0; - int existing_folder_count = 0; - - const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID); - - if (master_folder != NULL) - { - if (model->isObjectDescendentOf(cat_id, master_folder->getUUID())) - { - // Don't use count because we're already inside the same category anyway - dragged_folder_count = 0; - } - else - { - existing_folder_count = 1; // Include the master folder in the count! - - // If we're in the drop operation as opposed to the drag without drop, we are doing a - // single category at a time so don't block based on the total amount of cargo data items - if (drop) - { - dragged_folder_count += 1; - } - else - { - // NOTE: The cargo id's count is a total of categories AND items but we err on the side of - // prevention rather than letting too many folders into the hierarchy of the outbox, - // when we're dragging the item to a new parent - dragged_folder_count += LLToolDragAndDrop::instance().getCargoCount(); - } - } - - // Tally the total number of categories and items inside the master folder - - LLInventoryModel::cat_array_t existing_categories; - LLInventoryModel::item_array_t existing_items; - - model->collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE); - - existing_folder_count += existing_categories.size(); - existing_item_count += existing_items.size(); - } - else - { - // Assume a single category is being dragged to the outbox since we evaluate one at a time - // when not putting them under a parent item. - dragged_folder_count += 1; - } - - const int nested_folder_count = existing_folder_count + dragged_folder_count; - const int nested_item_count = existing_item_count + descendent_items.size(); - - if (nested_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders"); - is_movable = FALSE; - } - else if (nested_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects"); - is_movable = FALSE; - } - - if (is_movable == TRUE) - { - for (S32 i=0; i < descendent_items.size(); ++i) - { - LLInventoryItem* item = descendent_items[i]; - if (!can_move_to_outbox(item, tooltip_msg)) - { - is_movable = FALSE; - break; - } - } - } - } + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + LLViewerInventoryCategory * dest_folder = getCategory(); + S32 bundle_size = (drop ? 1 : LLToolDragAndDrop::instance().getCargoCount()); + is_movable = can_move_folder_to_marketplace(master_folder, dest_folder, inv_cat, tooltip_msg, bundle_size); } if (is_movable) @@ -2460,6 +2644,48 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, if (accept && drop) { + // Dropping in or out of marketplace needs (sometimes) confirmation + if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings)) + { + if (move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(cat_id) || + LLMarketplaceData::instance().isListedAndActive(cat_id))) + { + if (LLMarketplaceData::instance().isListed(cat_id) || LLMarketplaceData::instance().isVersionFolder(cat_id)) + { + // Move the active version folder or listing folder itself outside marketplace listings will unlist the listing so ask that question specifically + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + } + else + { + // Any other case will simply modify but not unlist an active listed listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + } + return true; + } + if (move_is_from_marketplacelistings && LLMarketplaceData::instance().isVersionFolder(cat_id)) + { + // Moving the version folder from its location will deactivate it. Ask confirmation. + LLNotificationsUtil::add("ConfirmMerchantClearVersion", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_into_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID)) + { + // Moving something in an active listed listing will modify it. Ask confirmation. + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_from_marketplacelistings && LLMarketplaceData::instance().isListed(cat_id)) + { + // Moving a whole listing folder will result in archival of SLM data. Ask confirmation. + LLNotificationsUtil::add("ConfirmListingCutOrDelete", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_into_marketplacelistings && !move_is_from_marketplacelistings) + { + LLNotificationsUtil::add("ConfirmMerchantMoveInventory", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + } // Look for any gestures and deactivate them if (move_is_into_trash) { @@ -2473,9 +2699,11 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } } } + // if target is current outfit folder we use link if (move_is_into_current_outfit && - inv_cat->getPreferredType() == LLFolderType::FT_NONE) + (inv_cat->getPreferredType() == LLFolderType::FT_NONE || + inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT)) { // traverse category and add all contents to currently worn. BOOL append = true; @@ -2485,6 +2713,10 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, { copy_folder_to_outbox(inv_cat, mUUID, cat_id, LLToolDragAndDrop::getOperationId()); } + else if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(inv_cat, mUUID); + } else { if (model->isObjectDescendentOf(cat_id, model->findCategoryUUIDForType(LLFolderType::FT_INBOX, false))) @@ -2500,11 +2732,38 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, mUUID, move_is_into_trash); } + if (move_is_from_marketplacelistings) + { + // If we are moving a folder at the listing folder level (i.e. its parent is the marketplace listings folder) + if (from_folder_uuid == marketplacelistings_id) + { + // Clear the folder from the marketplace in case it is a listing folder + if (LLMarketplaceData::instance().isListed(cat_id)) + { + LLMarketplaceData::instance().clearListing(cat_id); + } + } + else + { + // If we move from within an active (listed) listing, checks that it's still valid, if not, unlist + LLUUID version_folder_id = LLMarketplaceData::instance().getActiveFolder(from_folder_uuid); + if (version_folder_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + if (!validate_marketplacelistings(cat,NULL)) + { + LLMarketplaceData::instance().activateListing(version_folder_id,false); + } + } + // In all cases, update the listing we moved from so suffix are updated + update_marketplace_category(from_folder_uuid); + } + } } } else if (LLToolDragAndDrop::SOURCE_WORLD == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -2516,7 +2775,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } else if (LLToolDragAndDrop::SOURCE_LIBRARY == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -2536,7 +2795,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, return accept; } -void warn_move_inventory(LLViewerObject* object, LLMoveInv* move_inv) +void warn_move_inventory(LLViewerObject* object, boost::shared_ptr<LLMoveInv> move_inv) { const char* dialog = NULL; if (object->flagScripted()) @@ -2547,7 +2806,34 @@ void warn_move_inventory(LLViewerObject* object, LLMoveInv* move_inv) { dialog = "MoveInventoryFromObject"; } - LLNotificationsUtil::add(dialog, LLSD(), LLSD(), boost::bind(move_task_inventory_callback, _1, _2, move_inv)); + + static LLNotificationPtr notification_ptr; + static boost::shared_ptr<LLMoveInv> inv_ptr; + + // Notification blocks user from interacting with inventories so everything that comes after first message + // is part of this message - don'r show it again + // Note: workaround for MAINT-5495 untill proper refactoring and warning system for Drag&Drop can be made. + if (notification_ptr == NULL + || !notification_ptr->isActive() + || LLNotificationsUtil::find(notification_ptr->getID()) == NULL + || inv_ptr->mCategoryID != move_inv->mCategoryID + || inv_ptr->mObjectID != move_inv->mObjectID) + { + notification_ptr = LLNotificationsUtil::add(dialog, LLSD(), LLSD(), boost::bind(move_task_inventory_callback, _1, _2, move_inv)); + inv_ptr = move_inv; + } + else + { + // Notification is alive and not responded, operating inv_ptr should be safe so attach new data + two_uuids_list_t::iterator move_it; + for (move_it = move_inv->mMoveList.begin(); + move_it != move_inv->mMoveList.end(); + ++move_it) + { + inv_ptr->mMoveList.push_back(*move_it); + } + move_inv.reset(); + } } // Move/copy all inventory items from the Contents folder of an in-world @@ -2635,7 +2921,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, if(drop && accept) { it = inventory_objects.begin(); - LLMoveInv* move_inv = new LLMoveInv; + boost::shared_ptr<LLMoveInv> move_inv(new LLMoveInv); move_inv->mObjectID = object_id; move_inv->mCategoryID = category_id; move_inv->mCallback = callback; @@ -2886,7 +3172,6 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) else if ("cut" == action) { cutToClipboard(); - gInventory.removeObject(mUUID); return; } else if ("copy" == action) @@ -2914,33 +3199,151 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) restoreItem(); return; } + else if ("marketplace_list" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 1) + { + LLUUID version_folder_id = LLMarketplaceData::instance().getVersionFolder(mUUID); + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + mMessage = ""; + if (!validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3))) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantListingFailed", subs); + } + else + { + LLMarketplaceData::instance().activateListing(mUUID,true); + } + } + return; + } + else if ("marketplace_activate" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 2) + { + LLInventoryCategory* category = gInventory.getCategory(mUUID); + mMessage = ""; + if (!validate_marketplacelistings(category,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),false,2)) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantFolderActivationFailed", subs); + } + else + { + LLMarketplaceData::instance().setVersionFolder(category->getParentUUID(), mUUID); + } + } + return; + } + else if ("marketplace_unlist" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 1) + { + LLMarketplaceData::instance().activateListing(mUUID,false,1); + } + return; + } + else if ("marketplace_deactivate" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 2) + { + LLInventoryCategory* category = gInventory.getCategory(mUUID); + LLMarketplaceData::instance().setVersionFolder(category->getParentUUID(), LLUUID::null, 1); + } + return; + } + else if ("marketplace_create_listing" == action) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(mUUID); + mMessage = ""; + bool validates = validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),false); + if (!validates) + { + mMessage = ""; + validates = validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),true); + if (validates) + { + LLNotificationsUtil::add("MerchantForceValidateListing"); + } + } + + if (!validates) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantListingFailed", subs); + } + else + { + LLMarketplaceData::instance().createListing(mUUID); + } + return; + } + else if ("marketplace_disassociate_listing" == action) + { + LLMarketplaceData::instance().clearListing(mUUID); + return; + } + else if ("marketplace_get_listing" == action) + { + // This is used only to exercise the SLM API but won't be shown to end users + LLMarketplaceData::instance().getListing(mUUID); + return; + } + else if ("marketplace_associate_listing" == action) + { + LLFloaterAssociateListing::show(mUUID); + return; + } + else if ("marketplace_check_listing" == action) + { + LLSD data(mUUID); + LLFloaterReg::showInstance("marketplace_validation", data); + return; + } + else if ("marketplace_edit_listing" == action) + { + std::string url = LLMarketplaceData::instance().getListingURL(mUUID); + if (!url.empty()) + { + LLUrlAction::openURL(url); + } + return; + } #ifndef LL_RELEASE_FOR_DOWNLOAD else if ("delete_system_folder" == action) { removeSystemFolder(); } #endif - else if (isMarketplaceCopyAction(action)) + else if (("move_to_marketplace_listings" == action) || ("copy_to_marketplace_listings" == action) || ("copy_or_move_to_marketplace_listings" == action)) { - LL_INFOS() << "Copy folder to marketplace action!" << LL_ENDL; - LLInventoryCategory * cat = gInventory.getCategory(mUUID); if (!cat) return; + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + move_folder_to_marketplacelistings(cat, marketplacelistings_id, ("move_to_marketplace_listings" != action), (("copy_or_move_to_marketplace_listings" == action))); + } +} - const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); - copy_folder_to_outbox(cat, outbox_id, cat->getUUID(), LLToolDragAndDrop::getOperationId()); - } -#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU - else if (isMarketplaceSendAction(action)) - { - LL_INFOS() << "Send to marketplace action!" << LL_ENDL; - - LLInventoryCategory * cat = gInventory.getCategory(mUUID); - if (!cat) return; - - send_to_marketplace(cat); - } -#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU +void LLFolderBridge::gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level) +{ + if (log_level >= LLError::LEVEL_ERROR) + { + if (!mMessage.empty()) + { + // Currently, we do not gather all messages as it creates very long alerts + // Users can get to the whole list of errors on a listing using the "Check for Errors" audit button or "Check listing" right click menu + //mMessage += "\n"; + return; + } + // Take the leading spaces out... + std::string::size_type start = message.find_first_not_of(" "); + // Append the message + mMessage += message.substr(start, message.length() - start); + } } void LLFolderBridge::openItem() @@ -3010,25 +3413,24 @@ LLFolderType::EType LLFolderBridge::getPreferredType() const // Icons for folders are based on the preferred type LLUIImagePtr LLFolderBridge::getIcon() const { - LLFolderType::EType preferred_type = LLFolderType::FT_NONE; - LLViewerInventoryCategory* cat = getCategory(); - if(cat) - { - preferred_type = cat->getPreferredType(); - } - return getIcon(preferred_type); + return getFolderIcon(FALSE); } -// static -LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) +LLUIImagePtr LLFolderBridge::getIconOpen() const { - return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, FALSE)); + return getFolderIcon(TRUE); } -LLUIImagePtr LLFolderBridge::getIconOpen() const +LLUIImagePtr LLFolderBridge::getFolderIcon(BOOL is_open) const { - return LLUI::getUIImage(LLViewerFolderType::lookupIconName(getPreferredType(), TRUE)); + LLFolderType::EType preferred_type = getPreferredType(); + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, is_open)); +} +// static : use by LLLinkFolderBridge to get the closed type icons +LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) +{ + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, FALSE)); } LLUIImagePtr LLFolderBridge::getIconOverlay() const @@ -3040,14 +3442,6 @@ LLUIImagePtr LLFolderBridge::getIconOverlay() const return NULL; } -std::string LLFolderBridge::getLabelSuffix() const -{ - static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); - return mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay() - ? llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()) - : LLStringUtil::null; -} - BOOL LLFolderBridge::renameItem(const std::string& new_name) { @@ -3131,10 +3525,42 @@ void LLFolderBridge::updateHierarchyCreationDate(time_t date) void LLFolderBridge::pasteFromClipboard() { LLInventoryModel* model = getInventoryModel(); - if(model && isClipboardPasteable()) + if (model && isClipboardPasteable()) { - const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const BOOL paste_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + + if (paste_into_marketplacelistings && !LLMarketplaceData::instance().isListed(mUUID) && LLMarketplaceData::instance().isInActiveFolder(mUUID)) + { + // Prompt the user if pasting in a marketplace active version listing (note that pasting right under the listing folder root doesn't need a prompt) + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_pasteFromClipboard, this, _1, _2)); + } + else + { + // Otherwise just do the paste + perform_pasteFromClipboard(); + } + } +} + +// Callback for pasteFromClipboard if DAMA required... +void LLFolderBridge::callback_pasteFromClipboard(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + perform_pasteFromClipboard(); + } +} + +void LLFolderBridge::perform_pasteFromClipboard() +{ + LLInventoryModel* model = getInventoryModel(); + if (model && isClipboardPasteable()) + { + const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); @@ -3142,58 +3568,70 @@ void LLFolderBridge::pasteFromClipboard() const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); std::vector<LLUUID> objects; LLClipboard::instance().pasteFromClipboard(objects); - - if (move_is_into_outbox) - { - LLFolderViewItem * outbox_itemp = mInventoryPanel.get()->getItemByID(mUUID); - - if (outbox_itemp) - { - LLToolDragAndDrop::instance().setCargoCount(objects.size()); - - BOOL can_list = TRUE; - - for (std::vector<LLUUID>::const_iterator iter = objects.begin(); - (iter != objects.end()) && (can_list == TRUE); - ++iter) - { - const LLUUID& item_id = (*iter); - LLInventoryItem *item = model->getItem(item_id); - - if (item) - { - MASK mask = 0x0; - BOOL drop = FALSE; - EDragAndDropType cargo_type = LLViewerAssetType::lookupDragAndDropType(item->getActualType()); - void * cargo_data = (void *) item; - std::string tooltip_msg; - - can_list = outbox_itemp->getViewModelItem()->dragOrDrop(mask, drop, cargo_type, cargo_data, tooltip_msg); - } - } - - LLToolDragAndDrop::instance().resetCargoCount(); - - if (can_list == FALSE) - { - // Notify user of failure somehow -- play error sound? modal dialog? - return; - } + + LLViewerInventoryCategory * dest_folder = getCategory(); + if (move_is_into_outbox || move_is_into_marketplacelistings) + { + std::string error_msg; + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + int index = 0; + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) + { + const LLUUID& item_id = (*iter); + LLInventoryItem *item = model->getItem(item_id); + LLInventoryCategory *cat = model->getCategory(item_id); + + if (item && !can_move_item_to_marketplace(master_folder, dest_folder, item, error_msg, objects.size() - index, true)) + { + break; + } + if (cat && !can_move_folder_to_marketplace(master_folder, dest_folder, cat, error_msg, objects.size() - index, true, true)) + { + break; + } + ++index; } - } - + if (!error_msg.empty()) + { + LLSD subs; + subs["[ERROR_CODE]"] = error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return; + } + } + else + { + // Check that all items can be moved into that folder : for the moment, only stock folder mismatch is checked + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) + { + const LLUUID& item_id = (*iter); + LLInventoryItem *item = model->getItem(item_id); + LLInventoryCategory *cat = model->getCategory(item_id); + + if ((item && !dest_folder->acceptItem(item)) || (cat && (dest_folder->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK))) + { + std::string error_msg = LLTrans::getString("TooltipOutboxMixedStock"); + LLSD subs; + subs["[ERROR_CODE]"] = error_msg; + LLNotificationsUtil::add("StockPasteFailed", subs); + return; + } + } + } + const LLUUID parent_id(mUUID); - + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) { const LLUUID& item_id = (*iter); - + LLInventoryItem *item = model->getItem(item_id); LLInventoryObject *obj = model->getObject(item_id); if (obj) @@ -3221,21 +3659,44 @@ void LLFolderBridge::pasteFromClipboard() LLViewerInventoryCategory* vicat = (LLViewerInventoryCategory *) model->getCategory(item_id); llassert(vicat); if (vicat) - { - //changeCategoryParent() implicity calls dirtyFilter - changeCategoryParent(model, vicat, parent_id, FALSE); + { + // Clear the cut folder from the marketplace if it is a listing folder + if (LLMarketplaceData::instance().isListed(item_id)) + { + LLMarketplaceData::instance().clearListing(item_id); + } + if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(vicat, parent_id); + } + else + { + //changeCategoryParent() implicity calls dirtyFilter + changeCategoryParent(model, vicat, parent_id, FALSE); + } } } else - { - LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); - llassert(viitem); - if (viitem) - { - //changeItemParent() implicity calls dirtyFilter - changeItemParent(model, viitem, parent_id, FALSE); - } - } + { + LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); + llassert(viitem); + if (viitem) + { + if (move_is_into_marketplacelistings) + { + if (!move_item_to_marketplacelistings(viitem, parent_id)) + { + // Stop pasting into the marketplace as soon as we get an error + break; + } + } + else + { + //changeItemParent() implicity calls dirtyFilter + changeItemParent(model, viitem, parent_id, FALSE); + } + } + } } else { @@ -3246,22 +3707,45 @@ void LLFolderBridge::pasteFromClipboard() llassert(vicat); if (vicat) { - copy_inventory_category(model, vicat, parent_id); + if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(vicat, parent_id, true); + } + else + { + copy_inventory_category(model, vicat, parent_id); + } } } - else - { - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - parent_id, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); - } - } - } - } + else + { + LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); + llassert(viitem); + if (viitem) + { + if (move_is_into_marketplacelistings) + { + if (!move_item_to_marketplacelistings(viitem, parent_id, true)) + { + // Stop pasting into the marketplace as soon as we get an error + break; + } + } + else + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + parent_id, + std::string(), + LLPointer<LLInventoryCallback>(NULL)); + } + } + } + } + } + } // Change mode to paste for next paste LLClipboard::instance().setCutMode(false); } @@ -3274,14 +3758,16 @@ void LLFolderBridge::pasteLinkFromClipboard() { const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { // Notify user of failure somehow -- play error sound? modal dialog? return; @@ -3341,9 +3827,10 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items LLInventoryModel* model = getInventoryModel(); llassert(model != NULL); - const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); - const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); - const LLUUID favorites = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); + const LLUUID &lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); + const LLUUID &favorites = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + const LLUUID &marketplace_listings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); if (lost_and_found_id == mUUID) { @@ -3361,6 +3848,35 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { disabled_items.push_back(std::string("New Folder")); } + if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + if (LLMarketplaceData::instance().isUpdating(mUUID)) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("Rename")); + disabled_items.push_back(std::string("Cut")); + disabled_items.push_back(std::string("Copy")); + disabled_items.push_back(std::string("Paste")); + disabled_items.push_back(std::string("Delete")); + } + } + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("New Script")); + disabled_items.push_back(std::string("New Note")); + disabled_items.push_back(std::string("New Gesture")); + disabled_items.push_back(std::string("New Clothes")); + disabled_items.push_back(std::string("New Body Parts")); + } + if (marketplace_listings_id == mUUID) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("Rename")); + disabled_items.push_back(std::string("Cut")); + disabled_items.push_back(std::string("Delete")); + } if(trash_id == mUUID) { // This is the trash. @@ -3390,12 +3906,14 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { items.push_back(std::string("New Folder")); } - - items.push_back(std::string("New Script")); - items.push_back(std::string("New Note")); - items.push_back(std::string("New Gesture")); - items.push_back(std::string("New Clothes")); - items.push_back(std::string("New Body Parts")); + if (!isMarketplaceListingsFolder()) + { + items.push_back(std::string("New Script")); + items.push_back(std::string("New Note")); + items.push_back(std::string("New Gesture")); + items.push_back(std::string("New Clothes")); + items.push_back(std::string("New Body Parts")); + } } getClipboardEntries(false, items, disabled_items, flags); } @@ -3429,9 +3947,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items LLIsType is_object( LLAssetType::AT_OBJECT ); LLIsType is_gesture( LLAssetType::AT_GESTURE ); - if (checkFolderForContentsOfType(model, is_wearable) || - checkFolderForContentsOfType(model, is_object) || - checkFolderForContentsOfType(model, is_gesture) ) + if (checkFolderForContentsOfType(model, is_wearable) || + checkFolderForContentsOfType(model, is_object) || + checkFolderForContentsOfType(model, is_gesture) ) { mWearables=TRUE; } @@ -3443,7 +3961,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items disabled_items.push_back(std::string("Delete System Folder")); } - if (!isOutboxFolder()) + if (!isOutboxFolder() && !isMarketplaceListingsFolder()) { items.push_back(std::string("Share")); if (!canShare()) @@ -3453,7 +3971,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items } // Add menu items that are dependent on the contents of the folder. LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID); - if (category) + if (category && (marketplace_listings_id != mUUID)) { uuid_vec_t folders; folders.push_back(category->getUUID()); @@ -3472,8 +3990,8 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { // it's all on its way - add an observer, and the inventory will call done for us when everything is here. gInventory.addObserver(fetch); - } -} + } + } } void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& items, menuentry_vec_t& disabled_items) @@ -3490,6 +4008,12 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& if (isItemInTrash()) return; if (!isAgentInventory()) return; if (isOutboxFolder()) return; + + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Delete")); + } + if (isMarketplaceListingsFolder()) return; LLFolderType::EType type = category->getPreferredType(); const bool is_system_folder = LLFolderType::lookupIsProtectedType(type); @@ -3509,11 +4033,6 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& } } - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } - #ifndef LL_RELEASE_FOR_DOWNLOAD if (LLFolderType::lookupIsProtectedType(type)) { @@ -3585,7 +4104,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) if(!model) return; buildContextMenuOptions(flags, items, disabled_items); - hide_context_entries(menu, items, disabled_items); + hide_context_entries(menu, items, disabled_items); // Reposition the menu, in case we're adding items to an existing menu. menu.needsArrange(); @@ -3635,7 +4154,7 @@ BOOL LLFolderBridge::dragOrDrop(MASK mask, BOOL drop, LLInventoryCategory* linked_category = gInventory.getCategory(inv_item->getLinkedUUID()); if (linked_category) { - accept = dragCategoryIntoFolder((LLInventoryCategory*)linked_category, drop, tooltip_msg); + accept = dragCategoryIntoFolder((LLInventoryCategory*)linked_category, drop, tooltip_msg, TRUE); } } else @@ -3802,8 +4321,123 @@ void LLFolderBridge::modifyOutfit(BOOL append) LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append ); } +// +=================================================+ +// | LLMarketplaceFolderBridge | +// +=================================================+ + +// LLMarketplaceFolderBridge is a specialized LLFolderBridge for use in Marketplace Inventory panels +LLMarketplaceFolderBridge::LLMarketplaceFolderBridge(LLInventoryPanel* inventory, + LLFolderView* root, + const LLUUID& uuid) : +LLFolderBridge(inventory, root, uuid) +{ + m_depth = depth_nesting_in_marketplace(mUUID); + m_stockCountCache = COMPUTE_STOCK_NOT_EVALUATED; +} + +LLUIImagePtr LLMarketplaceFolderBridge::getIcon() const +{ + return getMarketplaceFolderIcon(FALSE); +} + +LLUIImagePtr LLMarketplaceFolderBridge::getIconOpen() const +{ + return getMarketplaceFolderIcon(TRUE); +} + +LLUIImagePtr LLMarketplaceFolderBridge::getMarketplaceFolderIcon(BOOL is_open) const +{ + LLFolderType::EType preferred_type = getPreferredType(); + if (!LLMarketplaceData::instance().isUpdating(getUUID())) + { + // Skip computation (expensive) if we're waiting for updates. Use the old value in that case. + m_depth = depth_nesting_in_marketplace(mUUID); + } + if ((preferred_type == LLFolderType::FT_NONE) && (m_depth == 2)) + { + // We override the type when in the marketplace listings folder and only for version folder + preferred_type = LLFolderType::FT_MARKETPLACE_VERSION; + } + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, is_open)); +} + +std::string LLMarketplaceFolderBridge::getLabelSuffix() const +{ + static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); + + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + { + return llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()); + } + + std::string suffix = ""; + // Listing folder case + if (LLMarketplaceData::instance().isListed(getUUID())) + { + suffix = llformat("%d",LLMarketplaceData::instance().getListingID(getUUID())); + if (suffix.empty()) + { + suffix = LLTrans::getString("MarketplaceNoID"); + } + suffix = " (" + suffix + ")"; + if (LLMarketplaceData::instance().getActivationState(getUUID())) + { + suffix += " (" + LLTrans::getString("MarketplaceLive") + ")"; + } + } + // Version folder case + else if (LLMarketplaceData::instance().isVersionFolder(getUUID())) + { + suffix += " (" + LLTrans::getString("MarketplaceActive") + ")"; + } + // Add stock amount + bool updating = LLMarketplaceData::instance().isUpdating(getUUID()); + if (!updating) + { + // Skip computation (expensive) if we're waiting for update anyway. Use the old value in that case. + m_stockCountCache = compute_stock_count(getUUID()); + } + if (m_stockCountCache == 0) + { + suffix += " (" + LLTrans::getString("MarketplaceNoStock") + ")"; + } + else if (m_stockCountCache != COMPUTE_STOCK_INFINITE) + { + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + suffix += " (" + LLTrans::getString("MarketplaceStock"); + } + else + { + suffix += " (" + LLTrans::getString("MarketplaceMax"); + } + if (m_stockCountCache == COMPUTE_STOCK_NOT_EVALUATED) + { + suffix += "=" + LLTrans::getString("MarketplaceUpdating") + ")"; + } + else + { + suffix += "=" + llformat("%d", m_stockCountCache) + ")"; + } + } + // Add updating suffix + if (updating) + { + suffix += " (" + LLTrans::getString("MarketplaceUpdating") + ")"; + } + return LLInvFVBridge::getLabelSuffix() + suffix; +} + +LLFontGL::StyleFlags LLMarketplaceFolderBridge::getLabelStyle() const +{ + return (LLMarketplaceData::instance().getActivationState(getUUID()) ? LLFontGL::BOLD : LLFontGL::NORMAL); +} + + + + // helper stuff -bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv* move_inv) +bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, boost::shared_ptr<LLMoveInv> move_inv) { LLFloaterOpenObject::LLCatAndWear* cat_and_wear = (LLFloaterOpenObject::LLCatAndWear* )move_inv->mUserData; LLViewerObject* object = gObjectList.findObject(move_inv->mObjectID); @@ -3839,7 +4473,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response move_inv->mCallback(option, move_inv->mUserData); } - delete move_inv; + move_inv.reset(); //since notification will persist return false; } @@ -3922,12 +4556,35 @@ void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_c } } +// Callback for drop item if DAMA required... +void LLFolderBridge::callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + std::string tooltip_msg; + dragItemIntoFolder(inv_item, TRUE, tooltip_msg, FALSE); + } +} + +// Callback for drop category if DAMA required... +void LLFolderBridge::callback_dropCategoryIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryCategory* inv_category) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + std::string tooltip_msg; + dragCategoryIntoFolder(inv_category, TRUE, tooltip_msg, FALSE, FALSE); + } +} + // 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. BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, - std::string& tooltip_msg) + std::string& tooltip_msg, + BOOL user_confirm) { LLInventoryModel* model = getInventoryModel(); @@ -3945,7 +4602,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); + const LLUUID from_folder_uuid = inv_item->getParentUUID(); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); @@ -3954,6 +4613,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); const BOOL move_is_from_outbox = model->isObjectDescendentOf(inv_item->getUUID(), outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + const BOOL move_is_from_marketplacelistings = model->isObjectDescendentOf(inv_item->getUUID(), marketplacelistings_id); LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); BOOL accept = FALSE; @@ -4007,59 +4668,45 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, //-------------------------------------------------------------------------------- // Determine if item can be moved & dropped - // + // Note: if user_confirm is false, we already went through those accept logic test and can skip them accept = TRUE; - if (!is_movable) + if (user_confirm && !is_movable) { accept = FALSE; } - else if ((mUUID == inv_item->getParentUUID()) && !move_is_into_favorites) + else if (user_confirm && (mUUID == inv_item->getParentUUID()) && !move_is_into_favorites) { accept = FALSE; } - else if (move_is_into_current_outfit || move_is_into_outfit) + else if (user_confirm && (move_is_into_current_outfit || move_is_into_outfit)) { accept = can_move_to_outfit(inv_item, move_is_into_current_outfit); } - else if (move_is_into_favorites || move_is_into_landmarks) + else if (user_confirm && (move_is_into_favorites || move_is_into_landmarks)) { accept = can_move_to_landmarks(inv_item); } - else if (move_is_into_outbox) + else if (user_confirm && (move_is_into_outbox || move_is_into_marketplacelistings)) { - accept = can_move_to_outbox(inv_item, tooltip_msg); - - if (accept) - { - const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID); - - int existing_item_count = LLToolDragAndDrop::instance().getCargoCount(); - - if (master_folder != NULL) - { - LLInventoryModel::cat_array_t existing_categories; - LLInventoryModel::item_array_t existing_items; - - gInventory.collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE); - - existing_item_count += existing_items.size(); - } - - if (existing_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects"); - accept = FALSE; - } - } + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + LLViewerInventoryCategory * dest_folder = getCategory(); + accept = can_move_item_to_marketplace(master_folder, dest_folder, inv_item, tooltip_msg, LLToolDragAndDrop::instance().getCargoCount() - LLToolDragAndDrop::instance().getCargoIndex()); } + // Check that the folder can accept this item based on folder/item type compatibility (e.g. stock folder compatibility) + if (user_confirm && accept) + { + LLViewerInventoryCategory * dest_folder = getCategory(); + accept = dest_folder->acceptItem(inv_item); + } + LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); // Check whether the item being dragged from active inventory panel // passes the filter of the destination panel. - if (accept && active_panel && use_filter) + if (user_confirm && accept && active_panel && use_filter) { LLFolderViewItem* fv_item = active_panel->getItemByID(inv_item->getUUID()); if (!fv_item) return false; @@ -4079,9 +4726,25 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // RN: a better solution would be to deselect automatically when an item is moved // and then select any item that is dropped only in the panel that it is dropped in if (active_panel && (destination_panel != active_panel)) - { - active_panel->unSelectAll(); - } + { + active_panel->unSelectAll(); + } + // Dropping in or out of marketplace needs (sometimes) confirmation + if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings)) + { + if ((move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(inv_item->getUUID()) + || LLMarketplaceData::instance().isListedAndActive(inv_item->getUUID()))) || + (move_is_into_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID))) + { + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropItemIntoFolder, this, _1, _2, inv_item)); + return true; + } + if (move_is_into_marketplacelistings && !move_is_from_marketplacelistings) + { + LLNotificationsUtil::add("ConfirmMerchantMoveInventory", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropItemIntoFolder, this, _1, _2, inv_item)); + return true; + } + } //-------------------------------------------------------------------------------- // Destination folder logic @@ -4094,7 +4757,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, LLFolderViewItem* itemp = destination_panel->getRootFolder()->getDraggingOverItem(); if (itemp) { - LLUUID srcItemId = inv_item->getUUID(); + LLUUID srcItemId = inv_item->getUUID(); LLUUID destItemId = static_cast<LLFolderViewModelItemInventory*>(itemp->getViewModelItem())->getUUID(); LLFavoritesOrderStorage::instance().rearrangeFavoriteLandmarks(srcItemId, destItemId); } @@ -4112,6 +4775,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { dropToOutfit(inv_item, move_is_into_current_outfit); } + // MERCHANT OUTBOX folder + // Move the item else if (move_is_into_outbox) { if (move_is_from_outbox) @@ -4123,6 +4788,12 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, copy_item_to_outbox(inv_item, mUUID, LLUUID::null, LLToolDragAndDrop::getOperationId()); } } + // MARKETPLACE LISTINGS folder + // Move the item + else if (move_is_into_marketplacelistings) + { + move_item_to_marketplacelistings(inv_item, mUUID); + } // NORMAL or TRASH folder // (move the item, restamp if into trash) else @@ -4139,8 +4810,22 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, mUUID, move_is_into_trash); } - - // + + if (move_is_from_marketplacelistings) + { + // If we move from an active (listed) listing, checks that it's still valid, if not, unlist + LLUUID version_folder_id = LLMarketplaceData::instance().getActiveFolder(from_folder_uuid); + if (version_folder_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + if (!validate_marketplacelistings(cat,NULL)) + { + LLMarketplaceData::instance().activateListing(version_folder_id,false); + } + } + } + + // //-------------------------------------------------------------------------------- } } @@ -4189,7 +4874,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { accept = FALSE; } - else if (move_is_into_outbox) + else if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4204,7 +4889,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, if (accept && drop) { - LLMoveInv* move_inv = new LLMoveInv; + boost::shared_ptr<LLMoveInv> move_inv (new LLMoveInv()); move_inv->mObjectID = inv_item->getParentUUID(); two_uuids_t item_pair(mUUID, inv_item->getUUID()); move_inv->mMoveList.push_back(item_pair); @@ -4227,7 +4912,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, } else if(LLToolDragAndDrop::SOURCE_NOTECARD == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4261,7 +4946,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { accept = TRUE; - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4434,6 +5119,12 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -4501,6 +5192,12 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if (isItemInTrash()) @@ -4576,6 +5273,12 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if(isItemInTrash()) @@ -4868,6 +5571,12 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5000,6 +5709,25 @@ void LLNotecardBridge::openItem() } } +void LLNotecardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) +{ + LL_DEBUGS() << "LLNotecardBridge::buildContextMenu()" << LL_ENDL; + + if (isMarketplaceListingsFolder()) + { + menuentry_vec_t items; + menuentry_vec_t disabled_items; + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + hide_context_entries(menu, items, disabled_items); + } + else + { + LLItemBridge::buildContextMenu(menu, flags); + } +} + // +=================================================+ // | LLGestureBridge | // +=================================================+ @@ -5045,7 +5773,7 @@ void LLGestureBridge::performAction(LLInventoryModel* model, std::string action) gInventory.updateItem(item); gInventory.notifyObservers(); } - else if (isRemoveAction(action)) + else if ("deactivate" == action || isRemoveAction(action)) { LLGestureMgr::instance().deactivateGesture(mUUID); @@ -5135,6 +5863,12 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5189,6 +5923,12 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if(isItemInTrash()) @@ -5368,13 +6108,11 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach // Check for duplicate request. if (isAgentAvatarValid() && - (gAgentAvatarp->attachmentWasRequested(item_id) || - gAgentAvatarp->isWearingAttachment(item_id))) + gAgentAvatarp->isWearingAttachment(item_id)) { - LL_WARNS() << "duplicate attachment request, ignoring" << LL_ENDL; + LL_WARNS() << "ATT duplicate attachment request, ignoring" << LL_ENDL; return; } - gAgentAvatarp->addAttachmentRequest(item_id); S32 attach_pt = 0; if (isAgentAvatarValid() && attachment) @@ -5424,36 +6162,14 @@ bool confirm_attachment_rez(const LLSD& notification, const LLSD& response) if (itemp) { - /* - { - U8 attachment_pt = notification["payload"]["attachment_point"].asInteger(); - - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_ObjectData); - msg->addUUIDFast(_PREHASH_ItemID, itemp->getUUID()); - msg->addUUIDFast(_PREHASH_OwnerID, itemp->getPermissions().getOwner()); - msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt); - pack_permissions_slam(msg, itemp->getFlags(), itemp->getPermissions()); - msg->addStringFast(_PREHASH_Name, itemp->getName()); - msg->addStringFast(_PREHASH_Description, itemp->getDescription()); - msg->sendReliable(gAgent.getRegion()->getHost()); - return false; - } - */ - // Queue up attachments to be sent in next idle tick, this way the // attachments are batched up all into one message versus each attachment // being sent in its own separate attachments message. U8 attachment_pt = notification["payload"]["attachment_point"].asInteger(); BOOL is_add = notification["payload"]["is_add"].asBoolean(); - LLAttachmentsMgr::instance().addAttachment(item_id, - attachment_pt, - is_add); + LL_DEBUGS("Avatar") << "ATT calling addAttachmentRequest " << (itemp ? itemp->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + LLAttachmentsMgr::instance().addAttachmentRequest(item_id, attachment_pt, is_add); } } return false; @@ -5472,6 +6188,12 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5673,12 +6395,8 @@ void LLWearableBridge::performAction(LLInventoryModel* model, std::string action void LLWearableBridge::openItem() { - LLViewerInventoryItem* item = getItem(); - - if (item) - { - LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel()); - } + performAction(getInventoryModel(), + get_is_item_worn(mUUID) ? "take_off" : "wear"); } void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) @@ -5694,6 +6412,12 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere BOOL can_open = ((flags & SUPPRESS_OPEN_ITEM) != SUPPRESS_OPEN_ITEM); @@ -5770,7 +6494,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) if (LLWearableType::getAllowMultiwear(mWearableType)) { items.push_back(std::string("Wearable Add")); - if (gAgentWearables.getWearableCount(mWearableType) >= LLAgentWearables::MAX_CLOTHING_PER_TYPE) + if (!gAgentWearables.canAddWearable(mWearableType)) { disabled_items.push_back(std::string("Wearable Add")); } @@ -5994,6 +6718,12 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Properties")); @@ -6439,4 +7169,22 @@ LLInvFVBridge* LLRecentInventoryBridgeBuilder::createBridge( return new_listener; } +LLFolderViewGroupedItemBridge::LLFolderViewGroupedItemBridge() +{ +} + +void LLFolderViewGroupedItemBridge::groupFilterContextMenu(folder_view_item_deque& selected_items, LLMenuGL& menu) +{ + uuid_vec_t ids; + menuentry_vec_t disabled_items; + if (get_selection_item_uuids(selected_items, ids)) + { + if (!LLAppearanceMgr::instance().canAddWearables(ids)) + { + disabled_items.push_back(std::string("Wearable Add")); + } + } + disable_context_entries_if_present(menu, disabled_items); +} + // EOF diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index f8ef15991d..03e19cc4da 100755..100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -37,6 +37,7 @@ #include "llviewerwearable.h" #include "lltooldraganddrop.h" #include "lllandmarklist.h" +#include "llfolderviewitem.h" class LLInventoryFilter; class LLInventoryPanel; @@ -76,6 +77,7 @@ public: bool canShare() const; bool canListOnMarketplace() const; + bool canListOnOutboxNow() const; bool canListOnMarketplaceNow() const; //-------------------------------------------------------------------- @@ -114,7 +116,7 @@ public: virtual void move(LLFolderViewModelItem* new_parent_bridge) {} virtual BOOL isItemCopyable() const { return FALSE; } virtual BOOL copyToClipboard() const; - virtual BOOL cutToClipboard() const; + virtual BOOL cutToClipboard(); virtual BOOL isClipboardPasteable() const; virtual BOOL isClipboardPasteableAsLink() const; virtual void pasteFromClipboard() {} @@ -146,6 +148,9 @@ protected: virtual void addOutboxContextMenuOptions(U32 flags, menuentry_vec_t &items, menuentry_vec_t &disabled_items); + virtual void addMarketplaceContextMenuOptions(U32 flags, + menuentry_vec_t &items, + menuentry_vec_t &disabled_items); protected: LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid); @@ -160,6 +165,7 @@ protected: BOOL isInboxFolder() const; // true if COF or descendant of marketplace inbox BOOL isOutboxFolderDirectParent() const; + BOOL isMarketplaceListingsFolder() const; // true if descendant of Marketplace listings folder const LLUUID getOutboxFolder() const; virtual BOOL isItemPermissive() const; @@ -172,6 +178,9 @@ protected: const LLUUID& new_parent, BOOL restamp); void removeBatchNoCheck(std::vector<LLFolderViewModelItem*>& batch); + + BOOL callback_cutToClipboard(const LLSD& notification, const LLSD& response); + BOOL perform_cutToClipboard(); public: BOOL isOutboxFolder() const; // true if COF or descendant of marketplace outbox @@ -187,6 +196,7 @@ protected: mutable std::string mSearchableName; void purgeItem(LLInventoryModel *model, const LLUUID &uuid); + void removeObject(LLInventoryModel *model, const LLUUID &uuid); virtual void buildDisplayName() const {} }; @@ -263,8 +273,10 @@ public: mIsLoading(false) {} - BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, std::string& tooltip_msg); - BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop, std::string& tooltip_msg); + BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, std::string& tooltip_msg, BOOL user_confirm = TRUE); + BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop, std::string& tooltip_msg, BOOL is_link = FALSE, BOOL user_confirm = TRUE); + void callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item); + void callback_dropCategoryIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryCategory* inv_category); virtual void buildDisplayName() const; @@ -279,10 +291,9 @@ public: virtual LLUIImagePtr getIcon() const; virtual LLUIImagePtr getIconOpen() const; virtual LLUIImagePtr getIconOverlay() const; - static LLUIImagePtr getIcon(LLFolderType::EType preferred_type); - virtual std::string getLabelSuffix() const; + virtual LLFontGL::StyleFlags getLabelStyle() const; virtual BOOL renameItem(const std::string& new_name); @@ -354,12 +365,17 @@ public: static LLHandle<LLFolderBridge> sSelf; static void staticFolderOptionsMenu(); -private: +protected: + void callback_pasteFromClipboard(const LLSD& notification, const LLSD& response); + void perform_pasteFromClipboard(); + void gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level); + LLUIImagePtr getFolderIcon(BOOL is_open) const; bool mCallingCards; bool mWearables; bool mIsLoading; LLTimer mTimeSinceRequestStart; + std::string mMessage; LLRootHandle<LLFolderBridge> mHandle; }; @@ -440,6 +456,7 @@ public: const LLUUID& uuid) : LLItemBridge(inventory, root, uuid) {} virtual void openItem(); + virtual void buildContextMenu(LLMenuGL& menu, U32 flags); }; class LLGestureBridge : public LLItemBridge @@ -483,6 +500,7 @@ public: virtual LLUIImagePtr getIcon() const; virtual void performAction(LLInventoryModel* model, std::string action); virtual void openItem(); + virtual BOOL isItemWearable() const { return TRUE; } virtual std::string getLabelSuffix() const; virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual BOOL renameItem(const std::string& new_name); @@ -515,6 +533,7 @@ public: virtual LLUIImagePtr getIcon() const; virtual void performAction(LLInventoryModel* model, std::string action); virtual void openItem(); + virtual BOOL isItemWearable() const { return TRUE; } virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual std::string getLabelSuffix() const; virtual BOOL renameItem(const std::string& new_name); @@ -668,6 +687,31 @@ public: U32 flags = 0x00) const; }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Marketplace Inventory Panel related classes +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLMarketplaceFolderBridge : public LLFolderBridge +{ +public: + // Overloads some display related methods specific to folders in a marketplace floater context + LLMarketplaceFolderBridge(LLInventoryPanel* inventory, + LLFolderView* root, + const LLUUID& uuid); + + virtual LLUIImagePtr getIcon() const; + virtual LLUIImagePtr getIconOpen() const; + virtual std::string getLabelSuffix() const; + virtual LLFontGL::StyleFlags getLabelStyle() const; + +private: + LLUIImagePtr getMarketplaceFolderIcon(BOOL is_open) const; + // Those members are mutable because they are cached variablse to speed up display, not a state variables + mutable S32 m_depth; + mutable S32 m_stockCountCache; +}; + + void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment, bool replace = false); @@ -689,4 +733,17 @@ void hide_context_entries(LLMenuGL& menu, const menuentry_vec_t &entries_to_show, const menuentry_vec_t &disabled_entries); +// Helper functions to classify actions. +bool isAddAction(const std::string& action); +bool isRemoveAction(const std::string& action); +bool isMarketplaceCopyAction(const std::string& action); +bool isMarketplaceSendAction(const std::string& action); + +class LLFolderViewGroupedItemBridge: public LLFolderViewGroupedItemModel +{ +public: + LLFolderViewGroupedItemBridge(); + virtual void groupFilterContextMenu(folder_view_item_deque& selected_items, LLMenuGL& menu); +}; + #endif // LL_LLINVENTORYBRIDGE_H diff --git a/indra/newview/llinventoryclipboard.cpp b/indra/newview/llinventoryclipboard.cpp index 53da34f448..53da34f448 100755..100644 --- a/indra/newview/llinventoryclipboard.cpp +++ b/indra/newview/llinventoryclipboard.cpp diff --git a/indra/newview/llinventoryclipboard.h b/indra/newview/llinventoryclipboard.h index b9f1451e5c..b9f1451e5c 100755..100644 --- a/indra/newview/llinventoryclipboard.h +++ b/indra/newview/llinventoryclipboard.h diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index c66e9da4a9..003bbcafed 100755..100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -33,6 +33,8 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" +#include "llinventoryfunctions.h" +#include "llmarketplacefunctions.h" #include "llviewercontrol.h" #include "llfolderview.h" #include "llinventorybridge.h" @@ -68,7 +70,8 @@ LLInventoryFilter::LLInventoryFilter(const Params& p) : mName(p.name), mFilterModified(FILTER_NONE), mEmptyLookupMessage("InventoryNoMatchingItems"), - mFilterOps(p.filter_ops), + mFilterOps(p.filter_ops), + mBackupFilterOps(mFilterOps), mFilterSubString(p.substring), mCurrentGeneration(0), mFirstRequiredGeneration(0), @@ -136,12 +139,64 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const } // when applying a filter, matching folders get their contents downloaded first - if (mFilterSubString.size() + if (isNotDefault() && !gInventory.isCategoryComplete(folder_id)) { LLInventoryModelBackgroundFetch::instance().start(folder_id); } + // Marketplace folder filtering + const U32 filterTypes = mFilterOps.mFilterTypes; + const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | + FILTERTYPE_MARKETPLACE_UNASSOCIATED | FILTERTYPE_MARKETPLACE_LISTING_FOLDER | + FILTERTYPE_NO_MARKETPLACE_ITEMS; + if (filterTypes & marketplace_filter) + { + S32 depth = depth_nesting_in_marketplace(folder_id); + + if (filterTypes & FILTERTYPE_NO_MARKETPLACE_ITEMS) + { + if (depth >= 0) + { + return false; + } + } + + if (filterTypes & FILTERTYPE_MARKETPLACE_LISTING_FOLDER) + { + if (depth > 1) + { + return false; + } + } + + if (depth > 0) + { + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) + { + if (!LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } + } + else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) + { + if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } + } + else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) + { + if (LLMarketplaceData::instance().isListed(listing_uuid)) + { + return false; + } + } + } + } + // show folder links LLViewerInventoryItem* item = gInventory.getItem(folder_id); if (item && item->getActualType() == LLAssetType::AT_LINK_FOLDER) @@ -501,6 +556,40 @@ void LLInventoryFilter::setFilterEmptySystemFolders() mFilterOps.mFilterTypes |= FILTERTYPE_EMPTYFOLDERS; } +void LLInventoryFilter::setFilterMarketplaceActiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_ACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceInactiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_INACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_UNASSOCIATED; +} + +void LLInventoryFilter::setFilterMarketplaceListingFolders(bool select_only_listing_folders) +{ + if (select_only_listing_folders) + { + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_MORE_RESTRICTIVE); + } + else + { + mFilterOps.mFilterTypes &= ~FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_LESS_RESTRICTIVE); + } +} + +void LLInventoryFilter::setFilterNoMarketplaceFolder() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_NO_MARKETPLACE_ITEMS; +} + void LLInventoryFilter::setFilterUUID(const LLUUID& object_id) { if (mFilterOps.mFilterUUID == LLUUID::null) @@ -546,6 +635,21 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) setModified(FILTER_RESTART); } + // Cancel out filter links once the search string is modified + if (mFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + if (mBackupFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + // we started viewer/floater in 'only links' mode + mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; + } + else + { + mFilterOps = mBackupFilterOps; + setModified(FILTER_RESTART); + } + } + // Cancel out UUID once the search string is modified if (mFilterOps.mFilterTypes == FILTERTYPE_UUID) { @@ -553,11 +657,6 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) mFilterOps.mFilterUUID = LLUUID::null; setModified(FILTER_RESTART); } - - // Cancel out filter links once the search string is modified - { - mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; - } } } @@ -748,6 +847,22 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state) } } +void LLInventoryFilter::setFindAllLinksMode(const std::string &search_name, const LLUUID& search_id) +{ + // Save a copy of settings so that we will be able to restore it later + // but make sure we are not searching for links already + if(mFilterOps.mFilterLinks != FILTERLINK_ONLY_LINKS) + { + mBackupFilterOps = mFilterOps; + } + + // set search options + setFilterSubString(search_name); + setFilterUUID(search_id); + setShowFolderState(SHOW_NON_EMPTY_FOLDERS); + setFilterLinks(FILTERLINK_ONLY_LINKS); +} + void LLInventoryFilter::markDefault() { mDefaultFilterOps = mFilterOps; diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index 5e18ad4d20..eee36b7e40 100755..100644 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -52,7 +52,12 @@ public: FILTERTYPE_UUID = 0x1 << 2, // find the object with UUID and any links to it FILTERTYPE_DATE = 0x1 << 3, // search by date range FILTERTYPE_WEARABLE = 0x1 << 4, // search by wearable type - FILTERTYPE_EMPTYFOLDERS = 0x1 << 5 // pass if folder is not a system folder to be hidden if + FILTERTYPE_EMPTYFOLDERS = 0x1 << 5, // pass if folder is not a system folder to be hidden if empty + FILTERTYPE_MARKETPLACE_ACTIVE = 0x1 << 6, // pass if folder is a marketplace active folder + FILTERTYPE_MARKETPLACE_INACTIVE = 0x1 << 7, // pass if folder is a marketplace inactive folder + FILTERTYPE_MARKETPLACE_UNASSOCIATED = 0x1 << 8, // pass if folder is a marketplace non associated (no market ID) folder + FILTERTYPE_MARKETPLACE_LISTING_FOLDER = 0x1 << 9, // pass iff folder is a listing folder + FILTERTYPE_NO_MARKETPLACE_ITEMS = 0x1 << 10 // pass iff folder is not under the marketplace }; enum EFilterDateDirection @@ -73,7 +78,8 @@ public: SO_NAME = 0, // Sort inventory by name SO_DATE = 0x1, // Sort inventory by date SO_FOLDERS_BY_NAME = 0x1 << 1, // Force folder sort by name - SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2 // Force system folders to be on top + SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2,// Force system folders to be on top + SO_FOLDERS_BY_WEIGHT = 0x1 << 3, // Force folder sort by weight, usually, amount of some elements in their descendents }; struct FilterOps @@ -170,6 +176,11 @@ public: void setFilterUUID(const LLUUID &object_id); void setFilterWearableTypes(U64 types); void setFilterEmptySystemFolders(); + void setFilterMarketplaceActiveFolders(); + void setFilterMarketplaceInactiveFolders(); + void setFilterMarketplaceUnassociatedFolders(); + void setFilterMarketplaceListingFolders(bool select_only_listing_folders); + void setFilterNoMarketplaceFolder(); void updateFilterTypes(U64 types, U64& current_types); void setFilterSubString(const std::string& string); @@ -193,6 +204,9 @@ public: void setFilterLinks(U64 filter_link); U64 getFilterLinks() const; + // sets params for Link-only search and backs up search settings for future restoration + void setFindAllLinksMode(const std::string &search_name, const LLUUID& search_id); + // +-------------------------------------------------------------------+ // + Execution And Results // +-------------------------------------------------------------------+ @@ -267,6 +281,7 @@ private: FilterOps mFilterOps; FilterOps mDefaultFilterOps; + FilterOps mBackupFilterOps; // for backup purposes when leaving 'search link' mode std::string mFilterSubString; std::string mFilterSubStringOrig; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 1abc09bf3b..984c650128 100755..100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -45,6 +45,7 @@ // newview includes #include "llappearancemgr.h" #include "llappviewer.h" +#include "llavataractions.h" #include "llclipboard.h" #include "lldonotdisturbnotificationstorage.h" #include "llfloaterinventory.h" @@ -59,6 +60,7 @@ #include "llinventorypanel.h" #include "lllineeditor.h" #include "llmarketplacenotifications.h" +#include "llmarketplacefunctions.h" #include "llmenugl.h" #include "llnotificationsutil.h" #include "llpanelmaininventory.h" @@ -89,6 +91,126 @@ BOOL LLInventoryState::sWearNewClothing = FALSE; LLUUID LLInventoryState::sWearNewClothingTransactionID; +std::list<LLUUID> LLInventoryAction::sMarketplaceFolders; + +// Helper function : callback to update a folder after inventory action happened in the background +void update_folder_cb(const LLUUID& dest_folder) +{ + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + gInventory.updateCategory(dest_cat); + gInventory.notifyObservers(); +} + +// Helper function : Count only the copyable items, i.e. skip the stock items (which are no copy) +S32 count_copyable_items(LLInventoryModel::item_array_t& items) +{ + S32 count = 0; + for (LLInventoryModel::item_array_t::const_iterator it = items.begin(); it != items.end(); ++it) + { + LLViewerInventoryItem* item = *it; + if (item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + count++; + } + } + return count; +} + +// Helper function : Count only the non-copyable items, i.e. the stock items, skip the others +S32 count_stock_items(LLInventoryModel::item_array_t& items) +{ + S32 count = 0; + for (LLInventoryModel::item_array_t::const_iterator it = items.begin(); it != items.end(); ++it) + { + LLViewerInventoryItem* item = *it; + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + count++; + } + } + return count; +} + +// Helper function : Count the number of stock folders +S32 count_stock_folders(LLInventoryModel::cat_array_t& categories) +{ + S32 count = 0; + for (LLInventoryModel::cat_array_t::const_iterator it = categories.begin(); it != categories.end(); ++it) + { + LLInventoryCategory* cat = *it; + if (cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + count++; + } + } + return count; +} + +// Helper funtion : Count the number of items (not folders) in the descending hierarchy +S32 count_descendants_items(const LLUUID& cat_id) +{ + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + S32 count = item_array->size(); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLViewerInventoryCategory* category = *iter; + count += count_descendants_items(category->getUUID()); + } + + return count; +} + +// Helper function : Returns true if the hierarchy contains nocopy items +bool contains_nocopy_items(const LLUUID& id) +{ + LLInventoryCategory* cat = gInventory.getCategory(id); + + if (cat) + { + // Get the content + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(id,cat_array,item_array); + + // Check all the items: returns true upon encountering a nocopy item + for (LLInventoryModel::item_array_t::iterator iter = item_array->begin(); iter != item_array->end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * inv_item = (LLViewerInventoryItem *) item; + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return true; + } + } + + // Check all the sub folders recursively + for (LLInventoryModel::cat_array_t::iterator iter = cat_array->begin(); iter != cat_array->end(); iter++) + { + LLViewerInventoryCategory* cat = *iter; + if (contains_nocopy_items(cat->getUUID())) + { + return true; + } + } + } + else + { + LLInventoryItem* item = gInventory.getItem(id); + LLViewerInventoryItem * inv_item = (LLViewerInventoryItem *) item; + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return true; + } + } + + // Exit without meeting a nocopy item + return false; +} // Generates a string containing the path to the item specified by // item_id. @@ -111,6 +233,139 @@ void append_path(const LLUUID& id, std::string& path) path.append(temp); } +void update_marketplace_folder_hierarchy(const LLUUID cat_id) +{ + // When changing the marketplace status of a folder, the only thing that needs to happen is + // for all observers of the folder to, possibly, change the display label of the folder + // so that's the only thing we change on the update mask. + gInventory.addChangedMask(LLInventoryObserver::LABEL, cat_id); + + // Update all descendent folders down + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + update_marketplace_folder_hierarchy(category->getUUID()); + } + return; +} + +void update_marketplace_category(const LLUUID& cur_uuid, bool perform_consistency_enforcement) +{ + // When changing the marketplace status of an item, we usually have to change the status of all + // folders in the same listing. This is because the display of each folder is affected by the + // overall status of the whole listing. + // Consequently, the only way to correctly update an item anywhere in the marketplace is to + // update the whole listing from its listing root. + // This is not as bad as it seems as we only update folders, not items, and the folder nesting depth + // is limited to 4. + // We also take care of degenerated cases so we don't update all folders in the inventory by mistake. + + if (cur_uuid.isNull()) + { + return; + } + + // Grab marketplace listing data for this item + S32 depth = depth_nesting_in_marketplace(cur_uuid); + if (depth > 0) + { + // Retrieve the listing uuid this object is in + LLUUID listing_uuid = nested_parent_id(cur_uuid, depth); + + // Verify marketplace data consistency for this listing + if (perform_consistency_enforcement && LLMarketplaceData::instance().isListed(listing_uuid)) + { + LLUUID version_folder_uuid = LLMarketplaceData::instance().getVersionFolder(listing_uuid); + S32 version_depth = depth_nesting_in_marketplace(version_folder_uuid); + if (version_folder_uuid.notNull() && (!gInventory.isObjectDescendentOf(version_folder_uuid, listing_uuid) || (version_depth != 2))) + { + LL_INFOS("SLM") << "Unlist and clear version folder as the version folder is not at the right place anymore!!" << LL_ENDL; + LLMarketplaceData::instance().setVersionFolder(listing_uuid, LLUUID::null,1); + } + else if (version_folder_uuid.notNull() && LLMarketplaceData::instance().getActivationState(version_folder_uuid) && (count_descendants_items(version_folder_uuid) == 0) && !LLMarketplaceData::instance().isUpdating(version_folder_uuid,version_depth)) + { + LL_INFOS("SLM") << "Unlist as the version folder is empty of any item!!" << LL_ENDL; + LLNotificationsUtil::add("AlertMerchantVersionFolderEmpty"); + LLMarketplaceData::instance().activateListing(listing_uuid, false,1); + } + } + + // Check if the count on hand needs to be updated on SLM + if (perform_consistency_enforcement && (compute_stock_count(listing_uuid) != LLMarketplaceData::instance().getCountOnHand(listing_uuid))) + { + LLMarketplaceData::instance().updateCountOnHand(listing_uuid,1); + } + // Update all descendents starting from the listing root + update_marketplace_folder_hierarchy(listing_uuid); + } + else if (depth == 0) + { + // If this is the marketplace listings root itself, update all descendents + if (gInventory.getCategory(cur_uuid)) + { + update_marketplace_folder_hierarchy(cur_uuid); + } + } + else + { + // If the folder is outside the marketplace listings root, clear its SLM data if needs be + if (perform_consistency_enforcement && LLMarketplaceData::instance().isListed(cur_uuid)) + { + LL_INFOS("SLM") << "Disassociate as the listing folder is not under the marketplace folder anymore!!" << LL_ENDL; + LLMarketplaceData::instance().clearListing(cur_uuid); + } + // Update all descendents if this is a category + if (gInventory.getCategory(cur_uuid)) + { + update_marketplace_folder_hierarchy(cur_uuid); + } + } + + return; +} + +// Iterate through the marketplace and flag for label change all categories that countain a stock folder (i.e. stock folders and embedding folders up the hierarchy) +void update_all_marketplace_count(const LLUUID& cat_id) +{ + // Get all descendent folders down + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + if (category->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // Listing containing stock folders needs to be updated but not others + // Note: we take advantage of the fact that stock folder *do not* contain sub folders to avoid a recursive call here + update_marketplace_category(category->getUUID()); + } + else + { + // Explore the contained folders recursively + update_all_marketplace_count(category->getUUID()); + } + } +} + +void update_all_marketplace_count() +{ + // Get the marketplace root and launch the recursive exploration + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (!marketplace_listings_uuid.isNull()) + { + update_all_marketplace_count(marketplace_listings_uuid); + } + return; +} + void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name) { LLViewerInventoryCategory* cat; @@ -131,7 +386,8 @@ void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::s void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, - const LLUUID& root_copy_id) + const LLUUID& root_copy_id, + bool move_no_copy_items ) { // Create the initial folder LLUUID new_cat_uuid = gInventory.createNewCategory(parent_id, LLFolderType::FT_NONE, cat->getName()); @@ -144,19 +400,42 @@ void copy_inventory_category(LLInventoryModel* model, LLInventoryModel::cat_array_t* cat_array; LLInventoryModel::item_array_t* item_array; gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + // If root_copy_id is null, tell the marketplace model we'll be waiting for new items to be copied over for this folder + if (root_copy_id.isNull()) + { + LLMarketplaceData::instance().setValidationWaiting(root_id,count_descendants_items(cat->getUUID())); + } // Copy all the items LLInventoryModel::item_array_t item_array_copy = *item_array; for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) { LLInventoryItem* item = *iter; - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - new_cat_uuid, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); + LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(update_folder_cb, new_cat_uuid)); + + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + // If the item is nocopy, we do nothing or, optionally, move it + if (move_no_copy_items) + { + // Reparent the item + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + gInventory.changeItemParent(viewer_inv_item, new_cat_uuid, true); + } + // Decrement the count in root_id since that one item won't be copied over + LLMarketplaceData::instance().decrementValidationWaiting(root_id); + } + else + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + new_cat_uuid, + std::string(), + cb); + } } // Copy all the folders @@ -166,7 +445,7 @@ void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* category = *iter; if (category->getUUID() != root_id) { - copy_inventory_category(model, category, new_cat_uuid, root_id); + copy_inventory_category(model, category, new_cat_uuid, root_id, move_no_copy_items); } } } @@ -230,7 +509,7 @@ BOOL get_is_item_worn(const LLUUID& id) return FALSE; // Consider the item as worn if it has links in COF. - if (LLAppearanceMgr::instance().isLinkInCOF(id)) + if (LLAppearanceMgr::instance().isLinkedInCOF(id)) { return TRUE; } @@ -264,7 +543,7 @@ BOOL get_can_item_be_worn(const LLUUID& id) if (!item) return FALSE; - if (LLAppearanceMgr::isLinkInCOF(item->getLinkedUUID())) + if (LLAppearanceMgr::instance().isLinkedInCOF(item->getLinkedUUID())) { // an item having links in COF (i.e. a worn item) return FALSE; @@ -458,7 +737,7 @@ void show_item_original(const LLUUID& item_uuid) { return; } - active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO); + active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_YES); if(do_reset_inventory_filter) { @@ -508,14 +787,22 @@ void open_outbox() LLFloaterReg::showInstance("outbox"); } -LLUUID create_folder_in_outbox_for_item(LLInventoryItem* item, const LLUUID& destFolderId, S32 operation_id) +void open_marketplace_listings() +{ + LLFloaterReg::showInstance("marketplace_listings"); +} + +// Create a new folder in destFolderId with the same name as the item name and return the uuid of the new folder +// Note: this is used locally in various situation where we need to wrap an item into a special folder +LLUUID create_folder_for_item(LLInventoryItem* item, const LLUUID& destFolderId) { llassert(item); llassert(destFolderId.notNull()); LLUUID created_folder_id = gInventory.createNewCategory(destFolderId, LLFolderType::FT_NONE, item->getName()); gInventory.notifyObservers(); - + + // *TODO : Create different notifications for the various cases LLNotificationsUtil::add("OutboxFolderCreated"); return created_folder_id; @@ -531,8 +818,7 @@ void move_to_outbox_cb_action(const LLSD& payload) // when moving item directly into outbox create folder with that name if (dest_folder_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - S32 operation_id = payload["operation_id"].asInteger(); - dest_folder_id = create_folder_in_outbox_for_item(viitem, dest_folder_id, operation_id); + dest_folder_id = create_folder_for_item(viitem, dest_folder_id); } LLUUID parent = viitem->getParentUUID(); @@ -603,7 +889,7 @@ void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LL // when moving item directly into outbox create folder with that name if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id); + dest_folder = create_folder_for_item(inv_item, dest_folder); } copy_inventory_item(gAgent.getID(), @@ -633,7 +919,7 @@ void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 // when moving item directly into outbox create folder with that name if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id); + dest_folder = create_folder_for_item(inv_item, dest_folder); } LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; @@ -674,6 +960,1003 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold } ///---------------------------------------------------------------------------- +// Marketplace functions +// +// Handles Copy and Move to or within the Marketplace listings folder. +// Handles creation of stock folders, nesting of listings and version folders, +// permission checking and listings validation. +///---------------------------------------------------------------------------- + +S32 depth_nesting_in_marketplace(LLUUID cur_uuid) +{ + // Get the marketplace listings root, exit with -1 (i.e. not under the marketplace listings root) if none + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplace_listings_uuid.isNull()) + { + return -1; + } + // If not a descendent of the marketplace listings root, then the nesting depth is -1 by definition + if (!gInventory.isObjectDescendentOf(cur_uuid, marketplace_listings_uuid)) + { + return -1; + } + + // Iterate through the parents till we hit the marketplace listings root + // Note that the marketplace listings root itself will return 0 + S32 depth = 0; + LLInventoryObject* cur_object = gInventory.getObject(cur_uuid); + while (cur_uuid != marketplace_listings_uuid) + { + depth++; + cur_uuid = cur_object->getParentUUID(); + cur_object = gInventory.getCategory(cur_uuid); + } + return depth; +} + +// Returns the UUID of the marketplace listing this object is in +LLUUID nested_parent_id(LLUUID cur_uuid, S32 depth) +{ + if (depth < 1) + { + // For objects outside the marketplace listings root (or root itself), we return a NULL UUID + return LLUUID::null; + } + else if (depth == 1) + { + // Just under the root, we return the passed UUID itself if it's a folder, NULL otherwise (not a listing) + LLViewerInventoryCategory* cat = gInventory.getCategory(cur_uuid); + return (cat ? cur_uuid : LLUUID::null); + } + + // depth > 1 + LLInventoryObject* cur_object = gInventory.getObject(cur_uuid); + while (depth > 1) + { + depth--; + cur_uuid = cur_object->getParentUUID(); + cur_object = gInventory.getCategory(cur_uuid); + } + return cur_uuid; +} + +S32 compute_stock_count(LLUUID cat_uuid, bool force_count /* false */) +{ + // Handle the case of the folder being a stock folder immediately + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_uuid); + if (!cat) + { + // Not a category so no stock count to speak of + return COMPUTE_STOCK_INFINITE; + } + if (cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + if (cat->getVersion() == LLViewerInventoryCategory::VERSION_UNKNOWN) + { + // If the folder is not completely fetched, we do not want to return any confusing value that could lead to unlisting + // "COMPUTE_STOCK_NOT_EVALUATED" denotes that a stock folder has a count that cannot be evaluated at this time (folder not up to date) + return COMPUTE_STOCK_NOT_EVALUATED; + } + // Note: stock folders are *not* supposed to have nested subfolders so we stop recursion here but we count only items (subfolders will be ignored) + // Note: we *always* give a stock count for stock folders, it's useful even if the listing is unassociated + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_uuid,cat_array,item_array); + return item_array->size(); + } + + // When force_count is true, we do not do any verification of the marketplace status and simply compute + // the stock amount based on the descendent hierarchy. This is used specifically when creating a listing. + if (!force_count) + { + // Grab marketplace data for this folder + S32 depth = depth_nesting_in_marketplace(cat_uuid); + LLUUID listing_uuid = nested_parent_id(cat_uuid, depth); + if (!LLMarketplaceData::instance().isListed(listing_uuid)) + { + // If not listed, the notion of stock is meaningless so it won't be computed for any level + return COMPUTE_STOCK_INFINITE; + } + + LLUUID version_folder_uuid = LLMarketplaceData::instance().getVersionFolder(listing_uuid); + // Handle the case of the first 2 levels : listing and version folders + if (depth == 1) + { + if (version_folder_uuid.notNull()) + { + // If there is a version folder, the stock value for the listing is the version folder stock + return compute_stock_count(version_folder_uuid, true); + } + else + { + // If there's no version folder associated, the notion of stock count has no meaning + return COMPUTE_STOCK_INFINITE; + } + } + else if (depth == 2) + { + if (version_folder_uuid.notNull() && (version_folder_uuid != cat_uuid)) + { + // If there is a version folder but we're not it, our stock count is meaningless + return COMPUTE_STOCK_INFINITE; + } + } + } + + // In all other cases, the stock count is the min of stock folders count found in the descendents + // "COMPUTE_STOCK_NOT_EVALUATED" denotes that a stock folder in the hierarchy has a count that cannot be evaluated at this time (folder not up to date) + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_uuid,cat_array,item_array); + + // "COMPUTE_STOCK_INFINITE" denotes a folder that doesn't countain any stock folders in its descendents + S32 curr_count = COMPUTE_STOCK_INFINITE; + + // Note: marketplace listings have a maximum depth nesting of 4 + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + S32 count = compute_stock_count(category->getUUID(), true); + if ((curr_count == COMPUTE_STOCK_INFINITE) || ((count != COMPUTE_STOCK_INFINITE) && (count < curr_count))) + { + curr_count = count; + } + } + + return curr_count; +} + +// local helper +bool can_move_to_marketplace(LLInventoryItem* inv_item, std::string& tooltip_msg, bool resolve_links) +{ + // Collapse links directly to items/folders + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; + LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); + LLViewerInventoryCategory * linked_category = viewer_inv_item->getLinkedCategory(); + + // Linked items and folders cannot be put for sale + if (linked_category || linked_item) + { + tooltip_msg = LLTrans::getString("TooltipOutboxLinked"); + return false; + } + + // A category is always considered as passing... + if (linked_category != NULL) + { + return true; + } + + // Take the linked item if necessary + if (linked_item != NULL) + { + inv_item = linked_item; + } + + // Check that the agent has transfer permission on the item: this is required as a resident cannot + // put on sale items she cannot transfer. Proceed with move if we have permission. + bool allow_transfer = inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); + if (!allow_transfer) + { + tooltip_msg = LLTrans::getString("TooltipOutboxNoTransfer"); + return false; + } + + // Check worn/not worn status: worn items cannot be put on the marketplace + bool worn = get_is_item_worn(inv_item->getUUID()); + if (worn) + { + tooltip_msg = LLTrans::getString("TooltipOutboxWorn"); + return false; + } + + // Check library status: library items cannot be put on the marketplace + if (!gInventory.isObjectDescendentOf(inv_item->getUUID(), gInventory.getRootFolderID())) + { + tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); + return false; + } + + // Check type: for the moment, calling cards cannot be put on the marketplace + bool calling_card = (LLAssetType::AT_CALLINGCARD == inv_item->getType()); + if (calling_card) + { + tooltip_msg = LLTrans::getString("TooltipOutboxCallingCard"); + return false; + } + + return true; +} + +// local helper +// Returns the max tree length (in folder nodes) down from the argument folder +int get_folder_levels(LLInventoryCategory* inv_cat) +{ + LLInventoryModel::cat_array_t* cats; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(inv_cat->getUUID(), cats, items); + + int max_child_levels = 0; + + for (S32 i=0; i < cats->size(); ++i) + { + LLInventoryCategory* category = cats->at(i); + max_child_levels = llmax(max_child_levels, get_folder_levels(category)); + } + + return 1 + max_child_levels; +} + +// local helper +// Returns the distance (in folder nodes) between the ancestor and its descendant. Returns -1 if not related. +int get_folder_path_length(const LLUUID& ancestor_id, const LLUUID& descendant_id) +{ + int depth = 0; + + if (ancestor_id == descendant_id) return depth; + + const LLInventoryCategory* category = gInventory.getCategory(descendant_id); + + while (category) + { + LLUUID parent_id = category->getParentUUID(); + + if (parent_id.isNull()) break; + + depth++; + + if (parent_id == ancestor_id) return depth; + + category = gInventory.getCategory(parent_id); + } + + LL_WARNS("SLM") << "get_folder_path_length() couldn't trace a path from the descendant to the ancestor" << LL_ENDL; + return -1; +} + +// local helper +// Returns true if all items within the argument folder are fit for sale, false otherwise +bool has_correct_permissions_for_sale(LLInventoryCategory* cat, std::string& error_msg) +{ + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + LLInventoryModel::item_array_t item_array_copy = *item_array; + + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + if (!can_move_to_marketplace(item, error_msg, false)) + { + return false; + } + } + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + if (!has_correct_permissions_for_sale(category, error_msg)) + { + return false; + } + } + return true; +} + +// Returns true if inv_item can be dropped in dest_folder, a folder nested in marketplace listings (or merchant inventory) under the root_folder root +// If returns is false, tooltip_msg contains an error message to display to the user (localized and all). +// bundle_size is the amount of sibling items that are getting moved to the marketplace at the same time. +bool can_move_item_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryItem* inv_item, std::string& tooltip_msg, S32 bundle_size, bool from_paste) +{ + // Check stock folder type matches item type in marketplace listings or merchant outbox (even if of no use there for the moment) + LLViewerInventoryCategory* view_folder = dynamic_cast<LLViewerInventoryCategory*>(dest_folder); + bool move_in_stock = (view_folder && (view_folder->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)); + bool accept = (view_folder && view_folder->acceptItem(inv_item)); + if (!accept) + { + tooltip_msg = LLTrans::getString("TooltipOutboxMixedStock"); + } + + // Check that the item has the right type and permissions to be sold on the marketplace + if (accept) + { + accept = can_move_to_marketplace(inv_item, tooltip_msg, true); + } + + // Check that the total amount of items won't violate the max limit on the marketplace + if (accept) + { + // If the dest folder is a stock folder, we do not count the incoming items toward the total (stock items are seen as one) + int existing_item_count = (move_in_stock ? 0 : bundle_size); + + // If the dest folder is a stock folder, we do assume that the incoming items are also stock items (they should anyway) + int existing_stock_count = (move_in_stock ? bundle_size : 0); + + int existing_folder_count = 0; + + // Get the version folder: that's where the counts start from + const LLViewerInventoryCategory * version_folder = ((root_folder && (root_folder != dest_folder)) ? gInventory.getFirstDescendantOf(root_folder->getUUID(), dest_folder->getUUID()) : NULL); + + if (version_folder) + { + if (!from_paste && gInventory.isObjectDescendentOf(inv_item->getUUID(), version_folder->getUUID())) + { + // Clear those counts or they will be counted twice because we're already inside the version category + existing_item_count = 0; + } + + LLInventoryModel::cat_array_t existing_categories; + LLInventoryModel::item_array_t existing_items; + + gInventory.collectDescendents(version_folder->getUUID(), existing_categories, existing_items, FALSE); + + existing_item_count += count_copyable_items(existing_items) + count_stock_folders(existing_categories); + existing_stock_count += count_stock_items(existing_items); + existing_folder_count += existing_categories.size(); + + // If the incoming item is a nocopy (stock) item, we need to consider that it will create a stock folder + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && !move_in_stock) + { + // Note : we do not assume that all incoming items are nocopy of different kinds... + existing_folder_count += 1; + } + } + + if (existing_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects", args); + accept = false; + } + else if (existing_stock_count > gSavedSettings.getU32("InventoryOutboxMaxStockItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxStockItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyStockItems", args); + accept = false; + } + else if (existing_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders", args); + accept = false; + } + } + + return accept; +} + +// Returns true if inv_cat can be dropped in dest_folder, a folder nested in marketplace listings (or merchant inventory) under the root_folder root +// If returns is false, tooltip_msg contains an error message to display to the user (localized and all). +// bundle_size is the amount of sibling items that are getting moved to the marketplace at the same time. +bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryCategory* inv_cat, std::string& tooltip_msg, S32 bundle_size, bool check_items, bool from_paste) +{ + bool accept = true; + + // Compute the nested folders level we'll add into with that incoming folder + int incoming_folder_depth = get_folder_levels(inv_cat); + // Compute the nested folders level we're inserting ourselves in + // Note: add 1 when inserting under a listing folder as we need to take the root listing folder in the count + int insertion_point_folder_depth = (root_folder ? get_folder_path_length(root_folder->getUUID(), dest_folder->getUUID()) + 1 : 0); + + // Get the version folder: that's where the folders and items counts start from + const LLViewerInventoryCategory * version_folder = (insertion_point_folder_depth >= 2 ? gInventory.getFirstDescendantOf(root_folder->getUUID(), dest_folder->getUUID()) : NULL); + + // Compare the whole with the nested folders depth limit + // Note: substract 2 as we leave root and version folder out of the count threshold + if ((incoming_folder_depth + insertion_point_folder_depth - 2) > (S32)(gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"))) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels", args); + accept = false; + } + + if (accept) + { + LLInventoryModel::cat_array_t descendent_categories; + LLInventoryModel::item_array_t descendent_items; + gInventory.collectDescendents(inv_cat->getUUID(), descendent_categories, descendent_items, FALSE); + + int dragged_folder_count = descendent_categories.size() + bundle_size; // Note: We assume that we're moving a bunch of folders in. That might be wrong... + int dragged_item_count = count_copyable_items(descendent_items) + count_stock_folders(descendent_categories); + int dragged_stock_count = count_stock_items(descendent_items); + int existing_item_count = 0; + int existing_stock_count = 0; + int existing_folder_count = 0; + + if (version_folder) + { + if (!from_paste && gInventory.isObjectDescendentOf(inv_cat->getUUID(), version_folder->getUUID())) + { + // Clear those counts or they will be counted twice because we're already inside the version category + dragged_folder_count = 0; + dragged_item_count = 0; + dragged_stock_count = 0; + } + + // Tally the total number of categories and items inside the root folder + LLInventoryModel::cat_array_t existing_categories; + LLInventoryModel::item_array_t existing_items; + gInventory.collectDescendents(version_folder->getUUID(), existing_categories, existing_items, FALSE); + + existing_folder_count += existing_categories.size(); + existing_item_count += count_copyable_items(existing_items) + count_stock_folders(existing_categories); + existing_stock_count += count_stock_items(existing_items); + } + + const int total_folder_count = existing_folder_count + dragged_folder_count; + const int total_item_count = existing_item_count + dragged_item_count; + const int total_stock_count = existing_stock_count + dragged_stock_count; + + if (total_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders", args); + accept = false; + } + else if (total_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects", args); + accept = false; + } + else if (total_stock_count > gSavedSettings.getU32("InventoryOutboxMaxStockItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxStockItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyStockItems", args); + accept = false; + } + + // Now check that each item in the folder can be moved in the marketplace + if (accept && check_items) + { + for (S32 i=0; i < descendent_items.size(); ++i) + { + LLInventoryItem* item = descendent_items[i]; + if (!can_move_to_marketplace(item, tooltip_msg, false)) + { + accept = false; + break; + } + } + } + } + + return accept; +} + +bool move_item_to_marketplacelistings(LLInventoryItem* inv_item, LLUUID dest_folder, bool copy) +{ + // Get the marketplace listings depth of the destination folder, exit with error if not under marketplace + S32 depth = depth_nesting_in_marketplace(dest_folder); + if (depth < 0) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Merchant"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // We will collapse links into items/folders + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; + LLViewerInventoryCategory * linked_category = viewer_inv_item->getLinkedCategory(); + + if (linked_category != NULL) + { + // Move the linked folder directly + return move_folder_to_marketplacelistings(linked_category, dest_folder, copy); + } + else + { + // Grab the linked item if any + LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); + viewer_inv_item = (linked_item != NULL ? linked_item : viewer_inv_item); + + // If we want to copy but the item is no copy, fail silently (this is a common case that doesn't warrant notification) + if (copy && !viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return false; + } + + // Check that the agent has transfer permission on the item: this is required as a resident cannot + // put on sale items she cannot transfer. Proceed with move if we have permission. + std::string error_msg; + if (can_move_to_marketplace(inv_item, error_msg, true)) + { + // When moving an isolated item, we might need to create the folder structure to support it + if (depth == 0) + { + // We need a listing folder + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, viewer_inv_item->getName()); + depth++; + } + if (depth == 1) + { + // We need a version folder + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, viewer_inv_item->getName()); + depth++; + } + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + if (!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && + (dest_cat->getPreferredType() != LLFolderType::FT_MARKETPLACE_STOCK)) + { + // We need to create a stock folder to move a no copy item + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_MARKETPLACE_STOCK, viewer_inv_item->getName()); + dest_cat = gInventory.getCategory(dest_folder); + depth++; + } + + // Verify we can have this item in that destination category + if (!dest_cat->acceptItem(viewer_inv_item)) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Accepted"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // Get the parent folder of the moved item : we may have to update it + LLUUID src_folder = viewer_inv_item->getParentUUID(); + + if (copy) + { + // Copy the item + LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(update_folder_cb, dest_folder)); + copy_inventory_item( + gAgent.getID(), + viewer_inv_item->getPermissions().getOwner(), + viewer_inv_item->getUUID(), + dest_folder, + std::string(), + cb); + } + else + { + // Reparent the item + gInventory.changeItemParent(viewer_inv_item, dest_folder, true); + } + } + else + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + } + + open_marketplace_listings(); + return true; +} + +bool move_folder_to_marketplacelistings(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, bool copy, bool move_no_copy_items) +{ + // Check that we have adequate permission on all items being moved. Proceed if we do. + std::string error_msg; + if (has_correct_permissions_for_sale(inv_cat, error_msg)) + { + // Get the destination folder + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + + // Check it's not a stock folder + if (dest_cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Accepted"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // Get the parent folder of the moved item : we may have to update it + LLUUID src_folder = inv_cat->getParentUUID(); + + LLViewerInventoryCategory * viewer_inv_cat = (LLViewerInventoryCategory *) inv_cat; + if (copy) + { + // Copy the folder + copy_inventory_category(&gInventory, viewer_inv_cat, dest_folder, LLUUID::null, move_no_copy_items); + } + else + { + // Reparent the folder + gInventory.changeCategoryParent(viewer_inv_cat, dest_folder, false); + // Check the destination folder recursively for no copy items and promote the including folders if any + validate_marketplacelistings(dest_cat); + } + + // Update the modified folders + update_marketplace_category(src_folder); + update_marketplace_category(dest_folder); + gInventory.notifyObservers(); + } + else + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + open_marketplace_listings(); + return true; +} + +bool sort_alpha(const LLViewerInventoryCategory* cat1, const LLViewerInventoryCategory* cat2) +{ + return cat1->getName().compare(cat2->getName()) < 0; +} + +void dump_trace(std::string& message, S32 depth, LLError::ELevel log_level) +{ + LL_INFOS() << "validate_marketplacelistings : error = "<< log_level << ", depth = " << depth << ", message = " << message << LL_ENDL; +} + +// Make all relevant business logic checks on the marketplace listings starting with the folder as argument. +// This function does no deletion of listings but a mere audit and raises issues to the user (through the +// optional callback cb). It also returns a boolean, true if things validate, false if issues are raised. +// The only inventory changes that are done is to move and sort folders containing no-copy items to stock folders. +bool validate_marketplacelistings(LLInventoryCategory* cat, validation_callback_t cb, bool fix_hierarchy, S32 depth) +{ +#if 0 + // Used only for debug + if (!cb) + { + cb = boost::bind(&dump_trace, _1, _2, _3); + } +#endif + // Folder is valid unless issue is raised + bool result = true; + + // Get the type and the depth of the folder + LLViewerInventoryCategory * viewer_cat = (LLViewerInventoryCategory *) (cat); + const LLFolderType::EType folder_type = cat->getPreferredType(); + if (depth < 0) + { + // If the depth argument was not provided, evaluate the depth directly + depth = depth_nesting_in_marketplace(cat->getUUID()); + } + if (depth < 0) + { + // If the folder is not under the marketplace listings root, we run validation as if it was a listing folder and prevent any hierarchy fix + // This allows the function to be used to pre-validate a folder anywhere in the inventory + depth = 1; + fix_hierarchy = false; + } + + // Set the indentation for print output (typically, audit button in marketplace folder floater) + std::string indent; + for (int i = 1; i < depth; i++) + { + indent += " "; + } + + // Check out that version folders are marketplace ready + if (depth == 2) + { + std::string message; + // Note: if we fix the hierarchy, we want to check the items individually, hence the last argument here + if (!can_move_folder_to_marketplace(cat, cat, cat, message, 0, fix_hierarchy)) + { + result = false; + if (cb) + { + message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error") + " " + message; + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Check out that stock folders are at the right level + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth <= 2)) + { + if (fix_hierarchy) + { + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Warning") + " " + LLTrans::getString("Marketplace Validation Warning Stock"); + cb(message,depth,LLError::LEVEL_WARN); + } + // Nest the stock folder one level deeper in a normal folder and restart from there + LLUUID parent_uuid = cat->getParentUUID(); + LLUUID folder_uuid = gInventory.createNewCategory(parent_uuid, LLFolderType::FT_NONE, cat->getName()); + LLInventoryCategory* new_cat = gInventory.getCategory(folder_uuid); + gInventory.changeCategoryParent(viewer_cat, folder_uuid, false); + result &= validate_marketplacelistings(new_cat, cb, fix_hierarchy, depth + 1); + return result; + } + else + { + result = false; + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error") + " " + LLTrans::getString("Marketplace Validation Warning Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Item sorting and validation : sorting and moving the various stock items is complicated as the set of constraints is high + // We need to: + // * separate non stock items, stock items per types in different folders + // * have stock items nested at depth 2 at least + // * never ever move the non-stock items + + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + // We use a composite (type,permission) key on that map to store UUIDs of items of same (type,permissions) + std::map<U32, std::vector<LLUUID> > items_vector; + + // Parse the items and create vectors of item UUIDs sorting copyable items and stock items of various types + bool has_bad_items = false; + LLInventoryModel::item_array_t item_array_copy = *item_array; + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + + // Test but skip items that shouldn't be there to start with, raise an error message for those + std::string error_msg; + if (!can_move_to_marketplace(item, error_msg, false)) + { + has_bad_items = true; + if (cb && fix_hierarchy) + { + std::string message = indent + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error") + " " + error_msg; + cb(message,depth,LLError::LEVEL_ERROR); + } + continue; + } + // Update the appropriate vector item for that type + LLInventoryType::EType type = LLInventoryType::IT_COUNT; // Default value for non stock items + U32 perms = 0; + if (!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + // Get the item type for stock items + type = viewer_inv_item->getInventoryType(); + perms = viewer_inv_item->getPermissions().getMaskNextOwner(); + } + U32 key = (((U32)(type) & 0xFF) << 24) | (perms & 0xFFFFFF); + items_vector[key].push_back(viewer_inv_item->getUUID()); + } + + // How many types of items? Which type is it if only one? + S32 count = items_vector.size(); + U32 default_key = (U32)(LLInventoryType::IT_COUNT) << 24; // This is the key for any normal copyable item + U32 unique_key = (count == 1 ? items_vector.begin()->first : default_key); // The key in the case of one item type only + + // If we have no items in there (only folders or empty), analyze a bit further + if ((count == 0) && !has_bad_items) + { + if (cat_array->size() == 0) + { + // So we have no item and no folder. That's at least a warning. + if (depth == 2) + { + // If this is an empty version folder, warn only (listing won't be delivered by AIS, but only AIS should unlist) + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Empty Version"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2)) + { + // If this is a legit but empty stock folder, warn only (listing must stay searchable when out of stock) + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Empty Stock"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else if (cb) + { + // We warn if there's nothing in a regular folder (may be it's an under construction listing) + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Warning Empty"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else + { + // Done with that folder : Print out the folder name unless we already found an error here + if (cb && result && (depth >= 1)) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + } + // If we have a single type of items of the right type in the right place, we're done + else if ((count == 1) && !has_bad_items && (((unique_key == default_key) && (depth > 1)) || ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2) && (cat_array->size() == 0)))) + { + // Done with that folder : Print out the folder name unless we already found an error here + if (cb && result && (depth >= 1)) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + else + { + if (fix_hierarchy && !has_bad_items) + { + // Alert the user when an existing stock folder has to be split + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && ((count >= 2) || (cat_array->size() > 0))) + { + LLNotificationsUtil::add("AlertMerchantStockFolderSplit"); + } + // If we have more than 1 type of items or we are at the listing level or we have stock/no stock type mismatch, wrap the items in subfolders + if ((count > 1) || (depth == 1) || + ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (unique_key == default_key)) || + ((folder_type != LLFolderType::FT_MARKETPLACE_STOCK) && (unique_key != default_key))) + { + // Create one folder per vector at the right depth and of the right type + std::map<U32, std::vector<LLUUID> >::iterator items_vector_it = items_vector.begin(); + while (items_vector_it != items_vector.end()) + { + // Create a new folder + LLUUID parent_uuid = (depth > 2 ? viewer_cat->getParentUUID() : viewer_cat->getUUID()); + LLViewerInventoryItem* viewer_inv_item = gInventory.getItem(items_vector_it->second.back()); + std::string folder_name = (depth >= 1 ? viewer_cat->getName() : viewer_inv_item->getName()); + LLFolderType::EType new_folder_type = (items_vector_it->first == default_key ? LLFolderType::FT_NONE : LLFolderType::FT_MARKETPLACE_STOCK); + if (cb) + { + std::string message = ""; + if (new_folder_type == LLFolderType::FT_MARKETPLACE_STOCK) + { + message = indent + folder_name + LLTrans::getString("Marketplace Validation Warning Create Stock"); + } + else + { + message = indent + folder_name + LLTrans::getString("Marketplace Validation Warning Create Version"); + } + cb(message,depth,LLError::LEVEL_WARN); + } + LLUUID folder_uuid = gInventory.createNewCategory(parent_uuid, new_folder_type, folder_name); + + // Move each item to the new folder + while (!items_vector_it->second.empty()) + { + LLViewerInventoryItem* viewer_inv_item = gInventory.getItem(items_vector_it->second.back()); + if (cb) + { + std::string message = indent + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Warning Move"); + cb(message,depth,LLError::LEVEL_WARN); + } + gInventory.changeItemParent(viewer_inv_item, folder_uuid, true); + items_vector_it->second.pop_back(); + } + + // Next type + update_marketplace_category(parent_uuid); + update_marketplace_category(folder_uuid); + gInventory.notifyObservers(); + items_vector_it++; + } + } + // Stock folder should have no sub folder so reparent those up + if (folder_type == LLFolderType::FT_MARKETPLACE_STOCK) + { + LLUUID parent_uuid = cat->getParentUUID(); + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLViewerInventoryCategory * viewer_cat = (LLViewerInventoryCategory *) (*iter); + gInventory.changeCategoryParent(viewer_cat, parent_uuid, false); + result &= validate_marketplacelistings(viewer_cat, cb, fix_hierarchy, depth); + } + } + } + else if (cb) + { + // We are not fixing the hierarchy but reporting problems, report everything we can find + // Print the folder name + if (result && (depth >= 1)) + { + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (count >= 2)) + { + // Report if a stock folder contains a mix of items + result = false; + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Mixed Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (cat_array->size() != 0)) + { + // Report if a stock folder contains subfolders + result = false; + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Subfolder In Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else + { + // Simply print the folder name + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + // Scan each item and report if there's a problem + LLInventoryModel::item_array_t item_array_copy = *item_array; + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + std::string error_msg; + if (!can_move_to_marketplace(item, error_msg, false)) + { + // Report items that shouldn't be there to start with + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error") + " " + error_msg; + cb(message,depth,LLError::LEVEL_ERROR); + } + else if ((!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) && (folder_type != LLFolderType::FT_MARKETPLACE_STOCK)) + { + // Report stock items that are misplaced + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error Stock Item"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else if (depth == 1) + { + // Report items not wrapped in version folder + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Warning Unwrapped Item"); + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Clean up + if (viewer_cat->getDescendentCount() == 0) + { + // Remove the current folder if it ends up empty + if (cb) + { + std::string message = indent + viewer_cat->getName() + LLTrans::getString("Marketplace Validation Warning Delete"); + cb(message,depth,LLError::LEVEL_WARN); + } + gInventory.removeCategory(cat->getUUID()); + gInventory.notifyObservers(); + return result && !has_bad_items; + } + } + + // Recursion : Perform the same validation on each nested folder + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + // Sort the folders in alphabetical order first + std::sort(cat_array_copy.begin(), cat_array_copy.end(), sort_alpha); + + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + result &= validate_marketplacelistings(category, cb, fix_hierarchy, depth + 1); + } + + update_marketplace_category(cat->getUUID()); + gInventory.notifyObservers(); + return result && !has_bad_items; +} + +///---------------------------------------------------------------------------- /// LLInventoryCollectFunctor implementations ///---------------------------------------------------------------------------- @@ -1060,18 +2343,138 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder) } } -void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action) +// Callback for doToSelected if DAMA required... +void LLInventoryAction::callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + doToSelected(model, root, action, FALSE); + } +} + +void LLInventoryAction::callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action) { + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES, Move no copy item(s) + { + doToSelected(model, root, "copy_or_move_to_marketplace_listings", FALSE); + } + else if (option == 1) // NO, Don't move no copy item(s) (leave them behind) + { + doToSelected(model, root, "copy_to_marketplace_listings", FALSE); + } +} + +// Succeeds iff all selected items are bridges to objects, in which +// case returns their corresponding uuids. +bool get_selection_object_uuids(LLFolderView *root, uuid_vec_t& ids) +{ + uuid_vec_t results; + S32 non_object = 0; + LLFolderView::selected_items_t selectedItems = root->getSelectedItems(); + for(LLFolderView::selected_items_t::iterator it = selectedItems.begin(); it != selectedItems.end(); ++it) + { + LLObjectBridge *view_model = dynamic_cast<LLObjectBridge *>((*it)->getViewModelItem()); + + if(view_model && view_model->getUUID().notNull()) + { + results.push_back(view_model->getUUID()); + } + else + { + non_object++; + } + } + if (non_object == 0) + { + ids = results; + return true; + } + return false; +} + + +void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action, BOOL user_confirm) +{ + std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); + + // Prompt the user and check for authorization for some marketplace active listing edits + if (user_confirm && (("delete" == action) || ("cut" == action) || ("rename" == action) || ("properties" == action) || ("task_properties" == action) || ("open" == action))) + { + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = NULL; + for (; set_iter != selected_items.end(); ++set_iter) + { + viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (viewModel && (depth_nesting_in_marketplace(viewModel->getUUID()) >= 0)) + { + break; + } + } + if (set_iter != selected_items.end()) + { + if ("open" == action) + { + if (get_can_item_be_worn(viewModel->getUUID())) + { + // Wearing an object from any listing, active or not, is verbotten + LLNotificationsUtil::add("AlertMerchantListingCannotWear"); + return; + } + // Note: we do not prompt for change when opening items (e.g. textures or note cards) on the marketplace... + } + else if (LLMarketplaceData::instance().isInActiveFolder(viewModel->getUUID()) || + LLMarketplaceData::instance().isListedAndActive(viewModel->getUUID())) + { + // If item is in active listing, further confirmation is required + if ((("cut" == action) || ("delete" == action)) && (LLMarketplaceData::instance().isListed(viewModel->getUUID()) || LLMarketplaceData::instance().isVersionFolder(viewModel->getUUID()))) + { + // Cut or delete of the active version folder or listing folder itself will unlist the listing so ask that question specifically + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + // Any other case will simply modify but not unlist a listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + // Cutting or deleting a whole listing needs confirmation as SLM will be archived and inaccessible to the user + else if (LLMarketplaceData::instance().isListed(viewModel->getUUID()) && (("cut" == action) || ("delete" == action))) + { + LLNotificationsUtil::add("ConfirmListingCutOrDelete", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + } + } + // Copying to the marketplace needs confirmation if nocopy items are involved + if (user_confirm && ("copy_to_marketplace_listings" == action)) + { + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (contains_nocopy_items(viewModel->getUUID())) + { + LLNotificationsUtil::add("ConfirmCopyToMarketplace", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_copySelected, _1, _2, model, root, action)); + return; + } + } + + // Keep track of the marketplace folders that will need update of their status/name after the operation is performed + buildMarketplaceFolders(root); + if ("rename" == action) { root->startRenamingSelectedItem(); + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); return; } + if ("delete" == action) { LLSD args; args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); - LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root)); + LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle())); + // Note: marketplace listings will be updated in the callback if delete confirmed return; } if (("copy" == action) || ("cut" == action)) @@ -1089,12 +2492,12 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root LLViewerInventoryCategory *cat = model->getCategory(inventory_item->getUUID()); if (!cat) return; cat->changeType(new_folder_type); + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); return; } - std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); - LLMultiPreview* multi_previewp = NULL; LLMultiProperties* multi_propertiesp = NULL; @@ -1114,17 +2517,38 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root LLFloater::setFloaterHost(multi_propertiesp); } - std::set<LLFolderViewItem*>::iterator set_iter; - - for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) - { - LLFolderViewItem* folder_item = *set_iter; - if(!folder_item) continue; - LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem(); - if(!bridge) continue; - bridge->performAction(model, action); - } + std::set<LLUUID> selected_uuid_set = LLAvatarActions::getInventorySelectedUUIDs(); + uuid_vec_t ids; + std::copy(selected_uuid_set.begin(), selected_uuid_set.end(), std::back_inserter(ids)); + // Check for actions that get handled in bulk + if (action == "wear") + { + wear_multiple(ids, true); + } + else if (action == "wear_add") + { + wear_multiple(ids, false); + } + else if (isRemoveAction(action)) + { + LLAppearanceMgr::instance().removeItemsFromAvatar(ids); + } + else + { + std::set<LLFolderViewItem*>::iterator set_iter; + for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) + { + LLFolderViewItem* folder_item = *set_iter; + if(!folder_item) continue; + LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem(); + if(!bridge) continue; + bridge->performAction(model, action); + } + } + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); + LLFloater::setFloaterHost(NULL); if (multi_previewp) { @@ -1159,14 +2583,71 @@ void LLInventoryAction::removeItemFromDND(LLFolderView* root) } } -void LLInventoryAction::onItemsRemovalConfirmation( const LLSD& notification, const LLSD& response, LLFolderView* root ) +void LLInventoryAction::onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle<LLFolderView> root) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (option == 0 && !root.isDead() && !root.get()->isDead()) { - //Need to remove item from DND before item is removed from root folder view - //because once removed from root folder view the item is no longer a selected item - removeItemFromDND(root); - root->removeSelectedItems(); + LLFolderView* folder_root = root.get(); + //Need to remove item from DND before item is removed from root folder view + //because once removed from root folder view the item is no longer a selected item + removeItemFromDND(folder_root); + folder_root->removeSelectedItems(); + + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); } } + +void LLInventoryAction::buildMarketplaceFolders(LLFolderView* root) +{ + // Make a list of all marketplace folders containing the elements in the selected list + // as well as the elements themselves. + // Once those elements are updated (cut, delete in particular but potentially any action), their + // containing folder will need to be updated as well as their initially containing folder. For + // instance, moving a stock folder from a listed folder to another will require an update of the + // target listing *and* the original listing. So we need to keep track of both. + // Note: do not however put the marketplace listings root itself in this list or the whole marketplace data will be rebuilt. + sMarketplaceFolders.clear(); + const LLUUID &marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.isNull()) + { + return; + } + + std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = NULL; + for (; set_iter != selected_items.end(); ++set_iter) + { + viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (!viewModel || !viewModel->getInventoryObject()) continue; + if (gInventory.isObjectDescendentOf(viewModel->getInventoryObject()->getParentUUID(), marketplacelistings_id)) + { + const LLUUID &parent_id = viewModel->getInventoryObject()->getParentUUID(); + if (parent_id != marketplacelistings_id) + { + sMarketplaceFolders.push_back(parent_id); + } + const LLUUID &curr_id = viewModel->getInventoryObject()->getUUID(); + if (curr_id != marketplacelistings_id) + { + sMarketplaceFolders.push_back(curr_id); + } + } + } + // Suppress dupes in the list so we won't update listings twice + sMarketplaceFolders.sort(); + sMarketplaceFolders.unique(); +} + +void LLInventoryAction::updateMarketplaceFolders() +{ + while (!sMarketplaceFolders.empty()) + { + update_marketplace_category(sMarketplaceFolders.back()); + sMarketplaceFolders.pop_back(); + } +} + + diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 6b3861aa79..b93bf9a163 100755..100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -30,8 +30,13 @@ #include "llinventorymodel.h" #include "llinventory.h" +#include "llhandle.h" #include "llwearabletype.h" +// compute_stock_count() return error code +const S32 COMPUTE_STOCK_INFINITE = -1; +const S32 COMPUTE_STOCK_NOT_EVALUATED = -2; + /******************************************************************************** ** ** ** MISCELLANEOUS GLOBAL FUNCTIONS @@ -58,18 +63,33 @@ void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id); void show_item_original(const LLUUID& item_uuid); void reset_inventory_filter(); +// Nudge the listing categories in the inventory to signal that their marketplace status changed +void update_marketplace_category(const LLUUID& cat_id, bool perform_consistency_enforcement = true); +// Nudge all listing categories to signal that their marketplace status changed +void update_all_marketplace_count(); + void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name); -void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null); +void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null, bool move_no_copy_items = false); // Generates a string containing the path to the item specified by item_id. void append_path(const LLUUID& id, std::string& path); void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder, S32 operation_id); void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 operation_id); - void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder, S32 operation_id); +typedef boost::function<void(std::string& validation_message, S32 depth, LLError::ELevel log_level)> validation_callback_t; + +bool can_move_item_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryItem* inv_item, std::string& tooltip_msg, S32 bundle_size = 1, bool from_paste = false); +bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryCategory* inv_cat, std::string& tooltip_msg, S32 bundle_size = 1, bool check_items = true, bool from_paste = false); +bool move_item_to_marketplacelistings(LLInventoryItem* inv_item, LLUUID dest_folder, bool copy = false); +bool move_folder_to_marketplacelistings(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, bool copy = false, bool move_no_copy_items = false); +bool validate_marketplacelistings(LLInventoryCategory* inv_cat, validation_callback_t cb = NULL, bool fix_hierarchy = true, S32 depth = -1); +S32 depth_nesting_in_marketplace(LLUUID cur_uuid); +LLUUID nested_parent_id(LLUUID cur_uuid, S32 depth); +S32 compute_stock_count(LLUUID cat_uuid, bool force_count = false); + /** Miscellaneous global functions ** ** *******************************************************************************/ @@ -425,7 +445,8 @@ public: *******************************************************************************/ class LLFolderViewItem; class LLFolderViewFolder; - +class LLInventoryModel; +class LLFolderView; class LLInventoryState { @@ -437,10 +458,16 @@ public: struct LLInventoryAction { - static void doToSelected(class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action, BOOL user_confirm = TRUE); + static void callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle<LLFolderView> root); + static void removeItemFromDND(LLFolderView* root); - static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLFolderView* root); - static void removeItemFromDND(LLFolderView* root); +private: + static void buildMarketplaceFolders(LLFolderView* root); + static void updateMarketplaceFolders(); + static std::list<LLUUID> sMarketplaceFolders; // Marketplace folders that will need update once the action is completed }; diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp index b7c4ec6f8b..013a5a7629 100755..100644 --- a/indra/newview/llinventoryicon.cpp +++ b/indra/newview/llinventoryicon.cpp @@ -183,6 +183,6 @@ const std::string& LLInventoryIcon::getIconName(LLInventoryType::EIconName idx) LLInventoryType::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag) { - const LLWearableType::EType wearable_type = LLWearableType::EType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & misc_flag); + const LLWearableType::EType wearable_type = LLWearableType::inventoryFlagsToWearableType(misc_flag); return LLWearableType::getIconName(wearable_type); } diff --git a/indra/newview/llinventoryicon.h b/indra/newview/llinventoryicon.h index bc09e32087..bc09e32087 100755..100644 --- a/indra/newview/llinventoryicon.h +++ b/indra/newview/llinventoryicon.h diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index 36e1cc97d1..36e1cc97d1 100755..100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index 1aa230df99..1aa230df99 100755..100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp index 0601796436..0601796436 100755..100644 --- a/indra/newview/llinventorylistitem.cpp +++ b/indra/newview/llinventorylistitem.cpp diff --git a/indra/newview/llinventorylistitem.h b/indra/newview/llinventorylistitem.h index b1ef6c74ee..b1ef6c74ee 100755..100644 --- a/indra/newview/llinventorylistitem.h +++ b/indra/newview/llinventorylistitem.h diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index f92332dea5..0bad4702e0 100755..100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -41,6 +41,7 @@ #include "llinventoryobserver.h" #include "llinventorypanel.h" #include "llnotificationsutil.h" +#include "llmarketplacefunctions.h" #include "llwindow.h" #include "llviewercontrol.h" #include "llpreview.h" @@ -1023,7 +1024,7 @@ LLInventoryModel::item_array_t* LLInventoryModel::getUnlockedItemArray(const LLU // an existing item with the matching id, or it will add the category. void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 mask) { - if(cat->getUUID().isNull()) + if(!cat || cat->getUUID().isNull()) { return; } @@ -1037,7 +1038,8 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 LLPointer<LLViewerInventoryCategory> old_cat = getCategory(cat->getUUID()); if(old_cat) { - // We already have an old category, modify it's values + // We already have an old category, modify its values + U32 mask = LLInventoryObserver::NONE; LLUUID old_parent_id = old_cat->getParentUUID(); LLUUID new_parent_id = cat->getParentUUID(); if(old_parent_id != new_parent_id) @@ -1061,7 +1063,13 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 { mask |= LLInventoryObserver::LABEL; } - old_cat->copyViewerCategory(cat); + // Under marketplace, category labels are quite complex and need extra upate + const LLUUID marketplace_id = findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplace_id.notNull() && isObjectDescendentOf(cat->getUUID(), marketplace_id)) + { + mask |= LLInventoryObserver::LABEL; + } + old_cat->copyViewerCategory(cat); addChangedMask(mask, cat->getUUID()); } else @@ -1411,6 +1419,11 @@ void LLInventoryModel::deleteObject(const LLUUID& id, bool fix_broken_links, boo LLPointer<LLViewerInventoryCategory> cat = (LLViewerInventoryCategory*)((LLInventoryObject*)obj); vector_replace_with_last(*cat_list, cat); } + + // Note : We need to tell the inventory observers that those things are going to be deleted *before* the tree is cleared or they won't know what to delete (in views and view models) + addChangedMask(LLInventoryObserver::REMOVE, id); + gInventory.notifyObservers(); + item_list = getUnlockedItemArray(id); if(item_list) { @@ -1558,10 +1571,11 @@ void LLInventoryModel::addChangedMask(U32 mask, const LLUUID& referent) } } - mModifyMask |= mask; - if (referent.notNull()) + mModifyMask |= mask; + if (referent.notNull() && (mChangedItemIDs.find(referent) == mChangedItemIDs.end())) { mChangedItemIDs.insert(referent); + update_marketplace_category(referent, false); if (mask & LLInventoryObserver::ADD) { @@ -1981,17 +1995,22 @@ bool LLInventoryModel::loadSkeleton( // we can safely ignore anything loaded from file, but // not sent down in the skeleton. Must have been removed from inventory. - if(cit == not_cached) + if (cit == not_cached) { continue; } - if(cat->getVersion() != tcat->getVersion()) + else if (cat->getVersion() != tcat->getVersion()) { // if the cached version does not match the server version, // throw away the version we have so we can fetch the // correct contents the next time the viewer opens the folder. tcat->setVersion(NO_VERSION); } + else if (tcat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // Do not trust stock folders being updated + tcat->setVersion(NO_VERSION); + } else { cached_ids.insert(tcat->getUUID()); @@ -3046,7 +3065,18 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**) LL_DEBUGS("Inventory") << "unpacked folder '" << tfolder->getName() << "' (" << tfolder->getUUID() << ") in " << tfolder->getParentUUID() << LL_ENDL; - if(tfolder->getUUID().notNull()) + + // If the folder is a listing or a version folder, all we need to do is update the SLM data + int depth_folder = depth_nesting_in_marketplace(tfolder->getUUID()); + if ((depth_folder == 1) || (depth_folder == 2)) + { + // Trigger an SLM listing update + LLUUID listing_uuid = (depth_folder == 1 ? tfolder->getUUID() : tfolder->getParentUUID()); + S32 listing_id = LLMarketplaceData::instance().getListingID(listing_uuid); + LLMarketplaceData::instance().getListing(listing_id); + // In that case, there is no item to update so no callback -> we skip the rest of the update + } + else if(tfolder->getUUID().notNull()) { folders.push_back(tfolder); LLViewerInventoryCategory* folderp = gInventory.getCategory(tfolder->getUUID()); diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index ac336e347c..ac336e347c 100755..100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index 40edb13a80..40edb13a80 100755..100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h index 19fbfc2ed3..19fbfc2ed3 100755..100644 --- a/indra/newview/llinventorymodelbackgroundfetch.h +++ b/indra/newview/llinventorymodelbackgroundfetch.h diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index d81401b59b..d81401b59b 100755..100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index 8cf6a6bdab..8cf6a6bdab 100755..100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 3546317471..5194cba891 100755..100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -146,7 +146,8 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) : mShowEmptyMessage(p.show_empty_message), mViewsInitialized(false), mInvFVBridgeBuilder(NULL), - mInventoryViewModel(p.name) + mInventoryViewModel(p.name), + mGroupedItemBridge(new LLFolderViewGroupedItemBridge) { mInvFVBridgeBuilder = &INVENTORY_BRIDGE_BUILDER; @@ -186,11 +187,13 @@ LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id ) NULL, root_id); p.view_model = &mInventoryViewModel; + p.grouped_item_model = mGroupedItemBridge; p.use_label_suffix = mParams.use_label_suffix; p.allow_multiselect = mAllowMultiSelect; p.show_empty_message = mShowEmptyMessage; p.show_item_link_overlays = mShowItemLinkOverlays; p.root = NULL; + p.allow_drop = mParams.allow_drop_on_root; p.options_menu = "menu_inventory.xml"; return LLUICtrlFactory::create<LLFolderView>(p); @@ -290,7 +293,12 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params) getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX)); getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX)); } - + // hide marketplace listing box, unless we are a marketplace panel + if (!gSavedSettings.getBOOL("InventoryOutboxMakeVisible") && !mParams.use_marketplace_folders) + { + getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_MARKETPLACE_LISTINGS)); + } + // set the filter for the empty folder if the debug setting is on if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders")) { @@ -599,13 +607,13 @@ void LLInventoryPanel::modelChanged(U32 mask) LLUUID LLInventoryPanel::getRootFolderID() { + LLUUID root_id; if (mFolderRoot.get() && mFolderRoot.get()->getViewModelItem()) { - return static_cast<LLFolderViewModelItemInventory*>(mFolderRoot.get()->getViewModelItem())->getUUID(); + root_id = static_cast<LLFolderViewModelItemInventory*>(mFolderRoot.get()->getViewModelItem())->getUUID(); } else { - LLUUID root_id; if (mParams.start_folder.id.isChosen()) { root_id = mParams.start_folder.id; @@ -633,8 +641,8 @@ LLUUID LLInventoryPanel::getRootFolderID() } } } - return root_id; } + return root_id; } // static @@ -756,7 +764,7 @@ void LLInventoryPanel::initializeViews() } -LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge) +LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop) { LLFolderViewFolder::Params params(mParams.folder); @@ -764,6 +772,7 @@ LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * br params.root = mFolderRoot.get(); params.listener = bridge; params.tool_tip = params.name; + params.allow_drop = allow_drop; params.font_color = (bridge->isLibraryItem() ? sLibraryColor : (bridge->isLink() ? sLinkColor : sDefaultColor)); params.font_highlight_color = (bridge->isLibraryItem() ? sLibraryColor : (bridge->isLink() ? sLinkColor : sDefaultHighlightColor)); @@ -792,37 +801,56 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) { LLInventoryObject const* objectp = gInventory.getObject(id); - if (!objectp) return NULL; + if (!objectp) + { + return NULL; + } LLFolderViewItem* folder_view_item = getItemByID(id); - const LLUUID &parent_id = objectp->getParentUUID(); + const LLUUID &parent_id = objectp->getParentUUID(); LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)getItemByID(parent_id); + // Force the creation of an extra root level folder item if required by the inventory panel (default is "false") + bool allow_drop = true; + bool create_root = false; + if (mParams.show_root_folder) + { + LLUUID root_id = getRootFolderID(); + if (root_id == id) + { + // We insert an extra level that's seen by the UI but has no influence on the model + parent_folder = dynamic_cast<LLFolderViewFolder*>(folder_view_item); + folder_view_item = NULL; + allow_drop = mParams.allow_drop_on_root; + create_root = true; + } + } + if (!folder_view_item && parent_folder) { if (objectp->getType() <= LLAssetType::AT_NONE || objectp->getType() >= LLAssetType::AT_COUNT) { LL_WARNS() << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " - << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() - << LL_ENDL; + << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() + << LL_ENDL; return NULL; } if ((objectp->getType() == LLAssetType::AT_CATEGORY) && (objectp->getActualType() != LLAssetType::AT_LINK_FOLDER)) { - LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(objectp->getType(), - objectp->getType(), + LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(LLAssetType::AT_CATEGORY, + (mParams.use_marketplace_folders ? LLAssetType::AT_MARKETPLACE_FOLDER : LLAssetType::AT_CATEGORY), LLInventoryType::IT_CATEGORY, this, - &mInventoryViewModel, + &mInventoryViewModel, mFolderRoot.get(), objectp->getUUID()); if (new_listener) { - folder_view_item = createFolderViewFolder(new_listener); + folder_view_item = createFolderViewFolder(new_listener,allow_drop); } } else @@ -845,11 +873,16 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) } if (folder_view_item) - { + { llassert(parent_folder != NULL); folder_view_item->addToFolder(parent_folder); addItemID(id, folder_view_item); - } + // In the case of the root folder been shown, open that folder by default once the widget is created + if (create_root) + { + folder_view_item->setOpen(TRUE); + } + } } // If this is a folder, add the children of the folder and recursively add any @@ -958,7 +991,7 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, // If folder view is empty the (x, y) point won't be in its rect // so the handler must be called explicitly. // but only if was not handled before. See EXT-6746. - if (!handled && !mFolderRoot.get()->hasVisibleChildren()) + if (!handled && mParams.allow_drop_on_root && !mFolderRoot.get()->hasVisibleChildren()) { handled = mFolderRoot.get()->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); } @@ -1480,6 +1513,8 @@ public: LLInventoryPanel::initFromParams(p); // turn on inbox for recent items getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX)); + // turn off marketplace for recent items + getFilter().setFilterNoMarketplaceFolder(); } protected: @@ -1523,5 +1558,8 @@ namespace LLInitParam declare(LLFolderType::lookup(LLFolderType::FT_INBOX) , LLFolderType::FT_INBOX); declare(LLFolderType::lookup(LLFolderType::FT_OUTBOX) , LLFolderType::FT_OUTBOX); declare(LLFolderType::lookup(LLFolderType::FT_BASIC_ROOT) , LLFolderType::FT_BASIC_ROOT); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_LISTINGS) , LLFolderType::FT_MARKETPLACE_LISTINGS); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_STOCK), LLFolderType::FT_MARKETPLACE_STOCK); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_VERSION), LLFolderType::FT_MARKETPLACE_VERSION); } } diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index a490dfce5d..b69edd8b93 100755..100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -43,6 +43,7 @@ class LLInvFVBridge; class LLInventoryFolderViewModelBuilder; class LLInvPanelComplObserver; class LLFolderViewModelInventory; +class LLFolderViewGroupedItemBridge; namespace LLInitParam { @@ -96,6 +97,9 @@ public: Optional<StartFolder> start_folder; Optional<bool> use_label_suffix; Optional<bool> show_empty_message; + Optional<bool> show_root_folder; + Optional<bool> allow_drop_on_root; + Optional<bool> use_marketplace_folders; Optional<LLScrollContainer::Params> scroll; Optional<bool> accepts_drag_and_drop; Optional<LLFolderView::Params> folder_view; @@ -110,7 +114,10 @@ public: filter("filter"), start_folder("start_folder"), use_label_suffix("use_label_suffix", true), - show_empty_message("show_empty_message", true), + show_empty_message("show_empty_message", true), + show_root_folder("show_root_folder", false), + allow_drop_on_root("allow_drop_on_root", true), + use_marketplace_folders("use_marketplace_folders", false), scroll("scroll"), accepts_drag_and_drop("accepts_drag_and_drop"), folder_view("folder_view"), @@ -184,6 +191,7 @@ public: LLFolderView* getRootFolder() { return mFolderRoot.get(); } LLUUID getRootFolderID(); LLScrollContainer* getScrollableContainer() { return mScroller; } + bool getAllowDropOnRoot() { return mParams.allow_drop_on_root; } void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); @@ -240,6 +248,7 @@ protected: LLScrollContainer* mScroller; LLFolderViewModelInventory mInventoryViewModel; + LLPointer<LLFolderViewGroupedItemBridge> mGroupedItemBridge; Params mParams; // stored copy of parameter block std::map<LLUUID, LLFolderViewItem*> mItemMap; @@ -291,7 +300,7 @@ protected: BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const; virtual LLFolderView * createFolderRoot(LLUUID root_id ); - virtual LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge); + virtual LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop); virtual LLFolderViewItem* createFolderViewItem(LLInvFVBridge * bridge); private: bool mBuildDefaultHierarchy; // default inventory hierarchy should be created in postBuild() diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index 59e14e6cc0..59e14e6cc0 100755..100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h index 4e6c774cad..4e6c774cad 100755..100644 --- a/indra/newview/lljoystickbutton.h +++ b/indra/newview/lljoystickbutton.h diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index 9c00243f44..9c00243f44 100755..100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 870d92811e..870d92811e 100755..100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index c58540914e..c58540914e 100755..100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h index 3356f866ce..3356f866ce 100755..100644 --- a/indra/newview/lllandmarklist.h +++ b/indra/newview/lllandmarklist.h diff --git a/indra/newview/lllightconstants.h b/indra/newview/lllightconstants.h index 216fd4ded5..216fd4ded5 100755..100644 --- a/indra/newview/lllightconstants.h +++ b/indra/newview/lllightconstants.h diff --git a/indra/newview/lllistbrowser.cpp b/indra/newview/lllistbrowser.cpp index 956f457730..956f457730 100755..100644 --- a/indra/newview/lllistbrowser.cpp +++ b/indra/newview/lllistbrowser.cpp diff --git a/indra/newview/lllistbrowser.h b/indra/newview/lllistbrowser.h index 22e8755f08..22e8755f08 100755..100644 --- a/indra/newview/lllistbrowser.h +++ b/indra/newview/lllistbrowser.h diff --git a/indra/newview/lllistcontextmenu.cpp b/indra/newview/lllistcontextmenu.cpp index 6bda8b1d0d..6bda8b1d0d 100755..100644 --- a/indra/newview/lllistcontextmenu.cpp +++ b/indra/newview/lllistcontextmenu.cpp diff --git a/indra/newview/lllistcontextmenu.h b/indra/newview/lllistcontextmenu.h index 04d3314829..04d3314829 100755..100644 --- a/indra/newview/lllistcontextmenu.h +++ b/indra/newview/lllistcontextmenu.h diff --git a/indra/newview/lllistview.cpp b/indra/newview/lllistview.cpp index 8fc3ad63bd..8fc3ad63bd 100755..100644 --- a/indra/newview/lllistview.cpp +++ b/indra/newview/lllistview.cpp diff --git a/indra/newview/lllistview.h b/indra/newview/lllistview.h index 4303672b9f..4303672b9f 100755..100644 --- a/indra/newview/lllistview.h +++ b/indra/newview/lllistview.h diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 8fb7550169..46c1ffa789 100755..100644 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -128,7 +128,7 @@ LLLocalBitmap::LLLocalBitmap(std::string filename) LLLocalBitmap::~LLLocalBitmap() { // replace IDs with defaults, if set to do so. - if(LL_LOCAL_REPLACE_ON_DEL && mValid) // fix for STORM-1837 + if(LL_LOCAL_REPLACE_ON_DEL && mValid && gAgentAvatarp) // fix for STORM-1837 { replaceIDs(mWorldID, IMG_DEFAULT); LLLocalBitmapMgr::doRebake(); @@ -515,7 +515,7 @@ void LLLocalBitmap::updateUserSculpts(LLUUID old_id, LLUUID new_id) { LLSculptParams* old_params = (LLSculptParams*)object->getParameterEntry(LLNetworkData::PARAMS_SCULPT); LLSculptParams new_params(*old_params); - new_params.setSculptTexture(new_id); + new_params.setSculptTexture(new_id, (*old_params).getSculptType()); object->setParameterEntry(LLNetworkData::PARAMS_SCULPT, new_params, TRUE); } } @@ -545,12 +545,14 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp LLAvatarAppearanceDefines::ETextureIndex reg_texind = getTexIndex(type, baked_texind); if (reg_texind != LLAvatarAppearanceDefines::TEX_NUM_INDICES) { - U32 index = gAgentWearables.getWearableIndex(wearable); - gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index); - gAgentAvatarp->wearableUpdated(type); - - /* telling the manager to rebake once update cycle is fully done */ - LLLocalBitmapMgr::setNeedsRebake(); + U32 index; + if (gAgentWearables.getWearableIndex(wearable,index)) + { + gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index); + gAgentAvatarp->wearableUpdated(type); + /* telling the manager to rebake once update cycle is fully done */ + LLLocalBitmapMgr::setNeedsRebake(); + } } } diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h index 59467922b4..59467922b4 100755..100644 --- a/indra/newview/lllocalbitmaps.h +++ b/indra/newview/lllocalbitmaps.h diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index 162d6e003e..162d6e003e 100755..100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h index 9fef42c5df..9fef42c5df 100755..100644 --- a/indra/newview/lllocationhistory.h +++ b/indra/newview/lllocationhistory.h diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 8d21fda8f9..8d21fda8f9 100755..100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index cd6fd24077..cd6fd24077 100755..100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 7ddacf3033..4116e38f11 100755..100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -804,6 +804,22 @@ bool LLLogChat::isNearbyTranscriptExist() return false; } +bool LLLogChat::isAdHocTranscriptExist(std::string file_name) +{ + std::vector<std::string> list_of_transcriptions; + LLLogChat::getListOfTranscriptFiles(list_of_transcriptions); + + file_name = makeLogFileName(file_name); + BOOST_FOREACH(std::string& transcript_file_name, list_of_transcriptions) + { + if (transcript_file_name == file_name) + { + return true; + } + } + return false; +} + //*TODO mark object's names in a special way so that they will be distinguishable form avatar name //which are more strict by its nature (only firstname and secondname) //Example, an object's name can be written like "Object <actual_object's_name>" diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h index ca597599dd..6022e539a9 100755..100644 --- a/indra/newview/lllogchat.h +++ b/indra/newview/lllogchat.h @@ -120,6 +120,7 @@ public: static void deleteTranscripts(); static bool isTranscriptExist(const LLUUID& avatar_id, bool is_group=false); static bool isNearbyTranscriptExist(); + static bool isAdHocTranscriptExist(std::string file_name); static bool historyThreadsFinished(LLUUID session_id); static LLLoadHistoryThread* getLoadHistoryThread(LLUUID session_id); diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp index 39f3c0f113..39f3c0f113 100755..100644 --- a/indra/newview/llloginhandler.cpp +++ b/indra/newview/llloginhandler.cpp diff --git a/indra/newview/llloginhandler.h b/indra/newview/llloginhandler.h index 1f2eacd094..1f2eacd094 100755..100644 --- a/indra/newview/llloginhandler.h +++ b/indra/newview/llloginhandler.h diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index b4d0bb6823..b4d0bb6823 100755..100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h index c6773bbf68..c6773bbf68 100755..100644 --- a/indra/newview/lllogininstance.h +++ b/indra/newview/lllogininstance.h diff --git a/indra/newview/lllookshistorypanel.h b/indra/newview/lllookshistorypanel.h index 965b4d8416..965b4d8416 100755..100644 --- a/indra/newview/lllookshistorypanel.h +++ b/indra/newview/lllookshistorypanel.h diff --git a/indra/newview/llmachineid.cpp b/indra/newview/llmachineid.cpp index b5fd3df0f3..b5fd3df0f3 100755..100644 --- a/indra/newview/llmachineid.cpp +++ b/indra/newview/llmachineid.cpp diff --git a/indra/newview/llmachineid.h b/indra/newview/llmachineid.h index 6ef8c36fdb..6ef8c36fdb 100755..100644 --- a/indra/newview/llmachineid.h +++ b/indra/newview/llmachineid.h diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp index db8d2e4ede..db8d2e4ede 100755..100644 --- a/indra/newview/llmainlooprepeater.cpp +++ b/indra/newview/llmainlooprepeater.cpp diff --git a/indra/newview/llmainlooprepeater.h b/indra/newview/llmainlooprepeater.h index f84c0ca94c..f84c0ca94c 100755..100644 --- a/indra/newview/llmainlooprepeater.h +++ b/indra/newview/llmainlooprepeater.h diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index 8567180dd6..8567180dd6 100755..100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp diff --git a/indra/newview/llmanip.h b/indra/newview/llmanip.h index 1fb05e047a..1fb05e047a 100755..100644 --- a/indra/newview/llmanip.h +++ b/indra/newview/llmanip.h diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index f172aa0955..ed40483029 100755..100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -749,17 +749,19 @@ void LLManipRotate::renderActiveRing( F32 radius, F32 width, const LLColor4& fro void LLManipRotate::renderSnapGuides() { + static LLCachedControl<bool> snap_enabled(gSavedSettings, "SnapEnabled", true); + if (!snap_enabled) + { + return; + } + LLVector3 grid_origin; LLVector3 grid_scale; LLQuaternion grid_rotation; - LLVector3 constraint_axis = getConstraintAxis(); - LLSelectMgr::getInstance()->getGrid(grid_origin, grid_rotation, grid_scale); + LLSelectMgr::getInstance()->getGrid(grid_origin, grid_rotation, grid_scale, true); - if (!gSavedSettings.getBOOL("SnapEnabled")) - { - return; - } + LLVector3 constraint_axis = getConstraintAxis(); LLVector3 center = gAgent.getPosAgentFromGlobal( mRotationCenter ); LLVector3 cam_at_axis; @@ -1294,7 +1296,7 @@ LLVector3 LLManipRotate::getConstraintAxis() else { S32 axis_dir = mManipPart - LL_ROT_X; - if ((axis_dir >= 0) && (axis_dir < 3)) + if ((axis_dir >= LL_NO_PART) && (axis_dir < LL_Z_ARROW)) { axis.mV[axis_dir] = 1.f; } diff --git a/indra/newview/llmaniprotate.h b/indra/newview/llmaniprotate.h index e8f1c24c58..e8f1c24c58 100755..100644 --- a/indra/newview/llmaniprotate.h +++ b/indra/newview/llmaniprotate.h diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 407613d32c..85faa70552 100755..100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -1677,12 +1677,12 @@ void LLManipScale::renderSnapGuides(const LLBBox& bbox) F32 alpha = (1.f - (1.f * ((F32)llabs(i) / (F32)num_ticks_per_side1))); LLVector3 tick_pos = mScaleCenter + (mScaleDir * (grid_multiple1 + i) * smallest_subdivision1); - F32 cur_subdivisions = llclamp(getSubdivisionLevel(tick_pos, mScaleDir, mScaleSnapUnit1, mTickPixelSpacing1), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); - - if (fmodf((F32)(i + sub_div_offset_1), (sGridMaxSubdivisionLevel / cur_subdivisions)) != 0.f) + //No need check this condition to prevent tick position scaling (FIX MAINT-5207/5208) + //F32 cur_subdivisions = llclamp(getSubdivisionLevel(tick_pos, mScaleDir, mScaleSnapUnit1, mTickPixelSpacing1), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + /*if (fmodf((F32)(i + sub_div_offset_1), (sGridMaxSubdivisionLevel / cur_subdivisions)) != 0.f) { continue; - } + }*/ F32 tick_scale = 1.f; for (F32 division_level = sGridMaxSubdivisionLevel; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) @@ -1710,12 +1710,12 @@ void LLManipScale::renderSnapGuides(const LLBBox& bbox) F32 alpha = (1.f - (1.f * ((F32)llabs(i) / (F32)num_ticks_per_side2))); LLVector3 tick_pos = mScaleCenter + (mScaleDir * (grid_multiple2 + i) * smallest_subdivision2); - F32 cur_subdivisions = llclamp(getSubdivisionLevel(tick_pos, mScaleDir, mScaleSnapUnit2, mTickPixelSpacing2), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); - - if (fmodf((F32)(i + sub_div_offset_2), (sGridMaxSubdivisionLevel / cur_subdivisions)) != 0.f) + //No need check this condition to prevent tick position scaling (FIX MAINT-5207/5208) + //F32 cur_subdivisions = llclamp(getSubdivisionLevel(tick_pos, mScaleDir, mScaleSnapUnit2, mTickPixelSpacing2), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + /*if (fmodf((F32)(i + sub_div_offset_2), (sGridMaxSubdivisionLevel / cur_subdivisions)) != 0.f) { continue; - } + }*/ F32 tick_scale = 1.f; for (F32 division_level = sGridMaxSubdivisionLevel; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) diff --git a/indra/newview/llmanipscale.h b/indra/newview/llmanipscale.h index 11ade9b7d0..11ade9b7d0 100755..100644 --- a/indra/newview/llmanipscale.h +++ b/indra/newview/llmanipscale.h diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 394db71fb9..b4259a456c 100755..100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -1285,12 +1285,12 @@ void LLManipTranslate::renderSnapGuides() { tick_start = selection_center + (translate_axis * (smallest_grid_unit_scale * (F32)i - offset_nearest_grid_unit)); - F32 cur_subdivisions = getSubdivisionLevel(tick_start, translate_axis, getMinGridScale()); - - if (fmodf((F32)(i + sub_div_offset), (max_subdivisions / cur_subdivisions)) != 0.f) + //No need check this condition to prevent tick position scaling (FIX MAINT-5207/5208) + //F32 cur_subdivisions = getSubdivisionLevel(tick_start, translate_axis, getMinGridScale()); + /*if (fmodf((F32)(i + sub_div_offset), (max_subdivisions / cur_subdivisions)) != 0.f) { continue; - } + }*/ // add in off-axis offset tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); diff --git a/indra/newview/llmaniptranslate.h b/indra/newview/llmaniptranslate.h index 3c37bbd698..3c37bbd698 100755..100644 --- a/indra/newview/llmaniptranslate.h +++ b/indra/newview/llmaniptranslate.h diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index 4a7a4e268d..d5bfe1df4a 100755..100644 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -29,14 +29,22 @@ #include "llmarketplacefunctions.h" #include "llagent.h" +#include "llbufferstream.h" #include "llhttpclient.h" +#include "llinventoryfunctions.h" +#include "llinventoryobserver.h" +#include "llnotificationsutil.h" #include "llsdserialize.h" #include "lltimer.h" #include "lltrans.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewermedia.h" #include "llviewernetwork.h" +#include "llviewerregion.h" +#include "reader.h" // JSON +#include "writer.h" // JSON // // Helpers @@ -93,6 +101,550 @@ LLSD getMarketplaceStringSubstitutions() return marketplace_sub_map; } +// Get the version folder: if there is only one subfolder, we will use it as a version folder +LLUUID getVersionFolderIfUnique(const LLUUID& folder_id) +{ + LLUUID version_id = LLUUID::null; + LLInventoryModel::cat_array_t* categories; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(folder_id, categories, items); + if (categories->size() == 1) + { + version_id = categories->begin()->get()->getUUID(); + } + else + { + LLNotificationsUtil::add("AlertMerchantListingActivateRequired"); + } + return version_id; +} + +/////////////////////////////////////////////////////////////////////////////// +// SLM Responders +void log_SLM_warning(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description) +{ + LL_WARNS("SLM") << "SLM API : Responder to " << request << ". status : " << status << ", reason : " << reason << ", code : " << code << ", description : " << description << LL_ENDL; + if ((status == 422) && (description == "[\"You must have an English description to list the product\", \"You must choose a category for your product before it can be listed\", \"Listing could not change state.\", \"Price can't be blank\"]")) + { + // Unprocessable Entity : Special case that error as it is a frequent answer when trying to list an incomplete listing + LLNotificationsUtil::add("MerchantUnprocessableEntity"); + } + else + { + // Prompt the user with the warning (so they know why things are failing) + LLSD subs; + subs["[ERROR_REASON]"] = reason; + // We do show long descriptions in the alert (unlikely to be readable). The description string will be in the log though. + subs["[ERROR_DESCRIPTION]"] = (description.length() <= 512 ? description : ""); + LLNotificationsUtil::add("MerchantTransactionFailed", subs); + } +} +void log_SLM_infos(const std::string& request, U32 status, const std::string& body) +{ + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + LL_INFOS("SLM") << "SLM API : Responder to " << request << ". status : " << status << ", body or description : " << body << LL_ENDL; + } +} +void log_SLM_infos(const std::string& request, const std::string& url, const std::string& body) +{ + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + LL_INFOS("SLM") << "SLM API : Sending " << request << ". url : " << url << ", body : " << body << LL_ENDL; + } +} + +class LLSLMGetMerchantResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetMerchantResponder); +public: + + LLSLMGetMerchantResponder() {} + +protected: + virtual void httpFailure() + { + if (HTTP_NOT_FOUND == getStatus()) + { + log_SLM_infos("Get /merchant", getStatus(), "User is not a merchant"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT); + } + else if (HTTP_SERVICE_UNAVAILABLE == getStatus()) + { + log_SLM_infos("Get /merchant", getStatus(), "Merchant is not migrated"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT); + } + else + { + log_SLM_warning("Get /merchant", getStatus(), getReason(), getContent().get("error_code"), getContent().get("error_description")); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE); + } + } + + virtual void httpSuccess() + { + log_SLM_infos("Get /merchant", getStatus(), "User is a merchant"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT); + } + +}; + +class LLSLMGetListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetListingsResponder); +public: + + LLSLMGetListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Get /listings", getStatus(), getReason(), "", body); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_FAILED); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Get /listings", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_FAILED); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Get /listings", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + if (folder_id.notNull()) + { + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + } + it++; + } + + // Update all folders under the root + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_DONE); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMCreateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMCreateListingsResponder); +public: + + LLSLMCreateListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Post /listings", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Post /listings", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Post /listings", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMGetListingResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetListingResponder); +public: + + LLSLMGetListingResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + if (getStatus() == 404) + { + // That listing does not exist -> delete its record from the local SLM data store + LLMarketplaceData::instance().deleteListing(mExpectedFolderId, false); + } + else + { + log_SLM_warning("Get /listing", getStatus(), getReason(), "", body); + } + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Get /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Get /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Update that listing + LLMarketplaceData::instance().setListingID(folder_id, listing_id, false); + LLMarketplaceData::instance().setVersionFolderID(folder_id, version_id, false); + LLMarketplaceData::instance().setActivationState(folder_id, is_listed, false); + LLMarketplaceData::instance().setListingURL(folder_id, edit_url, false); + LLMarketplaceData::instance().setCountOnHand(folder_id,count,false); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMUpdateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMUpdateListingsResponder); +public: + + LLSLMUpdateListingsResponder(const LLUUID& folder_id, bool expected_listed_state, const LLUUID& expected_version_id) + { + mExpectedFolderId = folder_id; + mExpectedListedState = expected_listed_state; + mExpectedVersionUUID = expected_version_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Put /listing", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Put /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Put /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Update that listing + LLMarketplaceData::instance().setListingID(folder_id, listing_id, false); + LLMarketplaceData::instance().setVersionFolderID(folder_id, version_id, false); + LLMarketplaceData::instance().setActivationState(folder_id, is_listed, false); + LLMarketplaceData::instance().setListingURL(folder_id, edit_url, false); + LLMarketplaceData::instance().setCountOnHand(folder_id,count,false); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + // Show a notification alert if what we got is not what we expected + // (this actually doesn't result in an error status from the SLM API protocol) + if ((mExpectedListedState != is_listed) || (mExpectedVersionUUID != version_id)) + { + LLSD subs; + subs["[URL]"] = edit_url; + LLNotificationsUtil::add("AlertMerchantListingNotUpdated", subs); + } + + it++; + } + } +private: + LLUUID mExpectedFolderId; + bool mExpectedListedState; + LLUUID mExpectedVersionUUID; +}; + +class LLSLMAssociateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMAssociateListingsResponder); +public: + + LLSLMAssociateListingsResponder(const LLUUID& folder_id, const LLUUID& source_folder_id) + { + mExpectedFolderId = folder_id; + mSourceFolderId = source_folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + LLMarketplaceData::instance().setUpdating(mSourceFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Put /associate_inventory", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + update_marketplace_category(mSourceFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Put /associate_inventory", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + update_marketplace_category(mSourceFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Put /associate_inventory", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Check that the listing ID is not already associated to some other record + LLUUID old_listing = LLMarketplaceData::instance().getListingFolder(listing_id); + if (old_listing.notNull()) + { + // If it is already used, unlist the old record (we can't have 2 listings with the same listing ID) + LLMarketplaceData::instance().deleteListing(old_listing); + } + + // Add the new association + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + // The stock count needs to be updated with the new local count now + LLMarketplaceData::instance().updateCountOnHand(folder_id,1); + + it++; + } + + // Always update the source folder so its widget updates + update_marketplace_category(mSourceFolderId, false); + } +private: + LLUUID mExpectedFolderId; // This is the folder now associated with the id. + LLUUID mSourceFolderId; // This is the folder initially associated with the id. Can be LLUUI::null +}; + +class LLSLMDeleteListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMDeleteListingsResponder); +public: + + LLSLMDeleteListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Delete /listing", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Delete /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Delete /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + LLMarketplaceData::instance().deleteListing(folder_id); + + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +// SLM Responders End +/////////////////////////////////////////////////////////////////////////////// + namespace LLMarketplaceImport { // Basic interface for this namespace @@ -156,7 +708,7 @@ namespace LLMarketplaceImport { if (gSavedSettings.getBOOL("InventoryOutboxLogging")) { - LL_INFOS() << " SLM POST clearing marketplace cookie due to client or server error" << LL_ENDL; + LL_INFOS() << " SLM POST : Clearing marketplace cookie due to client or server error" << LL_ENDL; } sMarketplaceCookie.clear(); } @@ -236,7 +788,7 @@ namespace LLMarketplaceImport S32 getResultStatus() { - return sImportResultStatus; + return sImportResultStatus; } const LLSD& getResults() @@ -427,15 +979,15 @@ void LLMarketplaceInventoryImporter::initialize() return; } - if (!LLMarketplaceImport::hasSessionCookie()) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; - LLMarketplaceImport::establishMarketplaceSessionCookie(); - } - else - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; - } + if (!LLMarketplaceImport::hasSessionCookie()) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; + LLMarketplaceImport::establishMarketplaceSessionCookie(); + } + else + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; + } } void LLMarketplaceInventoryImporter::reinitializeAndTriggerImport() @@ -479,54 +1031,957 @@ void LLMarketplaceInventoryImporter::updateImport() // If we are no longer in progress if (!mImportInProgress) { - if (mInitialized) - { - // Report results - if (mStatusReportSignal) - { - (*mStatusReportSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); - } - } - else - { - // Look for results success - mInitialized = LLMarketplaceImport::hasSessionCookie(); - - if (mInitialized) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; - // Follow up with auto trigger of import - if (mAutoTriggerImport) - { - mAutoTriggerImport = false; - mImportInProgress = triggerImport(); - } - } - else - { - U32 status = LLMarketplaceImport::getResultStatus(); - if ((status == MarketplaceErrorCodes::IMPORT_FORBIDDEN) || - (status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR)) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT; - } - else - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE; - } - if (mErrorInitSignal && (mMarketPlaceStatus == MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE)) - { - (*mErrorInitSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); - } - } - } - } + // Look for results success + mInitialized = LLMarketplaceImport::hasSessionCookie(); - // Make sure we trigger the status change with the final state (in case of auto trigger after initialize) - if (mStatusChangedSignal) - { - (*mStatusChangedSignal)(mImportInProgress); + // Report results + if (mStatusReportSignal) + { + (*mStatusReportSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); + } + + if (mInitialized) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; + // Follow up with auto trigger of import + if (mAutoTriggerImport) + { + mAutoTriggerImport = false; + mImportInProgress = triggerImport(); + } + } + else + { + U32 status = LLMarketplaceImport::getResultStatus(); + if ((status == MarketplaceErrorCodes::IMPORT_FORBIDDEN) || + (status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR)) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT; + } + else if (status == MarketplaceErrorCodes::IMPORT_SERVER_API_DISABLED) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT; + } + else + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE; + } + if (mErrorInitSignal && (mMarketPlaceStatus == MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE)) + { + (*mErrorInitSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); + } + } } } + + // Make sure we trigger the status change with the final state (in case of auto trigger after initialize) + if (mStatusChangedSignal) + { + (*mStatusChangedSignal)(mImportInProgress); + } +} + +// +// Direct Delivery : Marketplace tuples and data +// +class LLMarketplaceInventoryObserver : public LLInventoryObserver +{ +public: + LLMarketplaceInventoryObserver() {} + virtual ~LLMarketplaceInventoryObserver() {} + virtual void changed(U32 mask); +}; + +void LLMarketplaceInventoryObserver::changed(U32 mask) +{ + // When things are added to the marketplace, we might need to re-validate and fix the containing listings + if (mask & LLInventoryObserver::ADD) + { + const std::set<LLUUID>& changed_items = gInventory.getChangedIDs(); + + std::set<LLUUID>::const_iterator id_it = changed_items.begin(); + std::set<LLUUID>::const_iterator id_end = changed_items.end(); + // First, count the number of items in this list... + S32 count = 0; + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj && (LLAssetType::AT_CATEGORY != obj->getType())) + { + count++; + } + } + // Then, decrement the folders of that amount + // Note that of all of those, only one folder will be a listing folder (if at all). + // The other will be ignored by the decrement method. + id_it = changed_items.begin(); + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj && (LLAssetType::AT_CATEGORY == obj->getType())) + { + LLMarketplaceData::instance().decrementValidationWaiting(obj->getUUID(),count); + } + } + } + + // When things are changed in the inventory, this can trigger a host of changes in the marketplace listings folder: + // * stock counts changing : no copy items coming in and out will change the stock count on folders + // * version and listing folders : moving those might invalidate the marketplace data itself + // Since we should cannot raise inventory change while the observer is called (the list will be cleared + // once observers are called) we need to raise a flag in the inventory to signal that things have been dirtied. + + if (mask & (LLInventoryObserver::INTERNAL | LLInventoryObserver::STRUCTURE)) + { + const std::set<LLUUID>& changed_items = gInventory.getChangedIDs(); + + std::set<LLUUID>::const_iterator id_it = changed_items.begin(); + std::set<LLUUID>::const_iterator id_end = changed_items.end(); + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj) + { + if (LLAssetType::AT_CATEGORY == obj->getType()) + { + // If it's a folder known to the marketplace, let's check it's in proper shape + if (LLMarketplaceData::instance().isListed(*id_it) || LLMarketplaceData::instance().isVersionFolder(*id_it)) + { + LLInventoryCategory* cat = (LLInventoryCategory*)(obj); + validate_marketplacelistings(cat); + } + } + else + { + // If it's not a category, it's an item... + LLInventoryItem* item = (LLInventoryItem*)(obj); + // If it's a no copy item, we may need to update the label count of marketplace listings + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + LLMarketplaceData::instance().setDirtyCount(); + } + } + } + } + } +} + +// Tuple == Item +LLMarketplaceTuple::LLMarketplaceTuple() : + mListingFolderId(), + mListingId(0), + mVersionFolderId(), + mIsActive(false), + mEditURL("") +{ +} + +LLMarketplaceTuple::LLMarketplaceTuple(const LLUUID& folder_id) : + mListingFolderId(folder_id), + mListingId(0), + mVersionFolderId(), + mIsActive(false), + mEditURL("") +{ +} + +LLMarketplaceTuple::LLMarketplaceTuple(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed) : + mListingFolderId(folder_id), + mListingId(listing_id), + mVersionFolderId(version_id), + mIsActive(is_listed), + mEditURL("") +{ +} + + +// Data map +LLMarketplaceData::LLMarketplaceData() : + mMarketPlaceStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED), + mMarketPlaceDataFetched(MarketplaceFetchCodes::MARKET_FETCH_NOT_DONE), + mStatusUpdatedSignal(NULL), + mDataFetchedSignal(NULL), + mDirtyCount(false) +{ + mInventoryObserver = new LLMarketplaceInventoryObserver; + gInventory.addObserver(mInventoryObserver); +} + +LLMarketplaceData::~LLMarketplaceData() +{ + gInventory.removeObserver(mInventoryObserver); +} + +void LLMarketplaceData::initializeSLM(const status_updated_signal_t::slot_type& cb) +{ + if (mStatusUpdatedSignal == NULL) + { + mStatusUpdatedSignal = new status_updated_signal_t(); + } + mStatusUpdatedSignal->connect(cb); + + if (mMarketPlaceStatus != MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED) + { + // If already initialized, just confirm the status so the callback gets called + setSLMStatus(mMarketPlaceStatus); + } + else + { + // Initiate SLM connection and set responder + std::string url = getSLMConnectURL("/merchant"); + if (url != "") + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; + log_SLM_infos("LLHTTPClient::get", url, ""); + LLHTTPClient::get(url, new LLSLMGetMerchantResponder(), LLSD()); + } + } +} + +void LLMarketplaceData::setDataFetchedSignal(const status_updated_signal_t::slot_type& cb) +{ + if (mDataFetchedSignal == NULL) + { + mDataFetchedSignal = new status_updated_signal_t(); + } + mDataFetchedSignal->connect(cb); +} + +// Get/Post/Put requests to the SLM Server using the SLM API +void LLMarketplaceData::getSLMListings() +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listings"); + log_SLM_infos("LLHTTPClient::get", url, ""); + const LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + setUpdating(marketplacelistings_id,true); + LLHTTPClient::get(url, new LLSLMGetListingsResponder(marketplacelistings_id), headers); +} + +void LLMarketplaceData::getSLMListing(S32 listing_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::get", url, ""); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + setUpdating(folder_id,true); + LLHTTPClient::get(url, new LLSLMGetListingResponder(folder_id), headers); +} + +void LLMarketplaceData::createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Build the json message + Json::Value root; + Json::FastWriter writer; + + LLViewerInventoryCategory* category = gInventory.getCategory(folder_id); + root["listing"]["name"] = category->getName(); + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + root["listing"]["inventory_info"]["count_on_hand"] = count; + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/listings"); + log_SLM_infos("LLHTTPClient::postRaw", url, json_str); + setUpdating(folder_id,true); + LLHTTPClient::postRaw(url, data, size, new LLSLMCreateListingsResponder(folder_id), headers); +} + +void LLMarketplaceData::updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, S32 count) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + Json::Value root; + Json::FastWriter writer; + + // Note : auto unlist if the count is 0 (out of stock) + if (is_listed && (count == 0)) + { + is_listed = false; + LLNotificationsUtil::add("AlertMerchantStockFolderEmpty"); + } + + // Note : we're assuming that sending unchanged info won't break anything server side... + root["listing"]["id"] = listing_id; + root["listing"]["is_listed"] = is_listed; + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + root["listing"]["inventory_info"]["count_on_hand"] = count; + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::putRaw", url, json_str); + setUpdating(folder_id,true); + LLHTTPClient::putRaw(url, data, size, new LLSLMUpdateListingsResponder(folder_id, is_listed, version_id), headers); +} + +void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + Json::Value root; + Json::FastWriter writer; + + // Note : we're assuming that sending unchanged info won't break anything server side... + root["listing"]["id"] = listing_id; + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/associate_inventory/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::putRaw", url, json_str); + setUpdating(folder_id,true); + setUpdating(source_folder_id,true); + LLHTTPClient::putRaw(url, data, size, new LLSLMAssociateListingsResponder(folder_id,source_folder_id), headers); +} + +void LLMarketplaceData::deleteSLMListing(S32 listing_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::del", url, ""); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + setUpdating(folder_id,true); + LLHTTPClient::del(url, new LLSLMDeleteListingsResponder(folder_id), headers); +} + +std::string LLMarketplaceData::getSLMConnectURL(const std::string& route) +{ + std::string url(""); + LLViewerRegion *regionp = gAgent.getRegion(); + if (regionp) + { + // Get DirectDelivery cap + url = regionp->getCapability("DirectDelivery"); + if (url != "") + { + url += route; + } + } + return url; +} + +void LLMarketplaceData::setSLMStatus(U32 status) +{ + mMarketPlaceStatus = status; + if (mStatusUpdatedSignal) + { + (*mStatusUpdatedSignal)(); + } +} + +void LLMarketplaceData::setSLMDataFetched(U32 status) +{ + mMarketPlaceDataFetched = status; + if (mDataFetchedSignal) + { + (*mDataFetchedSignal)(); + } +} + +// Creation / Deletion / Update +// Methods publicly called +bool LLMarketplaceData::createListing(const LLUUID& folder_id) +{ + if (isListed(folder_id)) + { + // Listing already exists -> exit with error + return false; + } + + // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately + S32 count = -1; + LLUUID version_id = getVersionFolderIfUnique(folder_id); + if (version_id.notNull()) + { + count = compute_stock_count(version_id, true); + } + + // Validate the count on hand + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated, we will consider it empty (out of stock) at creation time + // It will get reevaluated and updated once the items are fetched + count = 0; + } + + // Post the listing creation request to SLM + createSLMListing(folder_id, version_id, count); + + return true; +} + +bool LLMarketplaceData::clearListing(const LLUUID& folder_id, S32 depth) +{ + if (folder_id.isNull()) + { + // Folder doesn't exists -> exit with error + return false; + } + + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = (isListed(folder_id) ? folder_id : nested_parent_id(folder_id, depth)); + S32 listing_id = getListingID(listing_uuid); + + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Update the SLM Server so that this listing is deleted (actually, archived...) + deleteSLMListing(listing_id); + + return true; +} + +bool LLMarketplaceData::getListing(const LLUUID& folder_id, S32 depth) +{ + if (folder_id.isNull()) + { + // Folder doesn't exists -> exit with error + return false; + } + + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = (isListed(folder_id) ? folder_id : nested_parent_id(folder_id, depth)); + S32 listing_id = getListingID(listing_uuid); + + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Get listing data from SLM + getSLMListing(listing_id); + + return true; +} + +bool LLMarketplaceData::getListing(S32 listing_id) +{ + if (listing_id == 0) + { + return false; + } + + // Get listing data from SLM + getSLMListing(listing_id); + return true; +} + +bool LLMarketplaceData::activateListing(const LLUUID& folder_id, bool activate, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + if (getActivationState(listing_uuid) == activate) + { + // If activation state is unchanged, no point spamming SLM with an update + return true; + } + + LLUUID version_uuid = getVersionFolder(listing_uuid); + + // Also update the count on hand + S32 count = compute_stock_count(folder_id); + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated locally, we should not change that SLM value + // We are assuming that this issue is local and should not modify server side values + count = getCountOnHand(listing_uuid); + } + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_uuid, activate, count); + + return true; +} + +bool LLMarketplaceData::setVersionFolder(const LLUUID& folder_id, const LLUUID& version_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + if (getVersionFolder(listing_uuid) == version_id) + { + // If version folder is unchanged, no point spamming SLM with an update + return true; + } + + // Note: if the version_id is cleared, we need to unlist the listing, otherwise, state unchanged + bool is_listed = (version_id.isNull() ? false : getActivationState(listing_uuid)); + + // Also update the count on hand + S32 count = compute_stock_count(version_id); + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated, we will consider it empty (out of stock) when resetting the version folder + // It will get reevaluated and updated once the items are fetched + count = 0; + } + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_id, is_listed, count); + + return true; +} + +bool LLMarketplaceData::updateCountOnHand(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Compute the new count on hand + S32 count = compute_stock_count(folder_id); + + if (count == getCountOnHand(listing_uuid)) + { + // If count on hand is unchanged, no point spamming SLM with an update + return true; + } + else if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If local count on hand is not known at that point, do *not* force an update to SLM + return false; + } + + // Get the unchanged values + bool is_listed = getActivationState(listing_uuid); + LLUUID version_uuid = getVersionFolder(listing_uuid); + + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_uuid, is_listed, count); + + // Force the local value as it prevents spamming (count update may occur in burst when restocking) + // Note that if SLM has a good reason to return a different value, it'll be updated by the responder + setCountOnHand(listing_uuid, count, false); + + return true; +} + +bool LLMarketplaceData::associateListing(const LLUUID& folder_id, const LLUUID& source_folder_id, S32 listing_id) +{ + if (isListed(folder_id)) + { + // Listing already exists -> exit with error + return false; + } + + // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately + LLUUID version_id = getVersionFolderIfUnique(folder_id); + + // Post the listing associate request to SLM + associateSLMListing(folder_id, listing_id, version_id, source_folder_id); + + return true; +} + +// Methods privately called or called by SLM responders to perform changes +bool LLMarketplaceData::addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, const std::string& edit_url, S32 count) +{ + mMarketplaceItems[folder_id] = LLMarketplaceTuple(folder_id, listing_id, version_id, is_listed); + mMarketplaceItems[folder_id].mEditURL = edit_url; + mMarketplaceItems[folder_id].mCountOnHand = count; + if (version_id.notNull()) + { + mVersionFolders[version_id] = folder_id; + } + return true; +} + +bool LLMarketplaceData::deleteListing(const LLUUID& folder_id, bool update) +{ + LLUUID version_folder = getVersionFolder(folder_id); + + if (mMarketplaceItems.erase(folder_id) != 1) + { + return false; + } + mVersionFolders.erase(version_folder); + + if (update) + { + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::deleteListing(S32 listing_id, bool update) +{ + if (listing_id == 0) + { + return false; + } + + LLUUID folder_id = getListingFolder(listing_id); + return deleteListing(folder_id, update); +} + +// Accessors +bool LLMarketplaceData::getActivationState(const LLUUID& folder_id) +{ + // Listing folder case + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it != mMarketplaceItems.end()) + { + return (it->second).mIsActive; + } + // Version folder case + version_folders_list_t::iterator it_version = mVersionFolders.find(folder_id); + if (it_version != mVersionFolders.end()) + { + marketplace_items_list_t::iterator it = mMarketplaceItems.find(it_version->second); + if (it != mMarketplaceItems.end()) + { + return (it->second).mIsActive; + } + } + return false; +} + +S32 LLMarketplaceData::getListingID(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? 0 : (it->second).mListingId); +} + +S32 LLMarketplaceData::getCountOnHand(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? -1 : (it->second).mCountOnHand); +} + +LLUUID LLMarketplaceData::getVersionFolder(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? LLUUID::null : (it->second).mVersionFolderId); } +// Reverse lookup : find the listing folder id from the listing id +LLUUID LLMarketplaceData::getListingFolder(S32 listing_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.begin(); + while (it != mMarketplaceItems.end()) + { + if ((it->second).mListingId == listing_id) + { + return (it->second).mListingFolderId; + } + it++; + } + return LLUUID::null; +} + +std::string LLMarketplaceData::getListingURL(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + + marketplace_items_list_t::iterator it = mMarketplaceItems.find(listing_uuid); + return (it == mMarketplaceItems.end() ? "" : (it->second).mEditURL); +} + +bool LLMarketplaceData::isListed(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it != mMarketplaceItems.end()); +} + +bool LLMarketplaceData::isListedAndActive(const LLUUID& folder_id) +{ + return (isListed(folder_id) && getActivationState(folder_id)); +} + +bool LLMarketplaceData::isVersionFolder(const LLUUID& folder_id) +{ + version_folders_list_t::iterator it = mVersionFolders.find(folder_id); + return (it != mVersionFolders.end()); +} + +bool LLMarketplaceData::isInActiveFolder(const LLUUID& obj_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(obj_id); + + } + + LLUUID listing_uuid = nested_parent_id(obj_id, depth); + bool active = getActivationState(listing_uuid); + LLUUID version_uuid = getVersionFolder(listing_uuid); + return (active && ((obj_id == version_uuid) || gInventory.isObjectDescendentOf(obj_id, version_uuid))); +} + +LLUUID LLMarketplaceData::getActiveFolder(const LLUUID& obj_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(obj_id); + + } + + LLUUID listing_uuid = nested_parent_id(obj_id, depth); + return (getActivationState(listing_uuid) ? getVersionFolder(listing_uuid) : LLUUID::null); +} + +bool LLMarketplaceData::isUpdating(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + } + if ((depth <= 0) || (depth > 2)) + { + // Only listing and version folders though are concerned by that status + return false; + } + else + { + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + std::set<LLUUID>::iterator it = mPendingUpdateSet.find(marketplace_listings_uuid); + if (it != mPendingUpdateSet.end()) + { + // If we're waiting for data for the marketplace listings root, we are in the updating process for all + return true; + } + else + { + // Check if the listing folder is waiting or data + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + it = mPendingUpdateSet.find(listing_uuid); + return (it != mPendingUpdateSet.end()); + } + } +} + +void LLMarketplaceData::setUpdating(const LLUUID& folder_id, bool isUpdating) +{ + std::set<LLUUID>::iterator it = mPendingUpdateSet.find(folder_id); + if (it != mPendingUpdateSet.end()) + { + mPendingUpdateSet.erase(it); + } + if (isUpdating) + { + mPendingUpdateSet.insert(folder_id); + } +} + +void LLMarketplaceData::setValidationWaiting(const LLUUID& folder_id, S32 count) +{ + mValidationWaitingList[folder_id] = count; +} + +void LLMarketplaceData::decrementValidationWaiting(const LLUUID& folder_id, S32 count) +{ + waiting_list_t::iterator found = mValidationWaitingList.find(folder_id); + if (found != mValidationWaitingList.end()) + { + found->second -= count; + if (found->second <= 0) + { + mValidationWaitingList.erase(found); + LLInventoryCategory *cat = gInventory.getCategory(folder_id); + validate_marketplacelistings(cat); + update_marketplace_category(folder_id); + gInventory.notifyObservers(); + } + } +} + +// Private Modifiers +bool LLMarketplaceData::setListingID(const LLUUID& folder_id, S32 listing_id, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mListingId = listing_id; + + if (update) + { + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setCountOnHand(const LLUUID& folder_id, S32 count, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mCountOnHand = count; + + return true; +} + +bool LLMarketplaceData::setVersionFolderID(const LLUUID& folder_id, const LLUUID& version_id, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + LLUUID old_version_id = (it->second).mVersionFolderId; + if (old_version_id == version_id) + { + return false; + } + + (it->second).mVersionFolderId = version_id; + mVersionFolders.erase(old_version_id); + if (version_id.notNull()) + { + mVersionFolders[version_id] = folder_id; + } + + if (update) + { + update_marketplace_category(old_version_id, false); + update_marketplace_category(version_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setActivationState(const LLUUID& folder_id, bool activate, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mIsActive = activate; + + if (update) + { + update_marketplace_category((it->second).mListingFolderId, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setListingURL(const LLUUID& folder_id, const std::string& edit_url, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mEditURL = edit_url; + return true; +} + + + diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index abe60890a3..f8e7ed4364 100755..100644 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -66,8 +66,21 @@ namespace MarketplaceStatusCodes MARKET_PLACE_NOT_INITIALIZED = 0, MARKET_PLACE_INITIALIZING = 1, MARKET_PLACE_CONNECTION_FAILURE = 2, - MARKET_PLACE_MERCHANT = 3, - MARKET_PLACE_NOT_MERCHANT = 4, + MARKET_PLACE_NOT_MERCHANT = 3, + MARKET_PLACE_MERCHANT = 4, + MARKET_PLACE_NOT_MIGRATED_MERCHANT = 5, + MARKET_PLACE_MIGRATED_MERCHANT = 6 + }; +} + +namespace MarketplaceFetchCodes +{ + enum sCode + { + MARKET_FETCH_NOT_DONE = 0, + MARKET_FETCH_LOADING = 1, + MARKET_FETCH_FAILED = 2, + MARKET_FETCH_DONE = 3 }; } @@ -109,6 +122,166 @@ private: }; +// Classes handling the data coming from and going to the Marketplace SLM Server DB: +// * implement the Marketplace API +// * cache the current Marketplace data (tuples) +// * provide methods to get Marketplace data on any inventory item +// * set Marketplace data +// * signal Marketplace updates to inventory +namespace SLMErrorCodes +{ + enum eCode + { + SLM_SUCCESS = 200, + SLM_RECORD_CREATED = 201, + SLM_MALFORMED_PAYLOAD = 400, + SLM_NOT_FOUND = 404, + }; +} + +class LLMarketplaceData; +class LLInventoryObserver; + +// A Marketplace item is known by its tuple +class LLMarketplaceTuple +{ +public: + friend class LLMarketplaceData; + + LLMarketplaceTuple(); + LLMarketplaceTuple(const LLUUID& folder_id); + LLMarketplaceTuple(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed = false); + +private: + // Representation of a marketplace item in the Marketplace DB (well, what we know of it...) + LLUUID mListingFolderId; + S32 mListingId; + LLUUID mVersionFolderId; + bool mIsActive; + S32 mCountOnHand; + std::string mEditURL; +}; +// Notes: +// * The mListingFolderId is used as a key to this map. It could therefore be taken off the LLMarketplaceTuple objects themselves. +// * The SLM DB however uses mListingId as its primary key and it shows in its API. In the viewer though, the mListingFolderId is what we use to grab an inventory record. +typedef std::map<LLUUID, LLMarketplaceTuple> marketplace_items_list_t; +typedef std::map<LLUUID, LLUUID> version_folders_list_t; + +// Session cache of all Marketplace tuples +// Notes: +// * There's one and only one possible set of Marketplace dataset per agent and per session thus making it an LLSingleton +// * Some of those records might correspond to folders that do not exist in the inventory anymore. We do not clear them out though. They just won't show up in the UI. + +class LLSLMGetMerchantResponder; +class LLSLMGetListingsResponder; +class LLSLMCreateListingsResponder; +class LLSLMGetListingResponder; +class LLSLMUpdateListingsResponder; +class LLSLMAssociateListingsResponder; +class LLSLMDeleteListingsResponder; + +class LLMarketplaceData + : public LLSingleton<LLMarketplaceData> +{ +public: + friend class LLSLMGetMerchantResponder; + friend class LLSLMGetListingsResponder; + friend class LLSLMCreateListingsResponder; + friend class LLSLMGetListingResponder; + friend class LLSLMUpdateListingsResponder; + friend class LLSLMAssociateListingsResponder; + friend class LLSLMDeleteListingsResponder; + + LLMarketplaceData(); + virtual ~LLMarketplaceData(); + + // Public SLM API : Initialization and status + typedef boost::signals2::signal<void ()> status_updated_signal_t; + void initializeSLM(const status_updated_signal_t::slot_type& cb); + U32 getSLMStatus() const { return mMarketPlaceStatus; } + void setSLMStatus(U32 status); + void getSLMListings(); + bool isEmpty() { return (mMarketplaceItems.size() == 0); } + void setDataFetchedSignal(const status_updated_signal_t::slot_type& cb); + void setSLMDataFetched(U32 status); + U32 getSLMDataFetched() { return mMarketPlaceDataFetched; } + + // High level create/delete/set Marketplace data: each method returns true if the function succeeds, false if error + bool createListing(const LLUUID& folder_id); + bool activateListing(const LLUUID& folder_id, bool activate, S32 depth = -1); + bool clearListing(const LLUUID& folder_id, S32 depth = -1); + bool setVersionFolder(const LLUUID& folder_id, const LLUUID& version_id, S32 depth = -1); + bool associateListing(const LLUUID& folder_id, const LLUUID& source_folder_id, S32 listing_id); + bool updateCountOnHand(const LLUUID& folder_id, S32 depth = -1); + bool getListing(const LLUUID& folder_id, S32 depth = -1); + bool getListing(S32 listing_id); + bool deleteListing(S32 listing_id, bool update = true); + + // Probe the Marketplace data set to identify folders + bool isListed(const LLUUID& folder_id); // returns true if folder_id is a Listing folder + bool isListedAndActive(const LLUUID& folder_id); // returns true if folder_id is an active (listed) Listing folder + bool isVersionFolder(const LLUUID& folder_id); // returns true if folder_id is a Version folder + bool isInActiveFolder(const LLUUID& obj_id, S32 depth = -1); // returns true if the obj_id is buried in an active version folder + LLUUID getActiveFolder(const LLUUID& obj_id, S32 depth = -1); // returns the UUID of the active version folder obj_id is in + bool isUpdating(const LLUUID& folder_id, S32 depth = -1); // returns true if we're waiting from SLM incoming data for folder_id + + // Access Marketplace data set : each method returns a default value if the argument can't be found + bool getActivationState(const LLUUID& folder_id); + S32 getListingID(const LLUUID& folder_id); + LLUUID getVersionFolder(const LLUUID& folder_id); + std::string getListingURL(const LLUUID& folder_id, S32 depth = -1); + LLUUID getListingFolder(S32 listing_id); + S32 getCountOnHand(const LLUUID& folder_id); + + // Used to flag if stock count values for Marketplace have to be updated + bool checkDirtyCount() { if (mDirtyCount) { mDirtyCount = false; return true; } else { return false; } } + void setDirtyCount() { mDirtyCount = true; } + void setUpdating(const LLUUID& folder_id, bool isUpdating); + + // Used to decide when to run a validation on listing folders + void setValidationWaiting(const LLUUID& folder_id, S32 count); + void decrementValidationWaiting(const LLUUID& folder_id, S32 count = 1); + +private: + // Modify Marketplace data set : each method returns true if the function succeeds, false if error + // Used internally only by SLM Responders when data are received from the SLM Server + bool addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, const std::string& edit_url, S32 count); + bool deleteListing(const LLUUID& folder_id, bool update = true); + bool setListingID(const LLUUID& folder_id, S32 listing_id, bool update = true); + bool setVersionFolderID(const LLUUID& folder_id, const LLUUID& version_id, bool update = true); + bool setActivationState(const LLUUID& folder_id, bool activate, bool update = true); + bool setListingURL(const LLUUID& folder_id, const std::string& edit_url, bool update = true); + bool setCountOnHand(const LLUUID& folder_id, S32 count, bool update = true); + + // Private SLM API : package data and get/post/put requests to the SLM Server through the SLM API + void createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count); + void getSLMListing(S32 listing_id); + void updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, S32 count); + void associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id); + void deleteSLMListing(S32 listing_id); + std::string getSLMConnectURL(const std::string& route); + + // Handling Marketplace connection and inventory connection + U32 mMarketPlaceStatus; + status_updated_signal_t* mStatusUpdatedSignal; + LLInventoryObserver* mInventoryObserver; + bool mDirtyCount; // If true, stock count value need to be updated at the next check + + // Update data + U32 mMarketPlaceDataFetched; + status_updated_signal_t* mDataFetchedSignal; + std::set<LLUUID> mPendingUpdateSet; + + // Listing folders waiting for validation + typedef std::map<LLUUID,S32> waiting_list_t; + waiting_list_t mValidationWaitingList; + + // The cache of SLM data (at last...) + marketplace_items_list_t mMarketplaceItems; + // We need a list (version folder -> listing folder) because such reverse lookups are frequent + version_folders_list_t mVersionFolders; +}; + #endif // LL_LLMARKETPLACEFUNCTIONS_H diff --git a/indra/newview/llmarketplacenotifications.cpp b/indra/newview/llmarketplacenotifications.cpp index 0886f9a990..0886f9a990 100755..100644 --- a/indra/newview/llmarketplacenotifications.cpp +++ b/indra/newview/llmarketplacenotifications.cpp diff --git a/indra/newview/llmarketplacenotifications.h b/indra/newview/llmarketplacenotifications.h index 83a4e163c7..83a4e163c7 100755..100644 --- a/indra/newview/llmarketplacenotifications.h +++ b/indra/newview/llmarketplacenotifications.h diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp index a1f6a01aa0..a1f6a01aa0 100755..100644 --- a/indra/newview/llmaterialmgr.cpp +++ b/indra/newview/llmaterialmgr.cpp diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index b96bdd73ff..9cf3249983 100755..100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -57,6 +57,7 @@ #include "llbutton.h" #include "llcheckboxctrl.h" #include "llnotifications.h" +#include "llnotificationsutil.h" #include "lllineeditor.h" #include "llfloaterwebcontent.h" #include "llwindowshade.h" @@ -95,6 +96,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) : mStretchToFill( true ), mMaintainAspectRatio ( true ), mDecoupleTextureSize ( false ), + mUpdateScrolls( false ), mTextureWidth ( 1024 ), mTextureHeight ( 1024 ), mClearCache(false), @@ -427,6 +429,23 @@ BOOL LLMediaCtrl::handleKeyHere( KEY key, MASK mask ) //////////////////////////////////////////////////////////////////////////////// // +BOOL LLMediaCtrl::handleKeyUpHere(KEY key, MASK mask) +{ + BOOL result = FALSE; + + if (mMediaSource) + { + result = mMediaSource->handleKeyUpHere(key, mask); + } + + if (!result) + result = LLPanel::handleKeyUpHere(key, mask); + + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +// void LLMediaCtrl::onVisibilityChange ( BOOL new_visibility ) { LL_INFOS() << "visibility changed to " << (new_visibility?"true":"false") << LL_ENDL; @@ -682,7 +701,13 @@ bool LLMediaCtrl::ensureMediaSourceExists() mMediaSource->addObserver( this ); mMediaSource->setBackgroundColor( getBackgroundColor() ); mMediaSource->setTrustedBrowser(mTrusted); - mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] ); + + F32 scale_factor = LLUI::getScaleFactor().mV[ VX ]; + if (scale_factor != mMediaSource->getPageZoomFactor()) + { + mMediaSource->setPageZoomFactor( scale_factor ); + mUpdateScrolls = true; + } if(mClearCache) { @@ -720,10 +745,11 @@ void LLMediaCtrl::draw() { F32 alpha = getDrawContext().mAlpha; - if ( gRestoreGL == 1 ) + if ( gRestoreGL == 1 || mUpdateScrolls) { LLRect r = getRect(); reshape( r.getWidth(), r.getHeight(), FALSE ); + mUpdateScrolls = false; return; } @@ -765,7 +791,12 @@ void LLMediaCtrl::draw() { gGL.pushUIMatrix(); { - mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] ); + F32 scale_factor = LLUI::getScaleFactor().mV[ VX ]; + if (scale_factor != mMediaSource->getPageZoomFactor()) + { + mMediaSource->setPageZoomFactor( scale_factor ); + mUpdateScrolls = true; + } // scale texture to fit the space using texture coords gGL.getTexUnit(0)->bind(media_texture); @@ -970,25 +1001,29 @@ 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 target = self->isOverrideClickTarget() ? self->getOverrideClickTarget() : 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", mMediaTextureID); - 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); - } + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, target is \"" << target << "\", uri is " << url << LL_ENDL; + + LLWeb::loadURL(url, target, std::string()); + + // CP: removing this code because we no longer support popups so this breaks the flow. + // replaced with a bare call to LLWeb::LoadURL(...) + //LLNotification::Params notify_params; + //notify_params.name = "PopupAttempt"; + //notify_params.payload = LLSD().with("target", target).with("url", url).with("uuid", uuid).with("media_id", mMediaTextureID); + //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; }; @@ -1059,6 +1094,13 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) }; break; + case MEDIA_EVENT_FILE_DOWNLOAD: + { + //llinfos << "Media event - file download requested - filename is " << self->getFileDownloadFilename() << llendl; + //LLNotificationsUtil::add("MediaFileDownloadUnsupported"); + }; + break; + case MEDIA_EVENT_DEBUG_MESSAGE: { LL_INFOS("media") << self->getDebugMessageText() << LL_ENDL; @@ -1137,3 +1179,13 @@ void LLMediaCtrl::updateContextMenuParent(LLView* pNewParent) { mContextMenu->updateParent(pNewParent); } + +bool LLMediaCtrl::wantsKeyUpKeyDown() const +{ + return true; +} + +bool LLMediaCtrl::wantsReturnKey() const +{ + return true; +} diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 785c57b78a..291d87073e 100755..100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -151,6 +151,7 @@ public: // over-rides virtual BOOL handleKeyHere( KEY key, MASK mask); + virtual BOOL handleKeyUpHere(KEY key, MASK mask); virtual void onVisibilityChange ( BOOL new_visibility ); virtual BOOL handleUnicodeCharHere(llwchar uni_char); virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE); @@ -171,6 +172,10 @@ public: void updateContextMenuParent(LLView* pNewParent); + // The Browser windows want keyup and keydown events. Overridden from LLFocusableElement to return true. + virtual bool wantsKeyUpKeyDown() const; + virtual bool wantsReturnKey() const; + protected: void convertInputCoords(S32& x, S32& y); @@ -192,7 +197,8 @@ public: mHidingInitialLoad, mClearCache, mHoverTextChanged, - mDecoupleTextureSize; + mDecoupleTextureSize, + mUpdateScrolls; std::string mHomePageUrl, mHomePageMimeType, diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp index 2fb9e60b29..2fb9e60b29 100755..100644 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h index 80dd519812..80dd519812 100755..100644 --- a/indra/newview/llmediadataclient.h +++ b/indra/newview/llmediadataclient.h diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp index 8879cfd7fb..8879cfd7fb 100755..100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h index 7b1d2873ba..7b1d2873ba 100755..100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 648056484e..55b94aa141 100755..100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -72,6 +72,7 @@ #include "bufferstream.h" #include "llfasttimer.h" #include "llcorehttputil.h" +#include "lltrans.h" #include "boost/lexical_cast.hpp" @@ -492,6 +493,12 @@ void get_vertex_buffer_from_mesh(LLCDMeshData& mesh, LLModel::PhysicsMesh& res, } } +LLViewerFetchedTexture* LLMeshUploadThread::FindViewerTexture(const LLImportMaterial& material) +{ + LLPointer< LLViewerFetchedTexture > * ppTex = static_cast< LLPointer< LLViewerFetchedTexture > * >(material.mOpaqueData); + return ppTex ? (*ppTex).get() : NULL; +} + volatile S32 LLMeshRepoThread::sActiveHeaderRequests = 0; volatile S32 LLMeshRepoThread::sActiveLODRequests = 0; U32 LLMeshRepoThread::sMaxConcurrentRequests = 1; @@ -586,16 +593,16 @@ public: LLMeshLODHandler(const LLVolumeParams & mesh_params, S32 lod, U32 offset, U32 requested_bytes) : LLMeshHandlerBase(offset, requested_bytes), mLOD(lod) - { + { mMeshParams = mesh_params; LLMeshRepoThread::incActiveLODRequests(); } virtual ~LLMeshLODHandler(); - + protected: LLMeshLODHandler(const LLMeshLODHandler &); // Not defined void operator=(const LLMeshLODHandler &); // Not defined - + public: virtual void processData(LLCore::BufferArray * body, S32 body_offset, U8 * data, S32 data_size); virtual void processFailure(LLCore::HttpStatus status); @@ -693,12 +700,16 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, args["MESSAGE"] = message; args["IDENTIFIER"] = identifier; args["LABEL"] = model_name; - gMeshRepo.uploadError(args); // Log details. LL_WARNS(LOG_MESH) << "Error in stage: " << stage << ", Reason: " << status.toString() << " (" << status.toTerseString() << ")" << LL_ENDL; + + std::ostringstream details; + typedef std::set<std::string> mav_errors_set_t; + mav_errors_set_t mav_errors; + if (content.has("error")) { const LLSD& err = content["error"]; @@ -708,8 +719,11 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, << "', message '" << err["message"].asString() << "', id '" << err["identifier"].asString() << "'" << LL_ENDL; + if (err.has("errors")) { + details << std::endl << std::endl; + S32 error_num = 0; const LLSD& err_list = err["errors"]; for (LLSD::array_const_iterator it = err_list.beginArray(); @@ -717,6 +731,13 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, ++it) { const LLSD& err_entry = *it; + std::string message = err_entry["message"]; + + if (message.length() > 0) + { + mav_errors.insert(message); + } + LL_WARNS(LOG_MESH) << " error[" << error_num << "]:" << LL_ENDL; for (LLSD::map_const_iterator map_it = err_entry.beginMap(); map_it != err_entry.endMap(); @@ -733,6 +754,21 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, { LL_WARNS(LOG_MESH) << "Bad response to mesh request, no additional error information available." << LL_ENDL; } + + mav_errors_set_t::iterator mav_errors_it = mav_errors.begin(); + for (; mav_errors_it != mav_errors.end(); ++mav_errors_it) + { + std::string mav_details = "Mav_Details_" + *mav_errors_it; + details << "Message: '" << *mav_errors_it << "': " << LLTrans::getString(mav_details) << std::endl << std::endl; + } + + std::string details_str = details.str(); + if (details_str.length() > 0) + { + args["DETAILS"] = details_str; + } + + gMeshRepo.uploadError(args); } LLMeshRepoThread::LLMeshRepoThread() @@ -766,7 +802,7 @@ LLMeshRepoThread::LLMeshRepoThread() mHttpLargePolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_LARGE_MESH); } - + LLMeshRepoThread::~LLMeshRepoThread() { LL_INFOS(LOG_MESH) << "Small GETs issued: " << LLMeshRepository::sHTTPRequestCount @@ -835,16 +871,16 @@ void LLMeshRepoThread::run() { break; } - + if (! mHttpRequestSet.empty()) { // Dispatch all HttpHandler notifications mHttpRequest->update(0L); } sRequestWaterLevel = mHttpRequestSet.size(); // Stats data update - - // NOTE: order of queue processing intentionally favors LOD requests over header requests + // NOTE: order of queue processing intentionally favors LOD requests over header requests + while (!mLODReqQ.empty() && mHttpRequestSet.size() < sRequestHighWater) { if (! mMutex) @@ -908,7 +944,7 @@ void LLMeshRepoThread::run() mSkinRequests.erase(iter); mMutex->unlock(); - if (!fetchMeshSkinInfo(mesh_id)) + if (! fetchMeshSkinInfo(mesh_id)) { incomplete.insert(mesh_id); } @@ -937,7 +973,7 @@ void LLMeshRepoThread::run() mDecompositionRequests.erase(iter); mMutex->unlock(); - if (!fetchMeshDecomposition(mesh_id)) + if (! fetchMeshDecomposition(mesh_id)) { incomplete.insert(mesh_id); } @@ -963,7 +999,7 @@ void LLMeshRepoThread::run() mPhysicsShapeRequests.erase(iter); mMutex->unlock(); - if (!fetchMeshPhysicsShape(mesh_id)) + if (! fetchMeshPhysicsShape(mesh_id)) { incomplete.insert(mesh_id); } @@ -1189,7 +1225,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id) } ++LLMeshRepository::sMeshRequestCount; - bool ret = true ; + bool ret = true; U32 header_size = mMeshHeaderSize[mesh_id]; if (header_size > 0) @@ -1237,7 +1273,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id) constructUrl(mesh_id, &http_url, &cap_version); if (!http_url.empty()) - { + { LLMeshSkinInfoHandler * handler = new LLMeshSkinInfoHandler(mesh_id, offset, size); LLCore::HttpHandle handle = getByteRange(http_url, cap_version, offset, size, handler); if (LLCORE_HTTP_HANDLE_INVALID == handle) @@ -1283,7 +1319,7 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id) ++LLMeshRepository::sMeshRequestCount; U32 header_size = mMeshHeaderSize[mesh_id]; - bool ret = true ; + bool ret = true; if (header_size > 0) { @@ -1329,9 +1365,9 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id) int cap_version(2); std::string http_url; constructUrl(mesh_id, &http_url, &cap_version); - + if (!http_url.empty()) - { + { LLMeshDecompositionHandler * handler = new LLMeshDecompositionHandler(mesh_id, offset, size); LLCore::HttpHandle handle = getByteRange(http_url, cap_version, offset, size, handler); if (LLCORE_HTTP_HANDLE_INVALID == handle) @@ -1377,7 +1413,7 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id) ++LLMeshRepository::sMeshRequestCount; U32 header_size = mMeshHeaderSize[mesh_id]; - bool ret = true ; + bool ret = true; if (header_size > 0) { @@ -1422,9 +1458,9 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id) int cap_version(2); std::string http_url; constructUrl(mesh_id, &http_url, &cap_version); - + if (!http_url.empty()) - { + { LLMeshPhysicsShapeHandler * handler = new LLMeshPhysicsShapeHandler(mesh_id, offset, size); LLCore::HttpHandle handle = getByteRange(http_url, cap_version, offset, size, handler); if (LLCORE_HTTP_HANDLE_INVALID == handle) @@ -1513,11 +1549,11 @@ bool LLMeshRepoThread::fetchMeshHeader(const LLVolumeParams& mesh_params) } //either cache entry doesn't exist or is corrupt, request header from simulator - bool retval = true ; + bool retval = true; int cap_version(2); std::string http_url; constructUrl(mesh_params.getSculptID(), &http_url, &cap_version); - + if (!http_url.empty()) { //grab first 4KB if we're going to bother with a fetch. Cache will prevent future fetches if a full mesh fits @@ -1605,9 +1641,9 @@ bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod) int cap_version(2); std::string http_url; constructUrl(mesh_id, &http_url, &cap_version); - + if (!http_url.empty()) - { + { LLMeshLODHandler * handler = new LLMeshLODHandler(mesh_params, lod, offset, size); LLCore::HttpHandle handle = getByteRange(http_url, cap_version, offset, size, handler); if (LLCORE_HTTP_HANDLE_INVALID == handle) @@ -1879,7 +1915,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, mOrigin += gAgent.getAtAxis() * scale.magVec(); - mMeshUploadTimeOut = gSavedSettings.getS32("MeshUploadTimeOut") ; + mMeshUploadTimeOut = gSavedSettings.getS32("MeshUploadTimeOut"); mHttpRequest = new LLCore::HttpRequest; mHttpOptions = new LLCore::HttpOptions; @@ -1947,14 +1983,14 @@ void LLMeshUploadThread::preStart() void LLMeshUploadThread::discard() { - LLMutexLock lock(mMutex) ; + LLMutexLock lock(mMutex); mDiscarded = true; } bool LLMeshUploadThread::isDiscarded() const { - LLMutexLock lock(mMutex) ; - return mDiscarded ; + LLMutexLock lock(mMutex); + return mDiscarded; } void LLMeshUploadThread::run() @@ -2019,6 +2055,14 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLMeshUploadData data; data.mBaseModel = iter->first; + + if (data.mBaseModel->mSubmodelID) + { + // These are handled below to insure correct parenting order on creation + // due to map walking being based on model address (aka random) + continue; + } + LLModelInstance& first_instance = *(iter->second.begin()); for (S32 i = 0; i < 5; i++) { @@ -2056,7 +2100,10 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mModel[LLModel::LOD_IMPOSTOR], decomp, mUploadSkin, - mUploadJoints); + mUploadJoints, + FALSE, + FALSE, + data.mBaseModel->mSubmodelID); data.mAssetData = ostr.str(); std::string str = ostr.str(); @@ -2090,17 +2137,26 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) instance_entry["scale"] = ll_sd_from_vector3(scale); instance_entry["material"] = LL_MCODE_WOOD; - instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); + instance_entry["physics_shape_type"] = data.mModel[LLModel::LOD_PHYSICS].notNull() ? (U8)(LLViewerObject::PHYSICS_SHAPE_PRIM) : (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); instance_entry["mesh"] = mesh_index[data.mBaseModel]; instance_entry["face_list"] = LLSD::emptyArray(); - S32 end = llmin((S32)data.mBaseModel->mMaterialList.size(), data.mBaseModel->getNumVolumeFaces()) ; + // We want to be able to allow more than 8 materials... + // + S32 end = llmin((S32)instance.mMaterial.size(), instance.mModel->getNumVolumeFaces()) ; + for (S32 face_num = 0; face_num < end; face_num++) { LLImportMaterial& material = instance.mMaterial[data.mBaseModel->mMaterialList[face_num]]; LLSD face_entry = LLSD::emptyMap(); - LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); + + LLViewerFetchedTexture *texture = NULL; + + if (material.mDiffuseMapFilename.size()) + { + texture = FindViewerTexture(material); + } if ((texture != NULL) && (textures.find(texture) == textures.end())) @@ -2115,9 +2171,171 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLPointer<LLImageJ2C> upload_file = LLViewerTextureList::convertToUploadFile(texture->getSavedRawImage()); + + if (!upload_file.isNull() && upload_file->getDataSize()) + { texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); } } + } + + if (texture != NULL && + mUploadTextures && + texture_index.find(texture) == texture_index.end()) + { + texture_index[texture] = texture_num; + std::string str = texture_str.str(); + res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); + texture_num++; + } + + // Subset of TextureEntry fields. + if (texture != NULL && mUploadTextures) + { + face_entry["image"] = texture_index[texture]; + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; + } + face_entry["diffuse_color"] = ll_sd_from_color4(material.mDiffuseColor); + face_entry["fullbright"] = material.mFullbright; + instance_entry["face_list"][face_num] = face_entry; + } + + res["instance_list"][instance_num] = instance_entry; + instance_num++; + } + } + + for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter) + { + LLMeshUploadData data; + data.mBaseModel = iter->first; + + if (!data.mBaseModel->mSubmodelID) + { + // These were handled above already... + // + continue; + } + + LLModelInstance& first_instance = *(iter->second.begin()); + for (S32 i = 0; i < 5; i++) + { + data.mModel[i] = first_instance.mLOD[i]; + } + + if (mesh_index.find(data.mBaseModel) == mesh_index.end()) + { + // Have not seen this model before - create a new mesh_list entry for it. + if (model_name.empty()) + { + model_name = data.mBaseModel->getName(); + } + + if (model_metric.empty()) + { + model_metric = data.mBaseModel->getMetric(); + } + + std::stringstream ostr; + + LLModel::Decomposition& decomp = + data.mModel[LLModel::LOD_PHYSICS].notNull() ? + data.mModel[LLModel::LOD_PHYSICS]->mPhysics : + data.mBaseModel->mPhysics; + + decomp.mBaseHull = mHullMap[data.mBaseModel]; + + LLSD mesh_header = LLModel::writeModel( + ostr, + data.mModel[LLModel::LOD_PHYSICS], + data.mModel[LLModel::LOD_HIGH], + data.mModel[LLModel::LOD_MEDIUM], + data.mModel[LLModel::LOD_LOW], + data.mModel[LLModel::LOD_IMPOSTOR], + decomp, + mUploadSkin, + mUploadJoints, + FALSE, + FALSE, + data.mBaseModel->mSubmodelID); + + data.mAssetData = ostr.str(); + std::string str = ostr.str(); + + res["mesh_list"][mesh_num] = LLSD::Binary(str.begin(),str.end()); + mesh_index[data.mBaseModel] = mesh_num; + mesh_num++; + } + + // For all instances that use this model + for (instance_list::iterator instance_iter = iter->second.begin(); + instance_iter != iter->second.end(); + ++instance_iter) + { + + LLModelInstance& instance = *instance_iter; + + LLSD instance_entry; + + for (S32 i = 0; i < 5; i++) + { + data.mModel[i] = instance.mLOD[i]; + } + + LLVector3 pos, scale; + LLQuaternion rot; + LLMatrix4 transformation = instance.mTransform; + decomposeMeshMatrix(transformation,pos,rot,scale); + instance_entry["position"] = ll_sd_from_vector3(pos); + instance_entry["rotation"] = ll_sd_from_quaternion(rot); + instance_entry["scale"] = ll_sd_from_vector3(scale); + + instance_entry["material"] = LL_MCODE_WOOD; + instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_NONE); + instance_entry["mesh"] = mesh_index[data.mBaseModel]; + + instance_entry["face_list"] = LLSD::emptyArray(); + + // We want to be able to allow more than 8 materials... + // + S32 end = llmin((S32)instance.mMaterial.size(), instance.mModel->getNumVolumeFaces()) ; + + for (S32 face_num = 0; face_num < end; face_num++) + { + LLImportMaterial& material = instance.mMaterial[data.mBaseModel->mMaterialList[face_num]]; + LLSD face_entry = LLSD::emptyMap(); + + LLViewerFetchedTexture *texture = NULL; + + if (material.mDiffuseMapFilename.size()) + { + texture = FindViewerTexture(material); + } + + if ((texture != NULL) && + (textures.find(texture) == textures.end())) + { + textures.insert(texture); + } + + std::stringstream texture_str; + if (texture != NULL && include_textures && mUploadTextures) + { + if(texture->hasSavedRawImage()) + { + LLPointer<LLImageJ2C> upload_file = + LLViewerTextureList::convertToUploadFile(texture->getSavedRawImage()); + + if (!upload_file.isNull() && upload_file->getDataSize()) + { + texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); + } + } + } if (texture != NULL && mUploadTextures && @@ -2205,7 +2423,7 @@ void LLMeshUploadThread::generateHulls() } } - if(has_valid_requests) + if (has_valid_requests) { // *NOTE: Interesting livelock condition on shutdown. If there // is an upload request in generateHulls() when shutdown starts, @@ -2310,7 +2528,7 @@ void LLMeshUploadThread::requestWholeModelFee() else { U32 sleep_time(10); - + mHttpRequest->update(0); while (! LLApp::isQuitting() && ! finished() && ! isDiscarded()) { @@ -2405,7 +2623,7 @@ void LLMeshUploadThread::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResp // model fee case LLWholeModelFeeObserver* observer(mFeeObserverHandle.get()); mWholeModelUploadURL.clear(); - + if (! status) { LL_WARNS(LOG_MESH) << "Fee request failed. Reason: " << reason @@ -2435,7 +2653,7 @@ void LLMeshUploadThread::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResp LLCoreHttpUtil::responseToLLSD(response, true, body); } dump_llsd_to_file(body, make_dump_name("whole_model_fee_response_", dump_num)); - + if (body["state"].asString() == "upload") { mWholeModelUploadURL = body["uploader"].asString(); @@ -2506,7 +2724,7 @@ void LLMeshRepoThread::notifyLoadedMeshes() LODRequest req = mUnavailableQ.front(); mUnavailableQ.pop(); mMutex->unlock(); - + update_metrics = true; gMeshRepo.notifyMeshUnavailable(req.mMeshParams, req.mLOD); } @@ -2642,7 +2860,7 @@ void LLMeshRepository::cacheOutgoingMesh(LLMeshUploadData& data, LLSD& header) void LLMeshHandlerBase::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response) { mProcessed = true; - + unsigned int retries(0U); response->getRetries(NULL, &retries); LLMeshRepository::sHTTPRetryCount += retries; @@ -2698,7 +2916,7 @@ void LLMeshHandlerBase::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRespo // 200 case, typically offset = 0; } - + // *DEBUG: To test validation below // offset += 1; @@ -2814,7 +3032,7 @@ void LLMeshHeaderHandler::processData(LLCore::BufferArray * /* body */, S32 /* b const std::string & lod_name = header_lod[i]; lod_bytes = llmax(lod_bytes, header[lod_name]["offset"].asInteger()+header[lod_name]["size"].asInteger()); } - + // just in case skin info or decomposition is at the end of the file (which it shouldn't be) lod_bytes = llmax(lod_bytes, header["skin"]["offset"].asInteger() + header["skin"]["size"].asInteger()); lod_bytes = llmax(lod_bytes, header["physics_convex"]["offset"].asInteger() + header["physics_convex"]["size"].asInteger()); @@ -2822,7 +3040,7 @@ void LLMeshHeaderHandler::processData(LLCore::BufferArray * /* body */, S32 /* b S32 header_bytes = (S32) gMeshRepo.mThread->mMeshHeaderSize[mesh_id]; S32 bytes = lod_bytes + header_bytes; - + // It's possible for the remote asset to have more data than is needed for the local cache // only allocate as much space in the VFS as is needed for the local cache data_size = llmin(data_size, bytes); @@ -2834,11 +3052,11 @@ void LLMeshHeaderHandler::processData(LLCore::BufferArray * /* body */, S32 /* b ++LLMeshRepository::sCacheWrites; file.write(data, data_size); - + // zero out the rest of the file U8 block[MESH_HEADER_SIZE]; memset(block, 0, sizeof(block)); - + while (bytes-file.tell() > sizeof(block)) { file.write(block, sizeof(block)); @@ -2864,8 +3082,8 @@ LLMeshLODHandler::~LLMeshLODHandler() gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD); } LLMeshRepoThread::decActiveLODRequests(); - } } +} void LLMeshLODHandler::processFailure(LLCore::HttpStatus status) { @@ -2883,7 +3101,7 @@ void LLMeshLODHandler::processData(LLCore::BufferArray * /* body */, S32 /* body { if ((! MESH_LOD_PROCESS_FAILED) && gMeshRepo.mThread->lodReceived(mMeshParams, mLOD, data, data_size)) { - //good fetch from sim, write to VFS for caching + // good fetch from sim, write to VFS for caching LLVFile file(gVFS, mMeshParams.getSculptID(), LLAssetType::AT_MESH, LLVFile::WRITE); S32 offset = mOffset; @@ -2928,7 +3146,7 @@ void LLMeshSkinInfoHandler::processData(LLCore::BufferArray * /* body */, S32 /* { if ((! MESH_SKIN_INFO_PROCESS_FAILED) && gMeshRepo.mThread->skinInfoReceived(mMeshID, data, data_size)) { - //good fetch from sim, write to VFS for caching + // good fetch from sim, write to VFS for caching LLVFile file(gVFS, mMeshID, LLAssetType::AT_MESH, LLVFile::WRITE); S32 offset = mOffset; @@ -3252,7 +3470,7 @@ void LLMeshRepository::notifyLoadedMeshes() REQUEST2_LOW_WATER_MIN, REQUEST2_LOW_WATER_MAX); } - + //clean up completed upload threads for (std::vector<LLMeshUploadThread*>::iterator iter = mUploads.begin(); iter != mUploads.end(); ) { @@ -3329,7 +3547,7 @@ void LLMeshRepository::notifyLoadedMeshes() //call completed callbacks on finished decompositions mDecompThread->notifyCompleted(); - + // For major operations, attempt to get the required locks // without blocking and punt if they're not available. The // longest run of holdoffs is kept in sMaxLockHoldoffs just @@ -3348,12 +3566,12 @@ void LLMeshRepository::notifyLoadedMeshes() return; } hold_offs = 0; - + if (gAgent.getRegion()) { // Update capability urls static std::string region_name("never name a region this"); - + if (gAgent.getRegion()->getName() != region_name && gAgent.getRegion()->capabilitiesReceived()) { region_name = gAgent.getRegion()->getName(); @@ -3369,7 +3587,7 @@ void LLMeshRepository::notifyLoadedMeshes() << LL_ENDL; } } - + //popup queued error messages from background threads while (!mUploadErrorQ.empty()) { @@ -3724,7 +3942,7 @@ LLSD& LLMeshRepoThread::getMeshHeader(const LLUUID& mesh_id) void LLMeshRepository::uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures, - bool upload_skin, bool upload_joints, std::string upload_url, bool do_upload, + bool upload_skin, bool upload_joints, std::string upload_url, bool do_upload, LLHandle<LLWholeModelFeeObserver> fee_observer, LLHandle<LLWholeModelUploadObserver> upload_observer) { LLMeshUploadThread* thread = new LLMeshUploadThread(data, scale, upload_textures, upload_skin, upload_joints, upload_url, @@ -3795,37 +4013,6 @@ void LLMeshUploadThread::decomposeMeshMatrix(LLMatrix4& transformation, result_rot = quat_rotation; } -bool LLImportMaterial::operator<(const LLImportMaterial &rhs) const -{ - if (mDiffuseMap != rhs.mDiffuseMap) - { - return mDiffuseMap < rhs.mDiffuseMap; - } - - if (mDiffuseMapFilename != rhs.mDiffuseMapFilename) - { - return mDiffuseMapFilename < rhs.mDiffuseMapFilename; - } - - if (mDiffuseMapLabel != rhs.mDiffuseMapLabel) - { - return mDiffuseMapLabel < rhs.mDiffuseMapLabel; - } - - if (mDiffuseColor != rhs.mDiffuseColor) - { - return mDiffuseColor < rhs.mDiffuseColor; - } - - if (mBinding != rhs.mBinding) - { - return mBinding < rhs.mBinding; - } - - return mFullbright < rhs.mFullbright; -} - - void LLMeshRepository::updateInventory(inventory_data data) { LLMutexLock lock(mMeshMutex); @@ -4223,7 +4410,7 @@ void LLPhysicsDecomp::doDecompositionSingleHull() setMeshData(mesh, true); LLCDResult ret = decomp->buildSingleHull() ; - if(ret) + if (ret) { LL_WARNS(LOG_MESH) << "Could not execute decomposition stage when attempting to create single hull." << LL_ENDL; make_box(mCurRequest); @@ -4411,60 +4598,6 @@ void LLPhysicsDecomp::Request::setStatusMessage(const std::string& msg) mStatusMessage = msg; } -LLModelInstance::LLModelInstance(LLSD& data) -{ - mLocalMeshID = data["mesh_id"].asInteger(); - mLabel = data["label"].asString(); - mTransform.setValue(data["transform"]); - - for (U32 i = 0; i < data["material"].size(); ++i) - { - LLImportMaterial mat(data["material"][i]); - mMaterial[mat.mBinding] = mat; - } -} - - -LLSD LLModelInstance::asLLSD() -{ - LLSD ret; - - ret["mesh_id"] = mModel->mLocalID; - ret["label"] = mLabel; - ret["transform"] = mTransform.getValue(); - - U32 i = 0; - for (std::map<std::string, LLImportMaterial>::iterator iter = mMaterial.begin(); iter != mMaterial.end(); ++iter) - { - ret["material"][i++] = iter->second.asLLSD(); - } - - return ret; -} - -LLImportMaterial::LLImportMaterial(LLSD& data) -{ - mDiffuseMapFilename = data["diffuse"]["filename"].asString(); - mDiffuseMapLabel = data["diffuse"]["label"].asString(); - mDiffuseColor.setValue(data["diffuse"]["color"]); - mFullbright = data["fullbright"].asBoolean(); - mBinding = data["binding"].asString(); -} - - -LLSD LLImportMaterial::asLLSD() -{ - LLSD ret; - - ret["diffuse"]["filename"] = mDiffuseMapFilename; - ret["diffuse"]["label"] = mDiffuseMapLabel; - ret["diffuse"]["color"] = mDiffuseColor.getValue(); - ret["fullbright"] = mFullbright; - ret["binding"] = mBinding; - - return ret; -} - void LLMeshRepository::buildPhysicsMesh(LLModel::Decomposition& decomp) { decomp.mMesh.resize(decomp.mHull.size()); diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 39280bea3a..688cd01a87 100755..100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -90,54 +90,6 @@ public: } }; -class LLImportMaterial -{ -public: - LLPointer<LLViewerFetchedTexture> mDiffuseMap; - std::string mDiffuseMapFilename; - std::string mDiffuseMapLabel; - std::string mBinding; - LLColor4 mDiffuseColor; - bool mFullbright; - - bool operator<(const LLImportMaterial ¶ms) const; - - LLImportMaterial() - : mFullbright(false) - { - mDiffuseColor.set(1,1,1,1); - } - - LLImportMaterial(LLSD& data); - - LLSD asLLSD(); -}; - -class LLModelInstance -{ -public: - LLPointer<LLModel> mModel; - LLPointer<LLModel> mLOD[5]; - - std::string mLabel; - - LLUUID mMeshID; - S32 mLocalMeshID; - - LLMatrix4 mTransform; - std::map<std::string, LLImportMaterial> mMaterial; - - LLModelInstance(LLModel* model, const std::string& label, LLMatrix4& transform, std::map<std::string, LLImportMaterial>& materials) - : mModel(model), mLabel(label), mTransform(transform), mMaterial(materials) - { - mLocalMeshID = -1; - } - - LLModelInstance(LLSD& data); - - LLSD asLLSD(); -}; - class LLPhysicsDecomp : public LLThread { public: @@ -483,6 +435,8 @@ public: // Inherited from LLCore::HttpHandler virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response); + LLViewerFetchedTexture* FindViewerTexture(const LLImportMaterial& material); + private: LLHandle<LLWholeModelFeeObserver> mFeeObserverHandle; LLHandle<LLWholeModelUploadObserver> mUploadObserverHandle; diff --git a/indra/newview/llmimetypes.cpp b/indra/newview/llmimetypes.cpp index 790a184068..790a184068 100755..100644 --- a/indra/newview/llmimetypes.cpp +++ b/indra/newview/llmimetypes.cpp diff --git a/indra/newview/llmimetypes.h b/indra/newview/llmimetypes.h index ab629fd965..ab629fd965 100755..100644 --- a/indra/newview/llmimetypes.h +++ b/indra/newview/llmimetypes.h diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index ff86400a56..ff86400a56 100755..100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp diff --git a/indra/newview/llmorphview.h b/indra/newview/llmorphview.h index 318d49bba5..318d49bba5 100755..100644 --- a/indra/newview/llmorphview.h +++ b/indra/newview/llmorphview.h diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index fe562baf96..70035bcc74 100755..100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -303,7 +303,15 @@ void LLFloaterMove::onFlyButtonClick() void LLFloaterMove::setMovementMode(const EMovementMode mode) { mCurrentMode = mode; - gAgent.setFlying(MM_FLY == mode); + + if(MM_FLY == mode) + { + LLAgent::toggleFlying(); + } + else + { + gAgent.setFlying(FALSE); + } // attempts to set avatar flying can not set it real flying in some cases. // For ex. when avatar fell down & is standing up. diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index c525d9dfdb..c525d9dfdb 100755..100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 65ac11092c..3f4f2446e8 100755..100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -315,6 +315,11 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags) { LLPipeline::removeMutedAVsLights(avatarp); } + //remove agent's notifications as well + if (localmute.mType == LLMute::AGENT) + { + LLNotifications::instance().cancelByOwner(localmute.mID); + } return TRUE; } } @@ -646,6 +651,22 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c return legacy_it != mLegacyMutes.end(); } +BOOL LLMuteList::isMuted(const std::string& username, U32 flags) const +{ + mute_set_t::const_iterator mute_iter = mMutes.begin(); + while(mute_iter != mMutes.end()) + { + // can't convert "leha.test" into "LeHa TesT" so username comparison is more reliable + if (mute_iter->mType == LLMute::AGENT + && LLCacheName::buildUsername(mute_iter->mName) == username) + { + return TRUE; + } + mute_iter++; + } + return FALSE; +} + //----------------------------------------------------------------------------- // requestFromServer() //----------------------------------------------------------------------------- diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index 3e998b4f0e..4e7b6ee880 100755..100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -101,7 +101,10 @@ public: // Name is required to test against legacy text-only mutes. BOOL isMuted(const LLUUID& id, const std::string& name = LLStringUtil::null, U32 flags = 0) const; - + + // Workaround for username-based mute search, a lot of string conversions so use cautiously + BOOL isMuted(const std::string& username, U32 flags = 0) const; + // Alternate (convenience) form for places we don't need to pass the name, but do need flags BOOL isMuted(const LLUUID& id, U32 flags) const { return isMuted(id, LLStringUtil::null, flags); }; diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index 1099316a19..1099316a19 100755..100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h index 76e8551268..76e8551268 100755..100644 --- a/indra/newview/llnamebox.h +++ b/indra/newview/llnamebox.h diff --git a/indra/newview/llnameeditor.cpp b/indra/newview/llnameeditor.cpp index b3b1ff7c06..b3b1ff7c06 100755..100644 --- a/indra/newview/llnameeditor.cpp +++ b/indra/newview/llnameeditor.cpp diff --git a/indra/newview/llnameeditor.h b/indra/newview/llnameeditor.h index b8c4a6042e..b8c4a6042e 100755..100644 --- a/indra/newview/llnameeditor.h +++ b/indra/newview/llnameeditor.h diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 54e4c6c1da..5510598ae7 100755..100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -70,7 +70,7 @@ LLNameListCtrl::LLNameListCtrl(const LLNameListCtrl::Params& p) // public LLScrollListItem* LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos, - BOOL enabled, const std::string& suffix) + BOOL enabled, const std::string& suffix, const std::string& prefix) { //LL_INFOS() << "LLNameListCtrl::addNameItem " << agent_id << LL_ENDL; @@ -79,7 +79,7 @@ LLScrollListItem* LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPositi item.enabled = enabled; item.target = INDIVIDUAL; - return addNameItemRow(item, pos, suffix); + return addNameItemRow(item, pos, suffix, prefix); } // virtual, public @@ -130,8 +130,14 @@ BOOL LLNameListCtrl::handleDragAndDrop( return handled; } -void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group) +void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group, bool is_experience) { + if(is_experience) + { + LLFloaterReg::showInstance("experience_profile", avatar_id, true); + return; + } + if (is_group) LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id)); else @@ -230,10 +236,11 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask) // Should we show a group or an avatar inspector? bool is_group = hit_item->isGroup(); + bool is_experience = hit_item->isExperience(); LLToolTip::Params params; params.background_visible( false ); - params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) ); + params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group, is_experience) ); params.delay_time(0.0f); // spawn instantly on hover params.image( icon ); params.message(""); @@ -291,10 +298,11 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p LLScrollListItem* LLNameListCtrl::addNameItemRow( const LLNameListCtrl::NameItem& name_item, EAddPosition pos, - const std::string& suffix) + const std::string& suffix, + const std::string& prefix) { LLUUID id = name_item.value().asUUID(); - LLNameListItem* item = new LLNameListItem(name_item,name_item.target() == GROUP); + LLNameListItem* item = new LLNameListItem(name_item,name_item.target() == GROUP, name_item.target() == EXPERIENCE); if (!item) return NULL; @@ -352,6 +360,8 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow( } break; } + case EXPERIENCE: + // just use supplied name default: break; } @@ -365,7 +375,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow( LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { - cell->setValue(fullname); + cell->setValue(prefix + fullname); } dirtyColumns(); diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 2c40eeaaca..19ce3c7aed 100755..100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -44,22 +44,30 @@ class LLNameListItem : public LLScrollListItem, public LLHandleProvider<LLNameLi public: bool isGroup() const { return mIsGroup; } void setIsGroup(bool is_group) { mIsGroup = is_group; } + bool isExperience() const { return mIsExperience; } + void setIsExperience(bool is_experience) { mIsExperience = is_experience; } protected: friend class LLNameListCtrl; LLNameListItem( const LLScrollListItem::Params& p ) - : LLScrollListItem(p), mIsGroup(false) + : LLScrollListItem(p), mIsGroup(false), mIsExperience(false) { } LLNameListItem( const LLScrollListItem::Params& p, bool is_group ) - : LLScrollListItem(p), mIsGroup(is_group) + : LLScrollListItem(p), mIsGroup(is_group), mIsExperience(false) + { + } + + LLNameListItem( const LLScrollListItem::Params& p, bool is_group, bool is_experience ) + : LLScrollListItem(p), mIsGroup(is_group), mIsExperience(is_experience) { } private: bool mIsGroup; + bool mIsExperience; }; @@ -73,7 +81,8 @@ public: { INDIVIDUAL, GROUP, - SPECIAL + SPECIAL, + EXPERIENCE } ENameType; // provide names for enums @@ -129,11 +138,12 @@ public: // Add a user to the list by name. It will be added, the name // requested from the cache, and updated as necessary. LLScrollListItem* addNameItem(const LLUUID& agent_id, EAddPosition pos = ADD_BOTTOM, - BOOL enabled = TRUE, const std::string& suffix = LLStringUtil::null); + BOOL enabled = TRUE, const std::string& suffix = LLStringUtil::null, const std::string& prefix = LLStringUtil::null); LLScrollListItem* addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM); /*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); - LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, const std::string& suffix = LLStringUtil::null); + LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, const std::string& suffix = LLStringUtil::null, + const std::string& prefix = LLStringUtil::null); // Add a user to the list by name. It will be added, the name // requested from the cache, and updated as necessary. @@ -159,7 +169,7 @@ public: /*virtual*/ void mouseOverHighlightNthItem( S32 index ); private: - void showInspector(const LLUUID& avatar_id, bool is_group); + void showInspector(const LLUUID& avatar_id, bool is_group, bool is_experience = false); void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, std::string suffix, LLHandle<LLNameListItem> item); private: diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 8c4849d28d..8c4849d28d 100755..100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 7878bab24e..7878bab24e 100755..100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index d7e7f13e87..d7e7f13e87 100755..100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h index 1f7e7d68c6..1f7e7d68c6 100755..100644 --- a/indra/newview/llnetmap.h +++ b/indra/newview/llnetmap.h diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp index 58a9b01a45..58a9b01a45 100755..100644 --- a/indra/newview/llnotificationalerthandler.cpp +++ b/indra/newview/llnotificationalerthandler.cpp diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp index 8fef102cf8..8fef102cf8 100755..100644 --- a/indra/newview/llnotificationgrouphandler.cpp +++ b/indra/newview/llnotificationgrouphandler.cpp diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index bff4efa9ea..3e7f05b5e1 100755..100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -169,7 +169,9 @@ public: virtual ~LLScriptHandler(); virtual void onDelete(LLNotificationPtr p); + virtual void onChange(LLNotificationPtr p); virtual bool processNotification(const LLNotificationPtr& p); + virtual void addToastWithNotification(const LLNotificationPtr& p); protected: virtual void onDeleteToast(LLToast* toast); diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index a078889d46..a078889d46 100755..100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp diff --git a/indra/newview/llnotificationhinthandler.cpp b/indra/newview/llnotificationhinthandler.cpp index f40369a2e0..f40369a2e0 100755..100644 --- a/indra/newview/llnotificationhinthandler.cpp +++ b/indra/newview/llnotificationhinthandler.cpp diff --git a/indra/newview/llnotificationlistitem.cpp b/indra/newview/llnotificationlistitem.cpp new file mode 100644 index 0000000000..8cdc2d7c0b --- /dev/null +++ b/indra/newview/llnotificationlistitem.cpp @@ -0,0 +1,645 @@ +/** + * @file llnotificationlistitem.cpp + * @brief + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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 "llnotificationlistitem.h" + +#include "llagent.h" +#include "llgroupactions.h" +#include "llinventoryicon.h" +#include "llwindow.h" +#include "v4color.h" +#include "lltrans.h" +#include "lluicolortable.h" +#include "message.h" +#include "llnotificationsutil.h" +#include <boost/regex.hpp> + +LLNotificationListItem::LLNotificationListItem(const Params& p) : LLPanel(p), + mParams(p), + mTitleBox(NULL), + mExpandBtn(NULL), + mCondenseBtn(NULL), + mCloseBtn(NULL), + mCondensedViewPanel(NULL), + mExpandedViewPanel(NULL), + mCondensedHeight(0), + mExpandedHeight(0), + mExpandedHeightResize(0), + mExpanded(false) +{ + mNotificationName = p.notification_name; +} + +BOOL LLNotificationListItem::postBuild() +{ + BOOL rv = LLPanel::postBuild(); + mTitleBox = getChild<LLTextBox>("notification_title"); + mTitleBoxExp = getChild<LLTextBox>("notification_title_exp"); + mNoticeTextExp = getChild<LLChatEntry>("notification_text_exp"); + + mTimeBox = getChild<LLTextBox>("notification_time"); + mTimeBoxExp = getChild<LLTextBox>("notification_time_exp"); + mExpandBtn = getChild<LLButton>("expand_btn"); + mCondenseBtn = getChild<LLButton>("condense_btn"); + mCloseBtn = getChild<LLButton>("close_btn"); + mCloseBtnExp = getChild<LLButton>("close_expanded_btn"); + + mTitleBox->setValue(mParams.title); + mTitleBoxExp->setValue(mParams.title); + mNoticeTextExp->setValue(mParams.title); + mNoticeTextExp->setEnabled(FALSE); + mNoticeTextExp->setTextExpandedCallback(boost::bind(&LLNotificationListItem::reshapeNotification, this)); + + mTitleBox->setContentTrusted(false); + mTitleBoxExp->setContentTrusted(false); + mNoticeTextExp->setContentTrusted(false); + + mTimeBox->setValue(buildNotificationDate(mParams.time_stamp)); + mTimeBoxExp->setValue(buildNotificationDate(mParams.time_stamp)); + + mExpandBtn->setClickedCallback(boost::bind(&LLNotificationListItem::onClickExpandBtn,this)); + mCondenseBtn->setClickedCallback(boost::bind(&LLNotificationListItem::onClickCondenseBtn,this)); + + //mCloseBtn and mCloseExpandedBtn share the same callback + mCloseBtn->setClickedCallback(boost::bind(&LLNotificationListItem::onClickCloseBtn,this)); + mCloseBtnExp->setClickedCallback(boost::bind(&LLNotificationListItem::onClickCloseBtn,this)); + + mCondensedViewPanel = getChild<LLPanel>("layout_panel_condensed_view"); + mExpandedViewPanel = getChild<LLPanel>("layout_panel_expanded_view"); + + std::string expanded_height_str = getString("item_expanded_height"); + std::string condensed_height_str = getString("item_condensed_height"); + + mExpandedHeight = (S32)atoi(expanded_height_str.c_str()); + mCondensedHeight = (S32)atoi(condensed_height_str.c_str()); + + setExpanded(FALSE); + + return rv; +} + +LLNotificationListItem::~LLNotificationListItem() +{ +} + +//static +std::string LLNotificationListItem::buildNotificationDate(const LLDate& time_stamp, ETimeType time_type) +{ + std::string timeStr; + switch(time_type) + { + case Local: + timeStr = "[" + LLTrans::getString("LTimeMthNum") + "]/[" + +LLTrans::getString("LTimeDay")+"]/[" + +LLTrans::getString("LTimeYear")+"] [" + +LLTrans::getString("LTimeHour")+"]:[" + +LLTrans::getString("LTimeMin")+ "]"; + break; + case UTC: + timeStr = "[" + LLTrans::getString("UTCTimeMth") + "]/[" + +LLTrans::getString("UTCTimeDay")+"]/[" + +LLTrans::getString("UTCTimeYr")+"] [" + +LLTrans::getString("UTCTimeHr")+"]:[" + +LLTrans::getString("UTCTimeMin")+"] [" + +LLTrans::getString("UTCTimeTimezone")+"]"; + break; + case SLT: + default: + timeStr = "[" + LLTrans::getString("TimeMonth") + "]/[" + +LLTrans::getString("TimeDay")+"]/[" + +LLTrans::getString("TimeYear")+"] [" + +LLTrans::getString("TimeHour")+"]:[" + +LLTrans::getString("TimeMin")+"]"; + break; + } + LLSD substitution; + substitution["datetime"] = time_stamp; + LLStringUtil::format(timeStr, substitution); + return timeStr; +} + +void LLNotificationListItem::onClickCloseBtn() +{ + mOnItemClose(this); + close(); +} + +BOOL LLNotificationListItem::handleMouseUp(S32 x, S32 y, MASK mask) +{ + BOOL res = LLPanel::handleMouseUp(x, y, mask); + mOnItemClick(this); + return res; +} + +void LLNotificationListItem::onMouseEnter(S32 x, S32 y, MASK mask) +{ + mCondensedViewPanel->setTransparentColor(LLUIColorTable::instance().getColor( "ScrollHoveredColor" )); + mExpandedViewPanel->setTransparentColor(LLUIColorTable::instance().getColor( "ScrollHoveredColor" )); +} + +void LLNotificationListItem::onMouseLeave(S32 x, S32 y, MASK mask) +{ + mCondensedViewPanel->setTransparentColor(LLUIColorTable::instance().getColor( "SysWellItemUnselected" )); + mExpandedViewPanel->setTransparentColor(LLUIColorTable::instance().getColor( "SysWellItemUnselected" )); +} + +//static +LLNotificationListItem* LLNotificationListItem::create(const Params& p) +{ + if (LLNotificationListItem::getGroupInviteTypes().count(p.notification_name)) + { + return new LLGroupInviteNotificationListItem(p); + } + else if (LLNotificationListItem::getGroupNoticeTypes().count(p.notification_name)) + { + return new LLGroupNoticeNotificationListItem(p); + } + else if (LLNotificationListItem::getTransactionTypes().count(p.notification_name)) + { + return new LLTransactionNotificationListItem(p); + } + return new LLSystemNotificationListItem(p); +} + +//static +std::set<std::string> LLNotificationListItem::getGroupInviteTypes() +{ + return LLGroupInviteNotificationListItem::getTypes(); +} + + +std::set<std::string> LLNotificationListItem::getGroupNoticeTypes() +{ + return LLGroupNoticeNotificationListItem::getTypes(); +} + +//static +std::set<std::string> LLNotificationListItem::getTransactionTypes() +{ + return LLTransactionNotificationListItem::getTypes(); +} + +void LLNotificationListItem::onClickExpandBtn() +{ + setExpanded(TRUE); +} + +void LLNotificationListItem::onClickCondenseBtn() +{ + setExpanded(FALSE); +} + +void LLNotificationListItem::reshapeNotification() +{ + if(mExpanded) + { + S32 width = this->getRect().getWidth(); + this->reshape(width, mNoticeTextExp->getRect().getHeight() + mExpandedHeight, FALSE); + } +} + +void LLNotificationListItem::setExpanded(BOOL value) +{ + mCondensedViewPanel->setVisible(!value); + mExpandedViewPanel->setVisible(value); + S32 width = this->getRect().getWidth(); + + if (value) + { + this->reshape(width, mNoticeTextExp->getRect().getHeight() + mExpandedHeight, FALSE); + } + else + { + this->reshape(width, mCondensedHeight, FALSE); + } + mExpanded = value; + +} + +std::set<std::string> LLGroupInviteNotificationListItem::getTypes() +{ + std::set<std::string> types; + types.insert("JoinGroup"); + return types; +} + +std::set<std::string> LLGroupNoticeNotificationListItem::getTypes() +{ + std::set<std::string> types; + types.insert("GroupNotice"); + return types; +} + +std::set<std::string> LLTransactionNotificationListItem::getTypes() +{ + std::set<std::string> types; + types.insert("PaymentReceived"); + types.insert("PaymentSent"); + return types; +} + +LLGroupNotificationListItem::LLGroupNotificationListItem(const Params& p) + : LLNotificationListItem(p), + mSenderOrFeeBox(NULL) +{ +} + +LLGroupInviteNotificationListItem::LLGroupInviteNotificationListItem(const Params& p) + : LLGroupNotificationListItem(p) +{ + buildFromFile("panel_notification_list_item.xml"); +} + +BOOL LLGroupInviteNotificationListItem::postBuild() +{ + BOOL rv = LLGroupNotificationListItem::postBuild(); + setFee(mParams.fee); + mInviteButtonPanel = getChild<LLPanel>("button_panel"); + mInviteButtonPanel->setVisible(TRUE); + mJoinBtn = getChild<LLButton>("join_btn"); + mDeclineBtn = getChild<LLButton>("decline_btn"); + mInfoBtn = getChild<LLButton>("info_btn"); + + //invitation with any non-default group role, doesn't have newline characters at the end unlike simple invitations + std::string invitation_desc = mNoticeTextExp->getValue().asString(); + boost::regex pattern = boost::regex("\n\n$", boost::regex::perl|boost::regex::icase); + boost::match_results<std::string::const_iterator> matches; + if(!boost::regex_search(invitation_desc, matches, pattern)) + { + invitation_desc += "\n\n"; + mNoticeTextExp->setValue(invitation_desc); + } + + mJoinBtn->setClickedCallback(boost::bind(&LLGroupInviteNotificationListItem::onClickJoinBtn,this)); + mDeclineBtn->setClickedCallback(boost::bind(&LLGroupInviteNotificationListItem::onClickDeclineBtn,this)); + mInfoBtn->setClickedCallback(boost::bind(&LLGroupInviteNotificationListItem::onClickInfoBtn,this)); + + std::string expanded_height_resize_str = getString("expanded_height_resize_for_attachment"); + mExpandedHeightResize = (S32)atoi(expanded_height_resize_str.c_str()); + + return rv; +} + +void LLGroupInviteNotificationListItem::onClickJoinBtn() +{ + if (!gAgent.canJoinGroups()) + { + LLNotificationsUtil::add("JoinedTooManyGroups"); + return; + } + + if(mParams.fee > 0) + { + LLSD args; + args["COST"] = llformat("%d", mParams.fee); + // Set the fee for next time to 0, so that we don't keep + // asking about a fee. + LLSD next_payload; + next_payload["group_id"]= mParams.group_id; + next_payload["transaction_id"]= mParams.transaction_id; + next_payload["fee"] = 0; + LLNotificationsUtil::add("JoinGroupCanAfford", args, next_payload); + } + else + { + send_improved_im(mParams.group_id, + std::string("name"), + std::string("message"), + IM_ONLINE, + IM_GROUP_INVITATION_ACCEPT, + mParams.transaction_id); + } + LLNotificationListItem::onClickCloseBtn(); +} + +void LLGroupInviteNotificationListItem::onClickDeclineBtn() +{ + send_improved_im(mParams.group_id, + std::string("name"), + std::string("message"), + IM_ONLINE, + IM_GROUP_INVITATION_DECLINE, + mParams.transaction_id); + LLNotificationListItem::onClickCloseBtn(); +} + +void LLGroupInviteNotificationListItem::onClickInfoBtn() +{ + LLGroupActions::show(mParams.group_id); +} + +void LLGroupInviteNotificationListItem::setFee(S32 fee) +{ + LLStringUtil::format_map_t string_args; + string_args["[GROUP_FEE]"] = llformat("%d", fee); + std::string fee_text = getString("group_fee_text", string_args); + mSenderOrFeeBox->setValue(fee_text); + mSenderOrFeeBoxExp->setValue(fee_text); + mSenderOrFeeBox->setVisible(TRUE); + mSenderOrFeeBoxExp->setVisible(TRUE); +} + +LLGroupNoticeNotificationListItem::LLGroupNoticeNotificationListItem(const Params& p) + : LLGroupNotificationListItem(p), + mAttachmentPanel(NULL), + mAttachmentTextBox(NULL), + mAttachmentIcon(NULL), + mAttachmentIconExp(NULL), + mInventoryOffer(NULL) +{ + if (mParams.inventory_offer.isDefined()) + { + mInventoryOffer = new LLOfferInfo(mParams.inventory_offer); + } + + buildFromFile("panel_notification_list_item.xml"); +} + +LLGroupNoticeNotificationListItem::~LLGroupNoticeNotificationListItem() +{ + LLGroupMgr::getInstance()->removeObserver(this); +} + +BOOL LLGroupNoticeNotificationListItem::postBuild() +{ + BOOL rv = LLGroupNotificationListItem::postBuild(); + + mAttachmentTextBox = getChild<LLTextBox>("attachment_text"); + mAttachmentIcon = getChild<LLIconCtrl>("attachment_icon"); + mAttachmentIconExp = getChild<LLIconCtrl>("attachment_icon_exp"); + mAttachmentPanel = getChild<LLPanel>("attachment_panel"); + mAttachmentPanel->setVisible(FALSE); + + + mTitleBox->setValue(mParams.subject); + mTitleBoxExp->setValue(mParams.subject); + mNoticeTextExp->setValue(mParams.message); + + mTimeBox->setValue(buildNotificationDate(mParams.time_stamp, UTC)); + mTimeBoxExp->setValue(buildNotificationDate(mParams.time_stamp, UTC)); + //Workaround: in case server timestamp is 0 - we use the time when notification was actually received + if (mParams.time_stamp.isNull()) + { + mTimeBox->setValue(buildNotificationDate(mParams.received_time, UTC)); + mTimeBoxExp->setValue(buildNotificationDate(mParams.received_time, UTC)); + } + setSender(mParams.sender); + + if (mInventoryOffer != NULL) + { + mAttachmentTextBox->setValue(mInventoryOffer->mDesc); + mAttachmentTextBox->setVisible(TRUE); + mAttachmentIcon->setVisible(TRUE); + + std::string icon_name = LLInventoryIcon::getIconName(mInventoryOffer->mType, + LLInventoryType::IT_TEXTURE); + mAttachmentIconExp->setValue(icon_name); + mAttachmentIconExp->setVisible(TRUE); + + mAttachmentTextBox->setClickedCallback(boost::bind( + &LLGroupNoticeNotificationListItem::onClickAttachment, this)); + + std::string expanded_height_resize_str = getString("expanded_height_resize_for_attachment"); + mExpandedHeightResize = (S32)atoi(expanded_height_resize_str.c_str()); + + mAttachmentPanel->setVisible(TRUE); + } + return rv; +} + +BOOL LLGroupNotificationListItem::postBuild() +{ + BOOL rv = LLNotificationListItem::postBuild(); + + mGroupIcon = getChild<LLGroupIconCtrl>("group_icon"); + mGroupIconExp = getChild<LLGroupIconCtrl>("group_icon_exp"); + mGroupNameBoxExp = getChild<LLTextBox>("group_name_exp"); + + mGroupIcon->setValue(mParams.group_id); + mGroupIconExp->setValue(mParams.group_id); + + mGroupIcon->setVisible(TRUE); + mGroupIconExp->setVisible(TRUE); + + mGroupId = mParams.group_id; + + mSenderOrFeeBox = getChild<LLTextBox>("sender_or_fee_box"); + mSenderOrFeeBoxExp = getChild<LLTextBox>("sender_or_fee_box_exp"); + + LLSD value(mParams.group_id); + setGroupId(value); + + return rv; +} + +void LLGroupNotificationListItem::changed(LLGroupChange gc) +{ + if (GC_PROPERTIES == gc) + { + updateFromCache(); + LLGroupMgr::getInstance()->removeObserver(this); + } +} + +bool LLGroupNotificationListItem::updateFromCache() +{ + LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(mGroupId); + if (!group_data) return false; + setGroupName(group_data->mName); + return true; +} + +void LLGroupNotificationListItem::setGroupId(const LLUUID& value) +{ + LLGroupMgr* gm = LLGroupMgr::getInstance(); + if (mGroupId.notNull()) + { + gm->removeObserver(this); + + + mID = mGroupId; + + // Check if cache already contains image_id for that group + if (!updateFromCache()) + { + gm->addObserver(this); + gm->sendGroupPropertiesRequest(mGroupId); + } + } +} + +void LLGroupNotificationListItem::setGroupName(std::string name) +{ + if (!name.empty()) + { + LLStringUtil::format_map_t string_args; + string_args["[GROUP_NAME]"] = llformat("%s", name.c_str()); + std::string group_box_str = getString("group_name_text", string_args); + mGroupNameBoxExp->setValue(group_box_str); + mGroupNameBoxExp->setVisible(TRUE); + } + else + { + mGroupNameBoxExp->setValue(LLStringUtil::null); + mGroupNameBoxExp->setVisible(FALSE); + } +} + +void LLGroupNoticeNotificationListItem::setSender(std::string sender) +{ + if (!sender.empty()) + { + LLStringUtil::format_map_t string_args; + string_args["[SENDER_RESIDENT]"] = llformat("%s", sender.c_str()); + std::string sender_text = getString("sender_resident_text", string_args); + mSenderOrFeeBox->setValue(sender_text); + mSenderOrFeeBoxExp->setValue(sender_text); + mSenderOrFeeBox->setVisible(TRUE); + mSenderOrFeeBoxExp->setVisible(TRUE); + } else { + mSenderOrFeeBox->setValue(LLStringUtil::null); + mSenderOrFeeBoxExp->setValue(LLStringUtil::null); + mSenderOrFeeBox->setVisible(FALSE); + mSenderOrFeeBoxExp->setVisible(FALSE); + } +} +void LLGroupNoticeNotificationListItem::close() +{ + // The group notice dialog may be an inventory offer. + // If it has an inventory save button and that button is still enabled + // Then we need to send the inventory declined message + if (mInventoryOffer != NULL) + { + mInventoryOffer->forceResponse(IOR_DECLINE); + mInventoryOffer = NULL; + } + LLGroupMgr::getInstance()->removeObserver(this); +} + +void LLGroupNoticeNotificationListItem::onClickAttachment() +{ + if (mInventoryOffer != NULL) { + mInventoryOffer->forceResponse(IOR_ACCEPT); + + static const LLUIColor textColor = LLUIColorTable::instance().getColor( + "GroupNotifyDimmedTextColor"); + mAttachmentTextBox->setColor(textColor); + mAttachmentIconExp->setEnabled(FALSE); + + //if attachment isn't openable - notify about saving + if (!isAttachmentOpenable(mInventoryOffer->mType)) { + LLNotifications::instance().add("AttachmentSaved", LLSD(), LLSD()); + } + + mInventoryOffer = NULL; + } +} + +//static +bool LLGroupNoticeNotificationListItem::isAttachmentOpenable(LLAssetType::EType type) +{ + switch (type) + { + case LLAssetType::AT_LANDMARK: + case LLAssetType::AT_NOTECARD: + case LLAssetType::AT_IMAGE_JPEG: + case LLAssetType::AT_IMAGE_TGA: + case LLAssetType::AT_TEXTURE: + case LLAssetType::AT_TEXTURE_TGA: + return true; + default: + return false; + } +} + +LLTransactionNotificationListItem::LLTransactionNotificationListItem(const Params& p) + : LLNotificationListItem(p), + mAvatarIcon(NULL) +{ + buildFromFile("panel_notification_list_item.xml"); +} + +BOOL LLTransactionNotificationListItem::postBuild() +{ + BOOL rv = LLNotificationListItem::postBuild(); + mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAvatarIconExp = getChild<LLAvatarIconCtrl>("avatar_icon_exp"); + mAvatarIcon->setValue("System_Notification"); + mAvatarIconExp->setValue("System_Notification"); + + mAvatarIcon->setVisible(TRUE); + mAvatarIconExp->setVisible(TRUE); + if((GOVERNOR_LINDEN_ID == mParams.paid_to_id) || + (GOVERNOR_LINDEN_ID == mParams.paid_from_id)) + { + return rv; + } + + if (mParams.notification_name == "PaymentReceived") + { + mAvatarIcon->setValue(mParams.paid_from_id); + mAvatarIconExp->setValue(mParams.paid_from_id); + } + else if (mParams.notification_name == "PaymentSent") + { + mAvatarIcon->setValue(mParams.paid_to_id); + mAvatarIconExp->setValue(mParams.paid_to_id); + } + + return rv; +} + +LLSystemNotificationListItem::LLSystemNotificationListItem(const Params& p) + : LLNotificationListItem(p), + mSystemNotificationIcon(NULL), + mIsCaution(false) +{ + buildFromFile("panel_notification_list_item.xml"); + mIsCaution = p.notification_priority >= NOTIFICATION_PRIORITY_HIGH; + if (mIsCaution) + { + mTitleBox->setColor(LLUIColorTable::instance().getColor("NotifyCautionBoxColor")); + mTitleBoxExp->setColor(LLUIColorTable::instance().getColor("NotifyCautionBoxColor")); + mNoticeTextExp->setReadOnlyColor(LLUIColorTable::instance().getColor("NotifyCautionBoxColor")); + mTimeBox->setColor(LLUIColorTable::instance().getColor("NotifyCautionBoxColor")); + mTimeBoxExp->setColor(LLUIColorTable::instance().getColor("NotifyCautionBoxColor")); + } +} + +BOOL LLSystemNotificationListItem::postBuild() +{ + BOOL rv = LLNotificationListItem::postBuild(); + mSystemNotificationIcon = getChild<LLIconCtrl>("system_notification_icon"); + mSystemNotificationIconExp = getChild<LLIconCtrl>("system_notification_icon_exp"); + if (mSystemNotificationIcon) + mSystemNotificationIcon->setVisible(TRUE); + if (mSystemNotificationIconExp) + mSystemNotificationIconExp->setVisible(TRUE); + return rv; +} diff --git a/indra/newview/llnotificationlistitem.h b/indra/newview/llnotificationlistitem.h new file mode 100644 index 0000000000..9a4ce2be4b --- /dev/null +++ b/indra/newview/llnotificationlistitem.h @@ -0,0 +1,250 @@ +/** + * @file llnotificationlistitem.h + * @brief + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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_LLNOTIFICATIONLISTITEM_H +#define LL_LLNOTIFICATIONLISTITEM_H + +#include "llpanel.h" +#include "lllayoutstack.h" +#include "lltextbox.h" +#include "llviewertexteditor.h" +#include "llbutton.h" +#include "llgroupiconctrl.h" +#include "llavatariconctrl.h" +#include "llchatentry.h" +#include "llgroupmgr.h" +#include "llviewermessage.h" + +#include <string> + +class LLNotificationListItem : public LLPanel +{ +public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + LLUUID notification_id; + LLUUID transaction_id; + LLUUID group_id; + LLUUID paid_from_id; + LLUUID paid_to_id; + std::string notification_name; + std::string title; + std::string subject; + std::string message; + std::string sender; + S32 fee; + LLDate time_stamp; + LLDate received_time; + LLSD inventory_offer; + e_notification_priority notification_priority; + Params() {}; + }; + + static LLNotificationListItem* create(const Params& p); + + static std::set<std::string> getTransactionTypes(); + static std::set<std::string> getGroupInviteTypes(); + static std::set<std::string> getGroupNoticeTypes(); + + // title + void setTitle( std::string title ); + + // get item's ID + LLUUID getID() { return mParams.notification_id; } + std::string& getTitle() { return mTitle; } + std::string& getNotificationName() { return mNotificationName; } + + // handlers + virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); + virtual void onMouseEnter(S32 x, S32 y, MASK mask); + virtual void onMouseLeave(S32 x, S32 y, MASK mask); + + //callbacks + typedef boost::function<void (LLNotificationListItem* item)> item_callback_t; + typedef boost::signals2::signal<void (LLNotificationListItem* item)> item_signal_t; + item_signal_t mOnItemClose; + item_signal_t mOnItemClick; + boost::signals2::connection setOnItemCloseCallback(item_callback_t cb) { return mOnItemClose.connect(cb); } + boost::signals2::connection setOnItemClickCallback(item_callback_t cb) { return mOnItemClick.connect(cb); } + + virtual bool showPopup() { return true; } + void setExpanded(BOOL value); + virtual BOOL postBuild(); + void reshapeNotification(); + + typedef enum e_time_type + { + SLT = 1, + Local = 2, + UTC = 3, + }ETimeType; + +protected: + LLNotificationListItem(const Params& p); + virtual ~LLNotificationListItem(); + + static std::string buildNotificationDate(const LLDate& time_stamp, ETimeType time_type = SLT); + void onClickExpandBtn(); + void onClickCondenseBtn(); + void onClickCloseBtn(); + virtual void close() {}; + + Params mParams; + LLTextBox* mTitleBox; + LLTextBox* mTitleBoxExp; + LLChatEntry* mNoticeTextExp; + LLTextBox* mTimeBox; + LLTextBox* mTimeBoxExp; + LLButton* mExpandBtn; + LLButton* mCondenseBtn; + LLButton* mCloseBtn; + LLButton* mCloseBtnExp; + LLPanel* mCondensedViewPanel; + LLPanel* mExpandedViewPanel; + std::string mTitle; + std::string mNotificationName; + S32 mCondensedHeight; + S32 mExpandedHeight; + S32 mExpandedHeightResize; + bool mExpanded; +}; + +class LLGroupNotificationListItem + : public LLNotificationListItem, public LLGroupMgrObserver +{ +public: + virtual BOOL postBuild(); + + void setGroupId(const LLUUID& value); + // LLGroupMgrObserver observer trigger + virtual void changed(LLGroupChange gc); + + friend class LLNotificationListItem; +protected: + LLGroupNotificationListItem(const Params& p); + + LLGroupIconCtrl* mGroupIcon; + LLGroupIconCtrl* mGroupIconExp; + LLUUID mGroupId; + LLTextBox* mSenderOrFeeBox; + LLTextBox* mSenderOrFeeBoxExp; + LLTextBox* mGroupNameBoxExp; + +private: + LLGroupNotificationListItem(const LLGroupNotificationListItem &); + LLGroupNotificationListItem & operator=(LLGroupNotificationListItem &); + + void setGroupName(std::string name); + bool updateFromCache(); +}; + +class LLGroupInviteNotificationListItem + : public LLGroupNotificationListItem +{ +public: + static std::set<std::string> getTypes(); + virtual BOOL postBuild(); + + /*virtual*/ bool showPopup() { return false; } + +private: + friend class LLNotificationListItem; + LLGroupInviteNotificationListItem(const Params& p); + LLGroupInviteNotificationListItem(const LLGroupInviteNotificationListItem &); + LLGroupInviteNotificationListItem & operator=(LLGroupInviteNotificationListItem &); + + void setFee(S32 fee); + + void onClickJoinBtn(); + void onClickDeclineBtn(); + void onClickInfoBtn(); + + LLPanel* mInviteButtonPanel; + LLButton* mJoinBtn; + LLButton* mDeclineBtn; + LLButton* mInfoBtn; +}; + +class LLGroupNoticeNotificationListItem + : public LLGroupNotificationListItem +{ +public: + ~LLGroupNoticeNotificationListItem(); + static std::set<std::string> getTypes(); + virtual BOOL postBuild(); + + /*virtual*/ bool showPopup() { return false; } + +private: + friend class LLNotificationListItem; + LLGroupNoticeNotificationListItem(const Params& p); + LLGroupNoticeNotificationListItem(const LLGroupNoticeNotificationListItem &); + LLGroupNoticeNotificationListItem & operator=(LLGroupNoticeNotificationListItem &); + + void setSender(std::string sender); + void onClickAttachment(); + /*virtual*/ void close(); + + static bool isAttachmentOpenable(LLAssetType::EType); + + LLPanel* mAttachmentPanel; + LLTextBox* mAttachmentTextBox; + LLIconCtrl* mAttachmentIcon; + LLIconCtrl* mAttachmentIconExp; + LLOfferInfo* mInventoryOffer; +}; + +class LLTransactionNotificationListItem : public LLNotificationListItem +{ +public: + static std::set<std::string> getTypes(); + virtual BOOL postBuild(); +private: + friend class LLNotificationListItem; + LLTransactionNotificationListItem(const Params& p); + LLTransactionNotificationListItem(const LLTransactionNotificationListItem &); + LLTransactionNotificationListItem & operator=(LLTransactionNotificationListItem &); + LLAvatarIconCtrl* mAvatarIcon; + LLAvatarIconCtrl* mAvatarIconExp; +}; + +class LLSystemNotificationListItem : public LLNotificationListItem +{ +public: + virtual BOOL postBuild(); +private: + friend class LLNotificationListItem; + LLSystemNotificationListItem(const Params& p); + LLSystemNotificationListItem(const LLSystemNotificationListItem &); + LLSystemNotificationListItem & operator=(LLSystemNotificationListItem &); + LLIconCtrl* mSystemNotificationIcon; + LLIconCtrl* mSystemNotificationIconExp; + bool mIsCaution; +}; + +#endif // LL_LLNOTIFICATIONLISTITEM_H + + diff --git a/indra/newview/llnotificationlistview.cpp b/indra/newview/llnotificationlistview.cpp new file mode 100644 index 0000000000..9dce68c9c6 --- /dev/null +++ b/indra/newview/llnotificationlistview.cpp @@ -0,0 +1,44 @@ +/** + * @file llnotificationlistview.cpp + * @brief + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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" + +#include "llnotificationlistview.h" + +static const LLDefaultChildRegistry::Register<LLNotificationListView> notification_list_view("notification_list_view"); + +LLNotificationListView::LLNotificationListView(const Params& p) + : LLFlatListView(p) +{} + +LLNotificationListView::~LLNotificationListView() +{} + +bool LLNotificationListView::addNotification(LLNotificationListItem * item) +{ + return LLFlatListView::addItem(item, item->getID(), ADD_TOP); +} + +//EOF diff --git a/indra/newview/llnotificationlistview.h b/indra/newview/llnotificationlistview.h new file mode 100644 index 0000000000..307ad87789 --- /dev/null +++ b/indra/newview/llnotificationlistview.h @@ -0,0 +1,49 @@ +/** + * @file llnotificationlistview.h + * @brief LLNotificationListView class to support notifications list contained in enclosing floater. + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2015, 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_LLNOTIFICATIONLISTVIEW_H +#define LL_LLNOTIFICATIONLISTVIEW_H + +#include "llflatlistview.h" +#include "llnotificationlistitem.h" + +/** + * Notification list + */ +class LLNotificationListView : public LLFlatListView +{ + LOG_CLASS(LLNotificationListView); +public: + struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> {}; + + LLNotificationListView(const Params& p); + ~LLNotificationListView(); + friend class LLUICtrlFactory; + + virtual bool addNotification(LLNotificationListItem * item); +}; + +#endif diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 152581c5a0..152581c5a0 100755..100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index f37c6b833c..f37c6b833c 100755..100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index 2657b84ef3..2657b84ef3 100755..100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index a3b15931c6..7acb2f9e90 100755..100644 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -68,6 +68,30 @@ void LLScriptHandler::initChannel() } //-------------------------------------------------------------------------- +void LLScriptHandler::addToastWithNotification(const LLNotificationPtr& notification) +{ + LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification); + + LLToast::Params p; + p.notif_id = notification->getID(); + p.notification = notification; + p.panel = notify_box; + p.on_delete_toast = boost::bind(&LLScriptHandler::onDeleteToast, this, _1); + if(gAgent.isDoNotDisturb()) + { + p.force_show = notification->getName() == "SystemMessage" + || notification->getName() == "GodMessage" + || notification->getPriority() >= NOTIFICATION_PRIORITY_HIGH; + } + + LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get()); + if(channel) + { + channel->addToast(p); + } +} + +//-------------------------------------------------------------------------- bool LLScriptHandler::processNotification(const LLNotificationPtr& notification) { if(mChannel.isDead()) @@ -92,42 +116,33 @@ bool LLScriptHandler::processNotification(const LLNotificationPtr& notification) } else if (notification->canShowToast()) { - LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification); - - LLToast::Params p; - p.notif_id = notification->getID(); - p.notification = notification; - p.panel = notify_box; - p.on_delete_toast = boost::bind(&LLScriptHandler::onDeleteToast, this, _1); - if(gAgent.isDoNotDisturb()) - { - p.force_show = notification->getName() == "SystemMessage" - || notification->getName() == "GodMessage" - || notification->getPriority() >= NOTIFICATION_PRIORITY_HIGH; - } - - LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get()); - if(channel) - { - channel->addToast(p); - } + addToastWithNotification(notification); } return false; } +void LLScriptHandler::onChange( LLNotificationPtr notification ) +{ + LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get()); + if (channel) + { + channel->removeToastByNotificationID(notification->getID()); + addToastWithNotification(notification); + } +} void LLScriptHandler::onDelete( LLNotificationPtr notification ) - { +{ if(notification->hasFormElements() && !notification->canShowToast()) - { - LLScriptFloaterManager::getInstance()->onRemoveNotification(notification->getID()); - } - else - { - mChannel.get()->removeToastByNotificationID(notification->getID()); - } + { + LLScriptFloaterManager::getInstance()->onRemoveNotification(notification->getID()); } + else + { + mChannel.get()->removeToastByNotificationID(notification->getID()); + } +} //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp index 3418b33d37..3418b33d37 100755..100644 --- a/indra/newview/llnotificationstorage.cpp +++ b/indra/newview/llnotificationstorage.cpp diff --git a/indra/newview/llnotificationstorage.h b/indra/newview/llnotificationstorage.h index 21d7123747..21d7123747 100755..100644 --- a/indra/newview/llnotificationstorage.h +++ b/indra/newview/llnotificationstorage.h diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 4ca961c1f9..4ca961c1f9 100755..100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp index 5bb69367aa..5bb69367aa 100755..100644 --- a/indra/newview/lloutfitobserver.cpp +++ b/indra/newview/lloutfitobserver.cpp diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h index 87d4b0c998..87d4b0c998 100755..100644 --- a/indra/newview/lloutfitobserver.h +++ b/indra/newview/lloutfitobserver.h diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 883221382c..883221382c 100755..100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h index 2e3fb3f488..2e3fb3f488 100755..100644 --- a/indra/newview/lloutfitslist.h +++ b/indra/newview/lloutfitslist.h diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index 6c26073d5b..6c26073d5b 100755..100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h index 0682af1278..0682af1278 100755..100644 --- a/indra/newview/lloutputmonitorctrl.h +++ b/indra/newview/lloutputmonitorctrl.h diff --git a/indra/newview/llpanelappearancetab.cpp b/indra/newview/llpanelappearancetab.cpp index 8fa8867c69..8fa8867c69 100755..100644 --- a/indra/newview/llpanelappearancetab.cpp +++ b/indra/newview/llpanelappearancetab.cpp diff --git a/indra/newview/llpanelappearancetab.h b/indra/newview/llpanelappearancetab.h index 2ed6b00497..2ed6b00497 100755..100644 --- a/indra/newview/llpanelappearancetab.h +++ b/indra/newview/llpanelappearancetab.h diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 5d1b582d1f..5d1b582d1f 100755..100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index e33a850cfa..e33a850cfa 100755..100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h diff --git a/indra/newview/llpanelavatartag.cpp b/indra/newview/llpanelavatartag.cpp index 4ac818eb26..4ac818eb26 100755..100644 --- a/indra/newview/llpanelavatartag.cpp +++ b/indra/newview/llpanelavatartag.cpp diff --git a/indra/newview/llpanelavatartag.h b/indra/newview/llpanelavatartag.h index 1068ae0b4f..1068ae0b4f 100755..100644 --- a/indra/newview/llpanelavatartag.h +++ b/indra/newview/llpanelavatartag.h diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp index 81ed2963e6..81ed2963e6 100755..100644 --- a/indra/newview/llpanelblockedlist.cpp +++ b/indra/newview/llpanelblockedlist.cpp diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h index 07f0437656..07f0437656 100755..100644 --- a/indra/newview/llpanelblockedlist.h +++ b/indra/newview/llpanelblockedlist.h diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 878f1af9ef..878f1af9ef 100755..100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index cedd65c405..cedd65c405 100755..100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 451f41cd3b..451f41cd3b 100755..100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp diff --git a/indra/newview/llpanelcontents.h b/indra/newview/llpanelcontents.h index 6ecc78afa0..6ecc78afa0 100755..100644 --- a/indra/newview/llpanelcontents.h +++ b/indra/newview/llpanelcontents.h diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 19a86cdcea..b7e1b2d3a4 100755..100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -925,17 +925,17 @@ void LLPanelEditWearable::onCommitSexChange() if (!isAgentAvatarValid()) return; LLWearableType::EType type = mWearablePtr->getType(); - U32 index = gAgentWearables.getWearableIndex(mWearablePtr); - - if( !gAgentWearables.isWearableModifiable(type, index)) + U32 index; + if( !gAgentWearables.getWearableIndex(mWearablePtr, index) || + !gAgentWearables.isWearableModifiable(type, index)) { - return; + return; } LLViewerVisualParam* param = static_cast<LLViewerVisualParam*>(gAgentAvatarp->getVisualParam( "male" )); if( !param ) { - return; + return; } bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE; @@ -978,10 +978,17 @@ void LLPanelEditWearable::onTexturePickerCommit(const LLUICtrl* ctrl) } if (getWearable()) { - U32 index = gAgentWearables.getWearableIndex(getWearable()); - gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); - LLVisualParamHint::requestHintUpdates(); - gAgentAvatarp->wearableUpdated(type); + U32 index; + if (gAgentWearables.getWearableIndex(getWearable(), index)) + { + gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); + LLVisualParamHint::requestHintUpdates(); + gAgentAvatarp->wearableUpdated(type); + } + else + { + LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL; + } } } else @@ -1058,7 +1065,12 @@ void LLPanelEditWearable::saveChanges(bool force_save_as) return; } - U32 index = gAgentWearables.getWearableIndex(mWearablePtr); + U32 index; + if (!gAgentWearables.getWearableIndex(mWearablePtr, index)) + { + LL_WARNS() << "wearable not found" << LL_ENDL; + return; + } std::string new_name = mNameEditor->getText(); @@ -1156,6 +1168,8 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO targetPanel->setVisible(show); toggleTypeSpecificControls(type); + // Update type controls here + updateTypeSpecificControls(type); if (show) { @@ -1167,7 +1181,6 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO mNameEditor->setText(mWearableItem->getName()); updatePanelPickerControls(type); - updateTypeSpecificControls(type); // clear and rebuild visual param list U8 num_subparts = wearable_entry->mSubparts.size(); @@ -1574,6 +1587,12 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL LL_INFOS() << "onInvisibilityCommit, self " << this << " checkbox_ctrl " << checkbox_ctrl << LL_ENDL; + U32 index; + if (!gAgentWearables.getWearableIndex(getWearable(),index)) + { + LL_WARNS() << "wearable not found" << LL_ENDL; + return; + } bool new_invis_state = checkbox_ctrl->get(); if (new_invis_state) { @@ -1581,9 +1600,8 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL mPreviousAlphaTexture[te] = lto->getID(); LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE ); - U32 index = gAgentWearables.getWearableIndex(getWearable()); - gAgentAvatarp->setLocalTexture(te, image, FALSE, index); - gAgentAvatarp->wearableUpdated(getWearable()->getType()); + gAgentAvatarp->setLocalTexture(te, image, FALSE, index); + gAgentAvatarp->wearableUpdated(getWearable()->getType()); } else { @@ -1598,7 +1616,6 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(prev_id); if (!image) return; - U32 index = gAgentWearables.getWearableIndex(getWearable()); gAgentAvatarp->setLocalTexture(te, image, FALSE, index); gAgentAvatarp->wearableUpdated(getWearable()->getType()); } diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index 81acc31863..81acc31863 100755..100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h diff --git a/indra/newview/llpanelexperiencelisteditor.cpp b/indra/newview/llpanelexperiencelisteditor.cpp new file mode 100644 index 0000000000..7c07301762 --- /dev/null +++ b/indra/newview/llpanelexperiencelisteditor.cpp @@ -0,0 +1,264 @@ +/** + * @file llpanelexperiencelisteditor.cpp + * @brief Editor for building a list of experiences + * + * $LicenseInfo:firstyear=2014&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" + +#include "llpanelexperiencelisteditor.h" + +#include "llbutton.h" +#include "llexperiencecache.h" +#include "llfloaterexperiencepicker.h" +#include "llfloaterreg.h" +#include "llhandle.h" +#include "llnamelistctrl.h" +#include "llscrolllistctrl.h" +#include "llviewerregion.h" +#include "llagent.h" +#include "lltextbox.h" +#include "lltrans.h" + + +static LLPanelInjector<LLPanelExperienceListEditor> t_panel_experience_list_editor("panel_experience_list_editor"); + + +LLPanelExperienceListEditor::LLPanelExperienceListEditor() + :mItems(NULL) + ,mProfile(NULL) + ,mRemove(NULL) + ,mReadonly(false) + ,mMaxExperienceIDs(0) +{ +} + +BOOL LLPanelExperienceListEditor::postBuild() +{ + mItems = getChild<LLNameListCtrl>("experience_list"); + mAdd = getChild<LLButton>("btn_add"); + mRemove = getChild<LLButton>("btn_remove"); + mProfile = getChild<LLButton>("btn_profile"); + + childSetAction("btn_add", boost::bind(&LLPanelExperienceListEditor::onAdd, this)); + childSetAction("btn_remove", boost::bind(&LLPanelExperienceListEditor::onRemove, this)); + childSetAction("btn_profile", boost::bind(&LLPanelExperienceListEditor::onProfile, this)); + + mItems->setCommitCallback(boost::bind(&LLPanelExperienceListEditor::checkButtonsEnabled, this)); + + checkButtonsEnabled(); + return TRUE; +} + +const uuid_list_t& LLPanelExperienceListEditor::getExperienceIds() const +{ + return mExperienceIds; +} + +void LLPanelExperienceListEditor::addExperienceIds( const uuid_vec_t& experience_ids ) +{ + // the commented out code in this function is handled by the callback and no longer necessary! + + //mExperienceIds.insert(experience_ids.begin(), experience_ids.end()); + //onItems(); + if(!mAddedCallback.empty()) + { + for(uuid_vec_t::const_iterator it = experience_ids.begin(); it != experience_ids.end(); ++it) + { + mAddedCallback(*it); + } + } +} + + +void LLPanelExperienceListEditor::setExperienceIds( const LLSD& experience_ids ) +{ + mExperienceIds.clear(); + mExperienceIds.insert(experience_ids.beginArray(), experience_ids.endArray()); + onItems(); +} + +void LLPanelExperienceListEditor::addExperience( const LLUUID& id ) +{ + mExperienceIds.insert(id); + onItems(); +} +void LLPanelExperienceListEditor::onAdd() +{ + if(!mPicker.isDead()) + { + mPicker.markDead(); + } + + mKey.generateNewID(); + + LLFloaterExperiencePicker* picker=LLFloaterExperiencePicker::show(boost::bind(&LLPanelExperienceListEditor::addExperienceIds, this, _1), mKey, FALSE, TRUE, mFilters, mAdd); + mPicker = picker->getDerivedHandle<LLFloaterExperiencePicker>(); +} + + +void LLPanelExperienceListEditor::onRemove() +{ + // the commented out code in this function is handled by the callback and no longer necessary! + + std::vector<LLScrollListItem*> items= mItems->getAllSelected(); + std::vector<LLScrollListItem*>::iterator it = items.begin(); + for(/**/; it != items.end(); ++it) + { + if((*it) != NULL) + { + //mExperienceIds.erase((*it)->getValue()); + mRemovedCallback((*it)->getValue()); + } + } + mItems->selectFirstItem(); + checkButtonsEnabled(); + //onItems(); +} + +void LLPanelExperienceListEditor::onProfile() +{ + LLScrollListItem* item = mItems->getFirstSelected(); + if(item) + { + LLFloaterReg::showInstance("experience_profile", item->getUUID(), true); + } +} + +void LLPanelExperienceListEditor::checkButtonsEnabled() +{ + mAdd->setEnabled(!mReadonly); + int selected = mItems->getNumSelected(); + + bool remove_enabled = !mReadonly && selected>0; + if(remove_enabled && mSticky) + { + std::vector<LLScrollListItem*> items= mItems->getAllSelected(); + std::vector<LLScrollListItem*>::iterator it = items.begin(); + for(/**/; it != items.end() && remove_enabled; ++it) + { + if((*it) != NULL) + { + remove_enabled = !mSticky((*it)->getValue()); + } + } + + + } + mRemove->setEnabled(remove_enabled); + mProfile->setEnabled(selected==1); +} + +void LLPanelExperienceListEditor::onItems() +{ + mItems->deleteAllItems(); + + LLSD item; + uuid_list_t::iterator it = mExperienceIds.begin(); + for(/**/; it != mExperienceIds.end(); ++it) + { + const LLUUID& experience = *it; + item["id"]=experience; + item["target"] = LLNameListCtrl::EXPERIENCE; + LLSD& columns = item["columns"]; + columns[0]["column"] = "experience_name"; + columns[0]["value"] = getString("loading"); + mItems->addElement(item); + + LLExperienceCache::get(experience, boost::bind(&LLPanelExperienceListEditor::experienceDetailsCallback, + getDerivedHandle<LLPanelExperienceListEditor>(), _1)); + } + + + if(mItems->getItemCount() == 0) + { + mItems->setCommentText(getString("no_results")); + } + + + checkButtonsEnabled(); +} + +void LLPanelExperienceListEditor::experienceDetailsCallback( LLHandle<LLPanelExperienceListEditor> panel, const LLSD& experience ) +{ + if(!panel.isDead()) + { + panel.get()->onExperienceDetails(experience); + } +} + +void LLPanelExperienceListEditor::onExperienceDetails( const LLSD& experience ) +{ + LLScrollListItem* item = mItems->getItem(experience[LLExperienceCache::EXPERIENCE_ID]); + if(!item) + return; + + std::string experience_name_string = experience[LLExperienceCache::NAME].asString(); + if (experience_name_string.empty()) + { + experience_name_string = LLTrans::getString("ExperienceNameUntitled"); + } + + item->getColumn(0)->setValue(experience_name_string); +} + +LLPanelExperienceListEditor::~LLPanelExperienceListEditor() +{ + if(!mPicker.isDead()) + { + mPicker.get()->closeFloater(); + } +} + +void LLPanelExperienceListEditor::loading() +{ + mItems->clear(); + mItems->setCommentText( getString("loading")); +} + +void LLPanelExperienceListEditor::setReadonly( bool val ) +{ + mReadonly = val; + checkButtonsEnabled(); +} + +void LLPanelExperienceListEditor::refreshExperienceCounter() +{ + if(mMaxExperienceIDs > 0) + { + LLStringUtil::format_map_t args; + args["[EXPERIENCES]"] = llformat("%d", mItems->getItemCount()); + args["[MAXEXPERIENCES]"] = llformat("%d", mMaxExperienceIDs); + getChild<LLTextBox>("text_count")->setText(LLTrans::getString("ExperiencesCounter", args)); + } +} + +boost::signals2::connection LLPanelExperienceListEditor::setAddedCallback( list_changed_signal_t::slot_type cb ) +{ + return mAddedCallback.connect(cb); +} + +boost::signals2::connection LLPanelExperienceListEditor::setRemovedCallback( list_changed_signal_t::slot_type cb ) +{ + return mRemovedCallback.connect(cb); +} diff --git a/indra/newview/llpanelexperiencelisteditor.h b/indra/newview/llpanelexperiencelisteditor.h new file mode 100644 index 0000000000..bc9867752d --- /dev/null +++ b/indra/newview/llpanelexperiencelisteditor.h @@ -0,0 +1,101 @@ +/** +* @file llpanelexperiencelisteditor.cpp +* @brief Editor for building a list of experiences +* +* $LicenseInfo:firstyear=2014&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_LLPANELEXPERIENCELISTEDITOR_H +#define LL_LLPANELEXPERIENCELISTEDITOR_H + +#include "llpanel.h" +#include "lluuid.h" +#include <set> + +class LLNameListCtrl; +class LLScrollListCtrl; +class LLButton; +class LLFloaterExperiencePicker; + +class LLPanelExperienceListEditor : public LLPanel +{ +public: + + typedef boost::signals2::signal<void (const LLUUID&) > list_changed_signal_t; + // filter function for experiences, return true if the experience should be hidden. + typedef boost::function<bool (const LLSD&)> experience_function; + typedef std::vector<experience_function> filter_list; + typedef LLHandle<LLFloaterExperiencePicker> PickerHandle; + LLPanelExperienceListEditor(); + ~LLPanelExperienceListEditor(); + BOOL postBuild(); + + void loading(); + + const uuid_list_t& getExperienceIds()const; + void setExperienceIds(const LLSD& experience_ids); + void addExperienceIds(const uuid_vec_t& experience_ids); + + void addExperience(const LLUUID& id); + + boost::signals2::connection setAddedCallback(list_changed_signal_t::slot_type cb ); + boost::signals2::connection setRemovedCallback(list_changed_signal_t::slot_type cb ); + + bool getReadonly() const { return mReadonly; } + void setReadonly(bool val); + + void refreshExperienceCounter(); + + void addFilter(experience_function func){mFilters.push_back(func);} + void setStickyFunction(experience_function func){mSticky = func;} + U32 getMaxExperienceIDs() const { return mMaxExperienceIDs; } + void setMaxExperienceIDs(U32 val) { mMaxExperienceIDs = val; } +private: + + void onItems(); + void onRemove(); + void onAdd(); + void onProfile(); + + void checkButtonsEnabled(); + static void experienceDetailsCallback( LLHandle<LLPanelExperienceListEditor> panel, const LLSD& experience ); + void onExperienceDetails( const LLSD& experience ); + void processResponse( const LLSD& content ); + uuid_list_t mExperienceIds; + + + LLNameListCtrl* mItems; + filter_list mFilters; + LLButton* mAdd; + LLButton* mRemove; + LLButton* mProfile; + PickerHandle mPicker; + list_changed_signal_t mAddedCallback; + list_changed_signal_t mRemovedCallback; + LLUUID mKey; + bool mReadonly; + experience_function mSticky; + U32 mMaxExperienceIDs; + +}; + +#endif //LL_LLPANELEXPERIENCELISTEDITOR_H diff --git a/indra/newview/llpanelexperiencelog.cpp b/indra/newview/llpanelexperiencelog.cpp new file mode 100644 index 0000000000..30576a8d67 --- /dev/null +++ b/indra/newview/llpanelexperiencelog.cpp @@ -0,0 +1,267 @@ +/** + * @file llpanelexperiencelog.cpp + * @brief llpanelexperiencelog + * + * $LicenseInfo:firstyear=2014&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, 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" +#include "llpanelexperiencelog.h" + +#include "llexperiencelog.h" +#include "llexperiencecache.h" +#include "llbutton.h" +#include "llscrolllistctrl.h" +#include "llcombobox.h" +#include "llspinctrl.h" +#include "llcheckboxctrl.h" +#include "llfloaterreg.h" +#include "llfloaterreporter.h" +#include "llinventoryfunctions.h" + + +#define BTN_PROFILE_XP "btn_profile_xp" +#define BTN_REPORT_XP "btn_report_xp" + +static LLPanelInjector<LLPanelExperienceLog> register_experiences_panel("experience_log"); + + +LLPanelExperienceLog::LLPanelExperienceLog( ) + : mEventList(NULL) + , mPageSize(25) + , mCurrentPage(0) +{ + buildFromFile("panel_experience_log.xml"); +} + +BOOL LLPanelExperienceLog::postBuild( void ) +{ + LLExperienceLog* log = LLExperienceLog::getInstance(); + mEventList = getChild<LLScrollListCtrl>("experience_log_list"); + mEventList->setCommitCallback(boost::bind(&LLPanelExperienceLog::onSelectionChanged, this)); + mEventList->setDoubleClickCallback( boost::bind(&LLPanelExperienceLog::onProfileExperience, this)); + + getChild<LLButton>("btn_clear")->setCommitCallback(boost::bind(&LLExperienceLog::clear, log)); + getChild<LLButton>("btn_clear")->setCommitCallback(boost::bind(&LLPanelExperienceLog::refresh, this)); + + getChild<LLButton>(BTN_PROFILE_XP)->setCommitCallback(boost::bind(&LLPanelExperienceLog::onProfileExperience, this)); + getChild<LLButton>(BTN_REPORT_XP )->setCommitCallback(boost::bind(&LLPanelExperienceLog::onReportExperience, this)); + getChild<LLButton>("btn_notify" )->setCommitCallback(boost::bind(&LLPanelExperienceLog::onNotify, this)); + getChild<LLButton>("btn_next" )->setCommitCallback(boost::bind(&LLPanelExperienceLog::onNext, this)); + getChild<LLButton>("btn_prev" )->setCommitCallback(boost::bind(&LLPanelExperienceLog::onPrev, this)); + + LLCheckBoxCtrl* check = getChild<LLCheckBoxCtrl>("notify_all"); + check->set(log->getNotifyNewEvent()); + check->setCommitCallback(boost::bind(&LLPanelExperienceLog::notifyChanged, this)); + + + LLSpinCtrl* spin = getChild<LLSpinCtrl>("logsizespinner"); + spin->set(log->getMaxDays()); + spin->setCommitCallback(boost::bind(&LLPanelExperienceLog::logSizeChanged, this)); + + mPageSize = log->getPageSize(); + refresh(); + mNewEvent = LLExperienceLog::instance().addUpdateSignal(boost::bind(&LLPanelExperienceLog::refresh, this)); + return TRUE; +} + +LLPanelExperienceLog* LLPanelExperienceLog::create() +{ + return new LLPanelExperienceLog(); +} + +void LLPanelExperienceLog::refresh() +{ + S32 selected = mEventList->getFirstSelectedIndex(); + mEventList->deleteAllItems(); + const LLSD events = LLExperienceLog::instance().getEvents(); + + if(events.size() == 0) + { + mEventList->setCommentText(getString("no_events")); + return; + } + + setAllChildrenEnabled(FALSE); + + LLSD item; + bool waiting = false; + LLUUID waiting_id; + + int itemsToSkip = mPageSize*mCurrentPage; + int items = 0; + bool moreItems = false; + LLSD events_to_save = events; + if (!events.emptyMap()) + { + LLSD::map_const_iterator day = events.endMap(); + do + { + --day; + const LLSD& dayArray = day->second; + + std::string date = day->first; + if(!LLExperienceLog::instance().isNotExpired(date)) + { + events_to_save.erase(day->first); + continue; + } + int size = dayArray.size(); + if(itemsToSkip > size) + { + itemsToSkip -= size; + continue; + } + if(items >= mPageSize && size > 0) + { + moreItems = true; + break; + } + for(int i = dayArray.size() - itemsToSkip - 1; i >= 0; i--) + { + if(items >= mPageSize) + { + moreItems = true; + break; + } + const LLSD event = dayArray[i]; + LLUUID id = event[LLExperienceCache::EXPERIENCE_ID].asUUID(); + const LLSD& experience = LLExperienceCache::get(id); + if(experience.isUndefined()){ + waiting = true; + waiting_id = id; + } + if(!waiting) + { + item["id"] = event; + + LLSD& columns = item["columns"]; + columns[0]["column"] = "time"; + columns[0]["value"] = day->first+event["Time"].asString(); + columns[1]["column"] = "event"; + columns[1]["value"] = LLExperienceLog::getPermissionString(event, "ExperiencePermissionShort"); + columns[2]["column"] = "experience_name"; + columns[2]["value"] = experience[LLExperienceCache::NAME].asString(); + columns[3]["column"] = "object_name"; + columns[3]["value"] = event["ObjectName"].asString(); + mEventList->addElement(item); + } + ++items; + } + } while (day != events.beginMap()); + } + LLExperienceLog::getInstance()->setEventsToSave(events_to_save); + if(waiting) + { + mEventList->deleteAllItems(); + mEventList->setCommentText(getString("loading")); + LLExperienceCache::get(waiting_id, boost::bind(&LLPanelExperienceLog::refresh, this)); + } + else + { + setAllChildrenEnabled(TRUE); + + mEventList->setEnabled(TRUE); + getChild<LLButton>("btn_next")->setEnabled(moreItems); + getChild<LLButton>("btn_prev")->setEnabled(mCurrentPage>0); + getChild<LLButton>("btn_clear")->setEnabled(mEventList->getItemCount()>0); + if(selected<0) + { + selected = 0; + } + mEventList->selectNthItem(selected); + onSelectionChanged(); + } +} + +void LLPanelExperienceLog::onProfileExperience() +{ + LLSD event = getSelectedEvent(); + if(event.isDefined()) + { + LLFloaterReg::showInstance("experience_profile", event[LLExperienceCache::EXPERIENCE_ID].asUUID(), true); + } +} + +void LLPanelExperienceLog::onReportExperience() +{ + LLSD event = getSelectedEvent(); + if(event.isDefined()) + { + LLFloaterReporter::showFromExperience(event[LLExperienceCache::EXPERIENCE_ID].asUUID()); + } +} + +void LLPanelExperienceLog::onNotify() +{ + LLSD event = getSelectedEvent(); + if(event.isDefined()) + { + LLExperienceLog::instance().notify(event); + } +} + +void LLPanelExperienceLog::onNext() +{ + mCurrentPage++; + refresh(); +} + +void LLPanelExperienceLog::onPrev() +{ + if(mCurrentPage>0) + { + mCurrentPage--; + refresh(); + } +} + +void LLPanelExperienceLog::notifyChanged() +{ + LLExperienceLog::instance().setNotifyNewEvent(getChild<LLCheckBoxCtrl>("notify_all")->get()); +} + +void LLPanelExperienceLog::logSizeChanged() +{ + int value = (int)(getChild<LLSpinCtrl>("logsizespinner")->get()); + LLExperienceLog::instance().setMaxDays(value); + refresh(); +} + +void LLPanelExperienceLog::onSelectionChanged() +{ + bool enabled = (1 == mEventList->getNumSelected()); + getChild<LLButton>(BTN_REPORT_XP)->setEnabled(enabled); + getChild<LLButton>(BTN_PROFILE_XP)->setEnabled(enabled); + getChild<LLButton>("btn_notify")->setEnabled(enabled); +} + +LLSD LLPanelExperienceLog::getSelectedEvent() +{ + LLScrollListItem* item = mEventList->getFirstSelected(); + if(item) + { + return item->getValue(); + } + return LLSD(); +} diff --git a/indra/newview/llpanelexperiencelog.h b/indra/newview/llpanelexperiencelog.h new file mode 100644 index 0000000000..4135d9cac9 --- /dev/null +++ b/indra/newview/llpanelexperiencelog.h @@ -0,0 +1,64 @@ +/** + * @file llpanelexperiencelog.h + * @brief llpanelexperiencelog and related class definitions + * + * $LicenseInfo:firstyear=2014&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, 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_LLPANELEXPERIENCELOG_H +#define LL_LLPANELEXPERIENCELOG_H + +#include "llpanel.h" +class LLScrollListCtrl; + +class LLPanelExperienceLog + : public LLPanel +{ +public: + + LLPanelExperienceLog(); + + static LLPanelExperienceLog* create(); + + /*virtual*/ BOOL postBuild(void); + + void refresh(); +protected: + void logSizeChanged(); + void notifyChanged(); + void onNext(); + void onNotify(); + void onPrev(); + void onProfileExperience(); + void onReportExperience(); + void onSelectionChanged(); + + LLSD getSelectedEvent(); +private: + LLScrollListCtrl* mEventList; + U32 mPageSize; + U32 mCurrentPage; + boost::signals2::scoped_connection mNewEvent; +}; + +#endif // LL_LLPANELEXPERIENCELOG_H diff --git a/indra/newview/llpanelexperiencepicker.cpp b/indra/newview/llpanelexperiencepicker.cpp new file mode 100644 index 0000000000..43dc7569a4 --- /dev/null +++ b/indra/newview/llpanelexperiencepicker.cpp @@ -0,0 +1,483 @@ +/** +* @file llpanelexperiencepicker.cpp +* @brief Implementation of llpanelexperiencepicker +* @author dolphin@lindenlab.com +* +* $LicenseInfo:firstyear=2014&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2014, 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" + +#include "llpanelexperiencepicker.h" + + +#include "lllineeditor.h" +#include "llfloaterreg.h" +#include "llscrolllistctrl.h" +#include "llviewerregion.h" +#include "llagent.h" +#include "llexperiencecache.h" +#include "llslurl.h" +#include "llavatarnamecache.h" +#include "llcombobox.h" +#include "llviewercontrol.h" +#include "llfloater.h" +#include "lltrans.h" +#include <boost/regex.hpp> + +#define BTN_FIND "find" +#define BTN_OK "ok_btn" +#define BTN_CANCEL "cancel_btn" +#define BTN_PROFILE "profile_btn" +#define BTN_LEFT "left_btn" +#define BTN_RIGHT "right_btn" +#define TEXT_EDIT "edit" +#define TEXT_MATURITY "maturity" +#define LIST_RESULTS "search_results" +#define PANEL_SEARCH "search_panel" + +const static std::string columnSpace = " "; + +static LLPanelInjector<LLPanelExperiencePicker> t_panel_status("llpanelexperiencepicker"); + +class LLExperienceSearchResponder : public LLHTTPClient::Responder +{ +public: + LLUUID mQueryID; + LLHandle<LLPanelExperiencePicker> mParent; + + LLExperienceSearchResponder(const LLUUID& id, const LLHandle<LLPanelExperiencePicker>& parent) : mQueryID(id), mParent(parent) { } + +protected: + /*virtual*/ void httpSuccess() + { + if(mParent.isDead()) + return; + + LLPanelExperiencePicker* panel =mParent.get(); + if (panel) + { + panel->processResponse(mQueryID, getContent()); + } + } + + /*virtual*/ void httpFailure() + { + if(mParent.isDead()) + return; + + LLPanelExperiencePicker* panel =mParent.get(); + if (panel) + { + panel->processResponse(mQueryID, LLSD()); + } + LL_WARNS() << "experience picker failed [status:" << getStatus() << "]: " << getContent() << LL_ENDL; + } +}; + +LLPanelExperiencePicker::LLPanelExperiencePicker() + :LLPanel() +{ + buildFromFile("panel_experience_search.xml"); + setDefaultFilters(); +} + +LLPanelExperiencePicker::~LLPanelExperiencePicker() +{ +} + +BOOL LLPanelExperiencePicker::postBuild() +{ + getChild<LLLineEditor>(TEXT_EDIT)->setKeystrokeCallback( boost::bind(&LLPanelExperiencePicker::editKeystroke, this, _1, _2),NULL); + + childSetAction(BTN_FIND, boost::bind(&LLPanelExperiencePicker::onBtnFind, this)); + getChildView(BTN_FIND)->setEnabled(TRUE); + + LLScrollListCtrl* searchresults = getChild<LLScrollListCtrl>(LIST_RESULTS); + searchresults->setDoubleClickCallback( boost::bind(&LLPanelExperiencePicker::onBtnSelect, this)); + searchresults->setCommitCallback(boost::bind(&LLPanelExperiencePicker::onList, this)); + getChildView(LIST_RESULTS)->setEnabled(FALSE); + getChild<LLScrollListCtrl>(LIST_RESULTS)->setCommentText(getString("no_results")); + + childSetAction(BTN_OK, boost::bind(&LLPanelExperiencePicker::onBtnSelect, this)); + getChildView(BTN_OK)->setEnabled(FALSE); + childSetAction(BTN_CANCEL, boost::bind(&LLPanelExperiencePicker::onBtnClose, this)); + childSetAction(BTN_PROFILE, boost::bind(&LLPanelExperiencePicker::onBtnProfile, this)); + getChildView(BTN_PROFILE)->setEnabled(FALSE); + + getChild<LLComboBox>(TEXT_MATURITY)->setCurrentByIndex(2); + getChild<LLComboBox>(TEXT_MATURITY)->setCommitCallback(boost::bind(&LLPanelExperiencePicker::onMaturity, this)); + getChild<LLUICtrl>(TEXT_EDIT)->setFocus(TRUE); + + childSetAction(BTN_LEFT, boost::bind(&LLPanelExperiencePicker::onPage, this, -1)); + childSetAction(BTN_RIGHT, boost::bind(&LLPanelExperiencePicker::onPage, this, 1)); + + LLPanel* search_panel = getChild<LLPanel>(PANEL_SEARCH); + if (search_panel) + { + // Start searching when Return is pressed in the line editor. + search_panel->setDefaultBtn(BTN_FIND); + } + return TRUE; +} + +void LLPanelExperiencePicker::editKeystroke( class LLLineEditor* caller, void* user_data ) +{ + getChildView(BTN_FIND)->setEnabled(true); +} + +void LLPanelExperiencePicker::onBtnFind() +{ + mCurrentPage=1; + boost::cmatch what; + std::string text = getChild<LLUICtrl>(TEXT_EDIT)->getValue().asString(); + const boost::regex expression("secondlife:///app/experience/[\\da-f-]+/profile"); + if (boost::regex_match(text.c_str(), what, expression)) + { + LLURI uri(text); + LLSD path_array = uri.pathArray(); + if (path_array.size() == 4) + { + std::string exp_id = path_array.get(2).asString(); + LLUUID experience_id(exp_id); + if (!experience_id.isNull()) + { + const LLSD& experience_details = LLExperienceCache::get(experience_id); + if(!experience_details.isUndefined()) + { + std::string experience_name_string = experience_details[LLExperienceCache::NAME].asString(); + if(!experience_name_string.empty()) + { + getChild<LLUICtrl>(TEXT_EDIT)->setValue(experience_name_string); + } + } + else + { + getChild<LLScrollListCtrl>(LIST_RESULTS)->deleteAllItems(); + getChild<LLScrollListCtrl>(LIST_RESULTS)->setCommentText(getString("searching")); + + getChildView(BTN_OK)->setEnabled(FALSE); + getChildView(BTN_PROFILE)->setEnabled(FALSE); + + getChildView(BTN_RIGHT)->setEnabled(FALSE); + getChildView(BTN_LEFT)->setEnabled(FALSE); + LLExperienceCache::get(experience_id, boost::bind(&LLPanelExperiencePicker::onBtnFind, this)); + return; + } + } + } + } + + + find(); +} + +void LLPanelExperiencePicker::onList() +{ + bool enabled = isSelectButtonEnabled(); + getChildView(BTN_OK)->setEnabled(enabled); + + enabled = enabled && getChild<LLScrollListCtrl>(LIST_RESULTS)->getNumSelected() == 1; + getChildView(BTN_PROFILE)->setEnabled(enabled); +} + +void LLPanelExperiencePicker::find() +{ + std::string text = getChild<LLUICtrl>(TEXT_EDIT)->getValue().asString(); + mQueryID.generate(); + std::ostringstream url; + + LLViewerRegion* region = gAgent.getRegion(); + std::string cap = region->getCapability("FindExperienceByName"); + if (!cap.empty()) + { + url << cap << "?page=" << mCurrentPage << "&page_size=30&query=" << LLURI::escape(text); + LLHTTPClient::get(url.str(), new LLExperienceSearchResponder(mQueryID, getDerivedHandle<LLPanelExperiencePicker>())); + + } + getChild<LLScrollListCtrl>(LIST_RESULTS)->deleteAllItems(); + getChild<LLScrollListCtrl>(LIST_RESULTS)->setCommentText(getString("searching")); + + getChildView(BTN_OK)->setEnabled(FALSE); + getChildView(BTN_PROFILE)->setEnabled(FALSE); + + getChildView(BTN_RIGHT)->setEnabled(FALSE); + getChildView(BTN_LEFT)->setEnabled(FALSE); +} + +bool LLPanelExperiencePicker::isSelectButtonEnabled() +{ + LLScrollListCtrl* list=getChild<LLScrollListCtrl>(LIST_RESULTS); + return list->getFirstSelectedIndex() >=0; +} + +void LLPanelExperiencePicker::getSelectedExperienceIds( const LLScrollListCtrl* results, uuid_vec_t &experience_ids ) +{ + std::vector<LLScrollListItem*> items = results->getAllSelected(); + for(std::vector<LLScrollListItem*>::iterator it = items.begin(); it != items.end(); ++it) + { + LLScrollListItem* item = *it; + if (item->getUUID().notNull()) + { + experience_ids.push_back(item->getUUID()); + } + } +} + +void LLPanelExperiencePicker::setAllowMultiple( bool allow_multiple ) +{ + getChild<LLScrollListCtrl>(LIST_RESULTS)->setAllowMultipleSelection(allow_multiple); +} + + +void name_callback(const LLHandle<LLPanelExperiencePicker>& floater, const LLUUID& experience_id, const LLUUID& agent_id, const LLAvatarName& av_name) +{ + if(floater.isDead()) + return; + LLPanelExperiencePicker* picker = floater.get(); + LLScrollListCtrl* search_results = picker->getChild<LLScrollListCtrl>(LIST_RESULTS); + + LLScrollListItem* item = search_results->getItem(experience_id); + if(!item) + return; + + item->getColumn(2)->setValue(columnSpace+av_name.getDisplayName()); + +} + +void LLPanelExperiencePicker::processResponse( const LLUUID& query_id, const LLSD& content ) +{ + if(query_id != mQueryID) + { + return; + } + + mResponse = content; + + const LLSD& experiences=mResponse["experience_keys"]; + LLSD::array_const_iterator it = experiences.beginArray(); + for ( ; it != experiences.endArray(); ++it) + { + LLExperienceCache::insert(*it); + } + + getChildView(BTN_RIGHT)->setEnabled(content.has("next_page_url")); + getChildView(BTN_LEFT)->setEnabled(content.has("previous_page_url")); + + filterContent(); + +} + +void LLPanelExperiencePicker::onBtnSelect() +{ + if(!isSelectButtonEnabled()) + { + return; + } + + if(mSelectionCallback) + { + const LLScrollListCtrl* results = getChild<LLScrollListCtrl>(LIST_RESULTS); + uuid_vec_t experience_ids; + + getSelectedExperienceIds(results, experience_ids); + mSelectionCallback(experience_ids); + getChild<LLScrollListCtrl>(LIST_RESULTS)->deselectAllItems(TRUE); + if(mCloseOnSelect) + { + mCloseOnSelect = FALSE; + onBtnClose(); + } + } + else + { + onBtnProfile(); + } +} + +void LLPanelExperiencePicker::onBtnClose() +{ + LLFloater* floater = getParentByType<LLFloater>(); + if (floater) + { + floater->closeFloater(); + } +} + +void LLPanelExperiencePicker::onBtnProfile() +{ + LLScrollListItem* item = getChild<LLScrollListCtrl>(LIST_RESULTS)->getFirstSelected(); + if(item) + { + LLFloaterReg::showInstance("experience_profile", item->getUUID(), true); + } +} + +std::string LLPanelExperiencePicker::getMaturityString(int maturity) +{ + if(maturity <= SIM_ACCESS_PG) + { + return getString("maturity_icon_general"); + } + else if(maturity <= SIM_ACCESS_MATURE) + { + return getString("maturity_icon_moderate"); + } + return getString("maturity_icon_adult"); +} + +void LLPanelExperiencePicker::filterContent() +{ + LLScrollListCtrl* search_results = getChild<LLScrollListCtrl>(LIST_RESULTS); + + const LLSD& experiences=mResponse["experience_keys"]; + + search_results->deleteAllItems(); + + LLSD item; + LLSD::array_const_iterator it = experiences.beginArray(); + for ( ; it != experiences.endArray(); ++it) + { + const LLSD& experience = *it; + + if(isExperienceHidden(experience)) + continue; + + std::string experience_name_string = experience[LLExperienceCache::NAME].asString(); + if (experience_name_string.empty()) + { + experience_name_string = LLTrans::getString("ExperienceNameUntitled"); + } + + item["id"]=experience[LLExperienceCache::EXPERIENCE_ID]; + LLSD& columns = item["columns"]; + columns[0]["column"] = "maturity"; + columns[0]["value"] = getMaturityString(experience[LLExperienceCache::MATURITY].asInteger()); + columns[0]["type"]="icon"; + columns[0]["halign"]="right"; + columns[1]["column"] = "experience_name"; + columns[1]["value"] = columnSpace+experience_name_string; + columns[2]["column"] = "owner"; + columns[2]["value"] = columnSpace+getString("loading"); + search_results->addElement(item); + LLAvatarNameCache::get(experience[LLExperienceCache::AGENT_ID], boost::bind(name_callback, getDerivedHandle<LLPanelExperiencePicker>(), experience[LLExperienceCache::EXPERIENCE_ID], _1, _2)); + } + + if (search_results->isEmpty()) + { + LLStringUtil::format_map_t map; + std::string search_text = getChild<LLUICtrl>(TEXT_EDIT)->getValue().asString(); + map["[TEXT]"] = search_text; + if (search_text.empty()) + { + getChild<LLScrollListCtrl>(LIST_RESULTS)->setCommentText(getString("no_results")); + } + else + { + getChild<LLScrollListCtrl>(LIST_RESULTS)->setCommentText(getString("not_found", map)); + } + search_results->setEnabled(false); + getChildView(BTN_OK)->setEnabled(false); + getChildView(BTN_PROFILE)->setEnabled(false); + } + else + { + getChildView(BTN_OK)->setEnabled(true); + search_results->setEnabled(true); + search_results->sortByColumnIndex(1, TRUE); + std::string text = getChild<LLUICtrl>(TEXT_EDIT)->getValue().asString(); + if (!search_results->selectItemByLabel(text, TRUE, 1)) + { + search_results->selectFirstItem(); + } + onList(); + search_results->setFocus(TRUE); + } +} + +void LLPanelExperiencePicker::onMaturity() +{ + if(mResponse.has("experience_keys") && mResponse["experience_keys"].beginArray() != mResponse["experience_keys"].endArray()) + { + filterContent(); + } +} + +bool LLPanelExperiencePicker::isExperienceHidden( const LLSD& experience) const +{ + bool hide=false; + filter_list::const_iterator it = mFilters.begin(); + for(/**/;it != mFilters.end(); ++it) + { + if((*it)(experience)){ + return true; + } + } + + return hide; +} + +bool LLPanelExperiencePicker::FilterOverRating( const LLSD& experience ) +{ + int maturity = getChild<LLComboBox>(TEXT_MATURITY)->getSelectedValue().asInteger(); + return experience[LLExperienceCache::MATURITY].asInteger() > maturity; +} + +bool LLPanelExperiencePicker::FilterWithProperty( const LLSD& experience, S32 prop) +{ + return (experience[LLExperienceCache::PROPERTIES].asInteger() & prop) != 0; +} + +bool LLPanelExperiencePicker::FilterWithoutProperties( const LLSD& experience, S32 prop) +{ + return ((experience[LLExperienceCache::PROPERTIES].asInteger() & prop) == prop); +} + +bool LLPanelExperiencePicker::FilterWithoutProperty( const LLSD& experience, S32 prop ) +{ + return (experience[LLExperienceCache::PROPERTIES].asInteger() & prop) == 0; +} + +void LLPanelExperiencePicker::setDefaultFilters() +{ + mFilters.clear(); + addFilter(boost::bind(&LLPanelExperiencePicker::FilterOverRating, this, _1)); +} + +bool LLPanelExperiencePicker::FilterMatching( const LLSD& experience, const LLUUID& id ) +{ + if(experience.isUUID()) + { + return experience.asUUID() == id; + } + return experience[LLExperienceCache::EXPERIENCE_ID].asUUID() == id; +} + +void LLPanelExperiencePicker::onPage( S32 direction ) +{ + mCurrentPage += direction; + if(mCurrentPage < 1) + { + mCurrentPage = 1; + } + find(); +} diff --git a/indra/newview/llpanelexperiencepicker.h b/indra/newview/llpanelexperiencepicker.h new file mode 100644 index 0000000000..e39ffed70b --- /dev/null +++ b/indra/newview/llpanelexperiencepicker.h @@ -0,0 +1,95 @@ +/** +* @file llpanelexperiencepicker.h +* @brief Header file for llpanelexperiencepicker +* @author dolphin@lindenlab.com +* +* $LicenseInfo:firstyear=2014&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2014, 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_LLPANELEXPERIENCEPICKER_H +#define LL_LLPANELEXPERIENCEPICKER_H + +#include "llpanel.h" + +class LLScrollListCtrl; +class LLLineEditor; + + +class LLPanelExperiencePicker : public LLPanel +{ +public: + friend class LLExperienceSearchResponder; + friend class LLFloaterExperiencePicker; + + typedef boost::function<void (const uuid_vec_t&)> select_callback_t; + // filter function for experiences, return true if the experience should be hidden. + typedef boost::function<bool (const LLSD&)> filter_function; + typedef std::vector<filter_function> filter_list; + + LLPanelExperiencePicker(); + virtual ~LLPanelExperiencePicker(); + + BOOL postBuild(); + + void addFilter(filter_function func){mFilters.push_back(func);} + template <class IT> + void addFilters(IT begin, IT end){mFilters.insert(mFilters.end(), begin, end);} + void setDefaultFilters(); + + static bool FilterWithProperty(const LLSD& experience, S32 prop); + static bool FilterWithoutProperties(const LLSD& experience, S32 prop); + static bool FilterWithoutProperty(const LLSD& experience, S32 prop); + static bool FilterMatching(const LLSD& experience, const LLUUID& id); + bool FilterOverRating(const LLSD& experience); + +private: + void editKeystroke(LLLineEditor* caller, void* user_data); + + void onBtnFind(); + void onBtnSelect(); + void onBtnClose(); + void onBtnProfile(); + void onList(); + void onMaturity(); + void onPage(S32 direction); + + void getSelectedExperienceIds( const LLScrollListCtrl* results, uuid_vec_t &experience_ids ); + void setAllowMultiple(bool allow_multiple); + + + void find(); + bool isSelectButtonEnabled(); + void processResponse( const LLUUID& query_id, const LLSD& content ); + + void filterContent(); + bool isExperienceHidden(const LLSD& experience) const ; + std::string getMaturityString(int maturity); + + + select_callback_t mSelectionCallback; + filter_list mFilters; + LLUUID mQueryID; + LLSD mResponse; + bool mCloseOnSelect; + S32 mCurrentPage; +}; + +#endif // LL_LLPANELEXPERIENCEPICKER_H diff --git a/indra/newview/llpanelexperiences.cpp b/indra/newview/llpanelexperiences.cpp new file mode 100644 index 0000000000..37981b36a9 --- /dev/null +++ b/indra/newview/llpanelexperiences.cpp @@ -0,0 +1,228 @@ +/** + * @file llpanelexperiences.cpp + * @brief LLPanelExperiences class implementation + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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" + + +#include "llpanelprofile.h" +#include "lluictrlfactory.h" +#include "llexperiencecache.h" +#include "llagent.h" + +#include "llpanelexperiences.h" +#include "llslurl.h" +#include "lllayoutstack.h" + + + +static LLPanelInjector<LLPanelExperiences> register_experiences_panel("experiences_panel"); + + +//comparators +static const LLExperienceItemComparator NAME_COMPARATOR; + +LLPanelExperiences::LLPanelExperiences( ) + : mExperiencesList(NULL) +{ + buildFromFile("panel_experiences.xml"); +} + +BOOL LLPanelExperiences::postBuild( void ) +{ + mExperiencesList = getChild<LLFlatListView>("experiences_list"); + if (hasString("loading_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("loading_experiences")); + } + else if (hasString("no_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("no_experiences")); + } + mExperiencesList->setComparator(&NAME_COMPARATOR); + + return TRUE; +} + + + +LLExperienceItem* LLPanelExperiences::getSelectedExperienceItem() +{ + LLPanel* selected_item = mExperiencesList->getSelectedItem(); + if (!selected_item) return NULL; + + return dynamic_cast<LLExperienceItem*>(selected_item); +} + +void LLPanelExperiences::setExperienceList( const LLSD& experiences ) +{ + if (hasString("no_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("no_experiences")); + } + mExperiencesList->clear(); + + LLSD::array_const_iterator it = experiences.beginArray(); + for( /**/ ; it != experiences.endArray(); ++it) + { + LLUUID public_key = it->asUUID(); + LLExperienceItem* item = new LLExperienceItem(); + + item->init(public_key); + mExperiencesList->addItem(item, public_key); + } + + mExperiencesList->sort(); +} + +void LLPanelExperiences::getExperienceIdsList(std::vector<LLUUID>& result) +{ + std::vector<LLSD> ids; + mExperiencesList->getValues(ids); + for (LLSD::array_const_iterator it = ids.begin(); it != ids.end(); ++it) + { + result.push_back(it->asUUID()); + } +} + +LLPanelExperiences* LLPanelExperiences::create(const std::string& name) +{ + LLPanelExperiences* panel= new LLPanelExperiences(); + panel->setName(name); + return panel; +} + +void LLPanelExperiences::removeExperiences( const LLSD& ids ) +{ + LLSD::array_const_iterator it = ids.beginArray(); + for( /**/ ; it != ids.endArray(); ++it) + { + removeExperience(it->asUUID()); + } +} + +void LLPanelExperiences::removeExperience( const LLUUID& id ) +{ + mExperiencesList->removeItemByUUID(id); +} + +void LLPanelExperiences::addExperience( const LLUUID& id ) +{ + if(!mExperiencesList->getItemByValue(id)) + { + LLExperienceItem* item = new LLExperienceItem(); + + item->init(id); + mExperiencesList->addItem(item, id); + mExperiencesList->sort(); + } +} + +void LLPanelExperiences::setButtonAction(const std::string& label, const commit_signal_t::slot_type& cb ) +{ + if(label.empty()) + { + getChild<LLLayoutPanel>("button_panel")->setVisible(false); + } + else + { + getChild<LLLayoutPanel>("button_panel")->setVisible(true); + LLButton* child = getChild<LLButton>("btn_action"); + child->setCommitCallback(cb); + child->setLabel(getString(label)); + } +} + +void LLPanelExperiences::enableButton( bool enable ) +{ + getChild<LLButton>("btn_action")->setEnabled(enable); +} + + +LLExperienceItem::LLExperienceItem() + : mName(NULL) +{ + buildFromFile("panel_experience_list_item.xml"); +} + +void LLExperienceItem::init( const LLUUID& id) +{ + mName = getChild<LLUICtrl>("experience_name"); + mName->setValue(LLSLURL("experience", id, "profile").getSLURLString()); +} + +LLExperienceItem::~LLExperienceItem() +{ + +} + +std::string LLExperienceItem::getExperienceName() const +{ + if (mName) + { + return mName->getValue(); + } + + return ""; +} + +void LLPanelSearchExperiences::doSearch() +{ + +} + +LLPanelSearchExperiences* LLPanelSearchExperiences::create( const std::string& name ) +{ + LLPanelSearchExperiences* panel= new LLPanelSearchExperiences(); + panel->getChild<LLPanel>("results")->addChild(LLPanelExperiences::create(name)); + return panel; +} + +BOOL LLPanelSearchExperiences::postBuild( void ) +{ + childSetAction("search_button", boost::bind(&LLPanelSearchExperiences::doSearch, this)); + return TRUE; +} + +bool LLExperienceItemComparator::compare(const LLPanel* item1, const LLPanel* item2) const +{ + const LLExperienceItem* experience_item1 = dynamic_cast<const LLExperienceItem*>(item1); + const LLExperienceItem* experience_item2 = dynamic_cast<const LLExperienceItem*>(item2); + + if (!experience_item1 || !experience_item2) + { + LL_ERRS() << "item1 and item2 cannot be null" << LL_ENDL; + return true; + } + + std::string name1 = experience_item1->getExperienceName(); + std::string name2 = experience_item2->getExperienceName(); + + LLStringUtil::toUpper(name1); + LLStringUtil::toUpper(name2); + + return name1 < name2; +} diff --git a/indra/newview/llpanelexperiences.h b/indra/newview/llpanelexperiences.h new file mode 100644 index 0000000000..f29fdfdecb --- /dev/null +++ b/indra/newview/llpanelexperiences.h @@ -0,0 +1,98 @@ +/** + * @file llpanelexperiences.h + * @brief LLPanelExperiences class definition + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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_LLPANELEXPERIENCES_H +#define LL_LLPANELEXPERIENCES_H + +#include "llaccordionctrltab.h" +#include "llflatlistview.h" +#include "llpanelavatar.h" + +class LLExperienceItem; +class LLPanelProfile; + + +class LLPanelSearchExperiences + : public LLPanel +{ +public: + LLPanelSearchExperiences(){} + static LLPanelSearchExperiences* create(const std::string& name); + /*virtual*/ BOOL postBuild(void); + + void doSearch(); +}; + +class LLPanelExperiences + : public LLPanel +{ +public: + LLPanelExperiences(); + + static LLPanelExperiences* create(const std::string& name); + + /*virtual*/ BOOL postBuild(void); + /*virtual*/ void onClosePanel(); + + void setExperienceList(const LLSD& experiences); + void getExperienceIdsList(std::vector<LLUUID>& result); + + LLExperienceItem* getSelectedExperienceItem(); + void removeExperiences( const LLSD& ids ); + void removeExperience( const LLUUID& id); + void addExperience( const LLUUID& id); + void setButtonAction(const std::string& label, const commit_signal_t::slot_type& cb); + void enableButton(bool enable); +protected: + +private: + LLFlatListView* mExperiencesList; +}; + +class LLExperienceItemComparator : public LLFlatListView::ItemComparator +{ + LOG_CLASS(LLExperienceItemComparator); + +public: + LLExperienceItemComparator() {}; + virtual ~LLExperienceItemComparator() {}; + + virtual bool compare(const LLPanel* item1, const LLPanel* item2) const; +}; + +class LLExperienceItem + : public LLPanel +{ +public: + LLExperienceItem(); + ~LLExperienceItem(); + + void init(const LLUUID& experience_id); + std::string getExperienceName() const; +protected: + LLUICtrl* mName; +}; +#endif // LL_LLPANELEXPERIENCES_H diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index afc1a789c4..21d8b4248c 100755..100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -49,6 +49,7 @@ #include "llmaterialmgr.h" #include "llmediaentry.h" #include "llnotificationsutil.h" +#include "llradiogroup.h" #include "llresmgr.h" #include "llselectmgr.h" #include "llspinctrl.h" @@ -90,10 +91,10 @@ std::string USE_TEXTURE; LLRender::eTexIndex LLPanelFace::getTextureChannelToEdit() { LLComboBox* combobox_matmedia = getChild<LLComboBox>("combobox matmedia"); - LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype"); + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); LLRender::eTexIndex channel_to_edit = (combobox_matmedia && combobox_matmedia->getCurrentIndex() == MATMEDIA_MATERIAL) ? - (combobox_mattype ? (LLRender::eTexIndex)combobox_mattype->getCurrentIndex() : LLRender::DIFFUSE_MAP) : LLRender::DIFFUSE_MAP; + (radio_mat_type ? (LLRender::eTexIndex)radio_mat_type->getSelectedIndex() : LLRender::DIFFUSE_MAP) : LLRender::DIFFUSE_MAP; channel_to_edit = (channel_to_edit == LLRender::NORMAL_MAP) ? (getCurrentNormalMap().isNull() ? LLRender::DIFFUSE_MAP : channel_to_edit) : channel_to_edit; channel_to_edit = (channel_to_edit == LLRender::SPECULAR_MAP) ? (getCurrentSpecularMap().isNull() ? LLRender::DIFFUSE_MAP : channel_to_edit) : channel_to_edit; @@ -162,7 +163,6 @@ BOOL LLPanelFace::postBuild() LLComboBox* mComboTexGen; LLComboBox* mComboMatMedia; - LLComboBox* mComboMatType; LLCheckBoxCtrl *mCheckFullbright; @@ -283,12 +283,12 @@ BOOL LLPanelFace::postBuild() mComboMatMedia->selectNthItem(MATMEDIA_MATERIAL); } - mComboMatType = getChild<LLComboBox>("combobox mattype"); - if(mComboMatType) - { - mComboMatType->setCommitCallback(LLPanelFace::onCommitMaterialType, this); - mComboMatType->selectNthItem(MATTYPE_DIFFUSE); - } + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); + if(radio_mat_type) + { + radio_mat_type->setCommitCallback(LLPanelFace::onCommitMaterialType, this); + radio_mat_type->selectNthItem(MATTYPE_DIFFUSE); + } mCtrlGlow = getChild<LLSpinCtrl>("glow"); if(mCtrlGlow) @@ -676,20 +676,21 @@ void LLPanelFace::updateUI() } getChildView("combobox matmedia")->setEnabled(editable); - LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype"); - if (combobox_mattype) + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); + if(radio_mat_type) { - if (combobox_mattype->getCurrentIndex() < MATTYPE_DIFFUSE) - { - combobox_mattype->selectNthItem(MATTYPE_DIFFUSE); - } + if (radio_mat_type->getSelectedIndex() < MATTYPE_DIFFUSE) + { + radio_mat_type->selectNthItem(MATTYPE_DIFFUSE); + } + } else { - LL_WARNS("Materials") << "failed getChild for 'combobox mattype'" << LL_ENDL; + LL_WARNS("Materials") << "failed getChild for 'radio_material_type'" << LL_ENDL; } - getChildView("combobox mattype")->setEnabled(editable); + getChildView("radio_material_type")->setEnabled(editable); updateVisibility(); bool identical = true; // true because it is anded below @@ -1200,8 +1201,7 @@ void LLPanelFace::updateUI() BOOL identical_repeats = true; F32 repeats = 1.0f; - U32 material_type = (combobox_matmedia->getCurrentIndex() == MATMEDIA_MATERIAL) ? combobox_mattype->getCurrentIndex() : MATTYPE_DIFFUSE; - + U32 material_type = (combobox_matmedia->getCurrentIndex() == MATMEDIA_MATERIAL) ? radio_mat_type->getSelectedIndex() : MATTYPE_DIFFUSE; LLSelectMgr::getInstance()->setTextureChannel(LLRender::eTexIndex(material_type)); switch (material_type) @@ -1466,22 +1466,21 @@ void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata) void LLPanelFace::updateVisibility() { LLComboBox* combo_matmedia = getChild<LLComboBox>("combobox matmedia"); - LLComboBox* combo_mattype = getChild<LLComboBox>("combobox mattype"); + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); LLComboBox* combo_shininess = getChild<LLComboBox>("combobox shininess"); LLComboBox* combo_bumpiness = getChild<LLComboBox>("combobox bumpiness"); - if (!combo_mattype || !combo_matmedia || !combo_shininess || !combo_bumpiness) + if (!radio_mat_type || !combo_matmedia || !combo_shininess || !combo_bumpiness) { LL_WARNS("Materials") << "Combo box not found...exiting." << LL_ENDL; return; } U32 materials_media = combo_matmedia->getCurrentIndex(); - U32 material_type = combo_mattype->getCurrentIndex(); + U32 material_type = radio_mat_type->getSelectedIndex(); bool show_media = (materials_media == MATMEDIA_MEDIA) && combo_matmedia->getEnabled(); bool show_texture = (show_media || ((material_type == MATTYPE_DIFFUSE) && combo_matmedia->getEnabled())); bool show_bumpiness = (!show_media) && (material_type == MATTYPE_NORMAL) && combo_matmedia->getEnabled(); bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR) && combo_matmedia->getEnabled(); - getChildView("combobox mattype")->setVisible(!show_media); - getChildView("rptctrl")->setVisible(true); + getChildView("radio_material_type")->setVisible(!show_media); // Media controls getChildView("media_info")->setVisible(show_media); @@ -1608,9 +1607,9 @@ void LLPanelFace::updateShinyControls(bool is_setting_texture, bool mess_with_sh } LLComboBox* combo_matmedia = getChild<LLComboBox>("combobox matmedia"); - LLComboBox* combo_mattype = getChild<LLComboBox>("combobox mattype"); + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); U32 materials_media = combo_matmedia->getCurrentIndex(); - U32 material_type = combo_mattype->getCurrentIndex(); + U32 material_type = radio_mat_type->getSelectedIndex(); bool show_media = (materials_media == MATMEDIA_MEDIA) && combo_matmedia->getEnabled(); bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR) && combo_matmedia->getEnabled(); U32 shiny_value = comboShiny->getCurrentIndex(); @@ -1693,11 +1692,11 @@ void LLPanelFace::updateAlphaControls() mat_media = combobox_matmedia->getCurrentIndex(); } - LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype"); U32 mat_type = MATTYPE_DIFFUSE; - if (combobox_mattype) + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); + if(radio_mat_type) { - mat_type = combobox_mattype->getCurrentIndex(); + mat_type = radio_mat_type->getSelectedIndex(); } show_alphactrls = show_alphactrls && (mat_media == MATMEDIA_MATERIAL); @@ -1985,12 +1984,11 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata) LLUICtrl* repeats_ctrl = self->getChild<LLUICtrl>("rptctrl"); LLComboBox* combo_matmedia = self->getChild<LLComboBox>("combobox matmedia"); - LLComboBox* combo_mattype = self->getChild<LLComboBox>("combobox mattype"); + LLRadioGroup* radio_mat_type = self->getChild<LLRadioGroup>("radio_material_type"); U32 materials_media = combo_matmedia->getCurrentIndex(); - - U32 material_type = (materials_media == MATMEDIA_MATERIAL) ? combo_mattype->getCurrentIndex() : 0; + U32 material_type = (materials_media == MATMEDIA_MATERIAL) ? radio_mat_type->getSelectedIndex() : 0; F32 repeats_per_meter = repeats_ctrl->getValue().asReal(); F32 obj_scale_s = 1.0f; @@ -2114,12 +2112,12 @@ void LLPanelFace::onCommitPlanarAlign(LLUICtrl* ctrl, void* userdata) void LLPanelFace::onTextureSelectionChanged(LLInventoryItem* itemp) { LL_DEBUGS("Materials") << "item asset " << itemp->getAssetUUID() << LL_ENDL; - LLComboBox* combo_mattype = getChild<LLComboBox>("combobox mattype"); - if (!combo_mattype) + LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type"); + if(radio_mat_type) { - return; + return; } - U32 mattype = combo_mattype->getCurrentIndex(); + U32 mattype = radio_mat_type->getSelectedIndex(); std::string which_control="texture control"; switch (mattype) { diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h index 9823e84cd9..9823e84cd9 100755..100644 --- a/indra/newview/llpanelface.h +++ b/indra/newview/llpanelface.h diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp index 4ccdaa78f3..4ccdaa78f3 100755..100644 --- a/indra/newview/llpanelgenerictip.cpp +++ b/indra/newview/llpanelgenerictip.cpp diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h index f8a3413fe4..f8a3413fe4 100755..100644 --- a/indra/newview/llpanelgenerictip.h +++ b/indra/newview/llpanelgenerictip.h diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index f4aab6bd4e..342b57ba4a 100755..100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -177,11 +177,13 @@ BOOL LLPanelGroup::postBuild() LLPanelGroupTab* panel_roles = findChild<LLPanelGroupTab>("group_roles_tab_panel"); LLPanelGroupTab* panel_notices = findChild<LLPanelGroupTab>("group_notices_tab_panel"); LLPanelGroupTab* panel_land = findChild<LLPanelGroupTab>("group_land_tab_panel"); + LLPanelGroupTab* panel_experiences = findChild<LLPanelGroupTab>("group_experiences_tab_panel"); if(panel_general) mTabs.push_back(panel_general); if(panel_roles) mTabs.push_back(panel_roles); if(panel_notices) mTabs.push_back(panel_notices); if(panel_land) mTabs.push_back(panel_land); + if(panel_experiences) mTabs.push_back(panel_experiences); if(panel_general) { @@ -336,7 +338,7 @@ void LLPanelGroup::update(LLGroupChange gc) group_name_ctrl->setToolTip(group_name); LLGroupData agent_gdatap; - bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike(); + bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlikeWithoutAdminMenuFakery(); bool join_btn_visible = !is_member && gdatap->mOpenEnrollment; mButtonJoin->setVisible(join_btn_visible); @@ -418,6 +420,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) LLAccordionCtrlTab* tab_roles = getChild<LLAccordionCtrlTab>("group_roles_tab"); LLAccordionCtrlTab* tab_notices = getChild<LLAccordionCtrlTab>("group_notices_tab"); LLAccordionCtrlTab* tab_land = getChild<LLAccordionCtrlTab>("group_land_tab"); + LLAccordionCtrlTab* tab_experiences = getChild<LLAccordionCtrlTab>("group_experiences_tab"); if(mButtonJoin) mButtonJoin->setVisible(false); @@ -434,10 +437,13 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) tab_notices->changeOpenClose(tab_notices->getDisplayChildren()); if(tab_land->getDisplayChildren()) tab_land->changeOpenClose(tab_land->getDisplayChildren()); + if(tab_experiences->getDisplayChildren()) + tab_experiences->changeOpenClose(tab_land->getDisplayChildren()); tab_roles->setVisible(false); tab_notices->setVisible(false); tab_land->setVisible(false); + tab_experiences->setVisible(false); getChild<LLUICtrl>("group_name")->setVisible(false); getChild<LLUICtrl>("group_name_editor")->setVisible(true); @@ -459,14 +465,17 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) tab_notices->changeOpenClose(tab_notices->getDisplayChildren()); if(tab_land->getDisplayChildren()) tab_land->changeOpenClose(tab_land->getDisplayChildren()); + if(tab_experiences->getDisplayChildren()) + tab_experiences->changeOpenClose(tab_land->getDisplayChildren()); } LLGroupData agent_gdatap; - bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike(); + bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlikeWithoutAdminMenuFakery(); tab_roles->setVisible(is_member); tab_notices->setVisible(is_member); tab_land->setVisible(is_member); + tab_experiences->setVisible(is_member); getChild<LLUICtrl>("group_name")->setVisible(true); getChild<LLUICtrl>("group_name_editor")->setVisible(false); @@ -534,6 +543,7 @@ bool LLPanelGroup::apply() && apply(findChild<LLPanelGroupTab>("group_roles_tab_panel")) && apply(findChild<LLPanelGroupTab>("group_notices_tab_panel")) && apply(findChild<LLPanelGroupTab>("group_land_tab_panel")) + && apply(findChild<LLPanelGroupTab>("group_experiences_tab_panel")) ; } diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 0e6f5b8924..0e6f5b8924 100755..100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h diff --git a/indra/newview/llpanelgroupbulk.cpp b/indra/newview/llpanelgroupbulk.cpp index 76792cc6fd..cffda02aa0 100644 --- a/indra/newview/llpanelgroupbulk.cpp +++ b/indra/newview/llpanelgroupbulk.cpp @@ -97,6 +97,7 @@ void LLPanelGroupBulkImpl::callbackClickAdd(void* userdata) if(picker) { root_floater->addDependentFloater(picker); + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(panelp->mImplementation->mGroupID); } } } diff --git a/indra/newview/llpanelgroupexperiences.cpp b/indra/newview/llpanelgroupexperiences.cpp new file mode 100644 index 0000000000..76b68122fb --- /dev/null +++ b/indra/newview/llpanelgroupexperiences.cpp @@ -0,0 +1,143 @@ +/** + * @file llpanelgroupexperiences.cpp + * @brief List of experiences owned by a group. + * + * $LicenseInfo:firstyear=2006&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" + +#include "llpanelgroupexperiences.h" + +#include "lluictrlfactory.h" +#include "roles_constants.h" + +#include "llhttpclient.h" +#include "llagent.h" +#include "llviewerregion.h" +#include "llflatlistview.h" +#include "llpanelexperiences.h" +#include "llsd.h" + + +static LLPanelInjector<LLPanelGroupExperiences> t_panel_group_experiences("panel_group_experiences"); + + +class LLGroupExperienceResponder : public LLHTTPClient::Responder +{ +public: + LLHandle<LLPanelGroupExperiences> mHandle; + + LLGroupExperienceResponder(LLHandle<LLPanelGroupExperiences> handle) : mHandle(handle) { } + +protected: + /*virtual*/ void httpSuccess() + { + if (mHandle.isDead()) + { + return; + } + + LLPanelGroupExperiences* panel = mHandle.get(); + if (panel) + { + panel->setExperienceList(getContent().get("experience_ids")); + } + } + + /*virtual*/ void httpFailure() + { + LL_WARNS() << "experience responder failed [status:" << getStatus() << "]: " << getContent() << LL_ENDL; + } +}; + +LLPanelGroupExperiences::LLPanelGroupExperiences() +: LLPanelGroupTab(), mExperiencesList(NULL) +{ +} + +LLPanelGroupExperiences::~LLPanelGroupExperiences() +{ +} + +BOOL LLPanelGroupExperiences::postBuild() +{ + mExperiencesList = getChild<LLFlatListView>("experiences_list"); + if (hasString("loading_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("loading_experiences")); + } + else if (hasString("no_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("no_experiences")); + } + + return LLPanelGroupTab::postBuild(); +} + +void LLPanelGroupExperiences::activate() +{ + if (getGroupID() == LLUUID::null) + { + return; + } + + // search for experiences owned by the current group + std::string url = gAgent.getRegion()->getCapability("GroupExperiences"); + if (!url.empty()) + { + url += "?" + getGroupID().asString(); + + LLHTTPClient::get(url, new LLGroupExperienceResponder(getDerivedHandle<LLPanelGroupExperiences>())); + } +} + +void LLPanelGroupExperiences::setGroupID(const LLUUID& id) +{ + LLPanelGroupTab::setGroupID(id); + + if(id == LLUUID::null) + { + return; + } + + activate(); +} + +void LLPanelGroupExperiences::setExperienceList(const LLSD& experiences) +{ + if (hasString("no_experiences")) + { + mExperiencesList->setNoItemsCommentText(getString("no_experiences")); + } + mExperiencesList->clear(); + + LLSD::array_const_iterator it = experiences.beginArray(); + for ( /**/ ; it != experiences.endArray(); ++it) + { + LLUUID public_key = it->asUUID(); + LLExperienceItem* item = new LLExperienceItem(); + + item->init(public_key); + mExperiencesList->addItem(item, public_key); + } +} diff --git a/indra/media_plugins/webkit/dummy_volume_catcher.cpp b/indra/newview/llpanelgroupexperiences.h index d54b31b2ae..ae1ecc1ac5 100755..100644 --- a/indra/media_plugins/webkit/dummy_volume_catcher.cpp +++ b/indra/newview/llpanelgroupexperiences.h @@ -1,9 +1,8 @@ /** - * @file dummy_volume_catcher.cpp - * @brief A null implementation of the "VolumeCatcher" class for platforms where it's not implemented yet. + * @file llpanelgroupexperiences.h + * @brief List of experiences owned by a group. * - * @cond - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ + * $LicenseInfo:firstyear=2006&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. * @@ -23,36 +22,32 @@ * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ - * @endcond */ -#include "volume_catcher.h" +#ifndef LL_LLPANELGROUPEXPERIENCES_H +#define LL_LLPANELGROUPEXPERIENCES_H +#include "llpanelgroup.h" -class VolumeCatcherImpl -{ -}; - -///////////////////////////////////////////////////// - -VolumeCatcher::VolumeCatcher() -{ - pimpl = NULL; -} - -VolumeCatcher::~VolumeCatcher() -{ -} - -void VolumeCatcher::setVolume(F32 volume) -{ -} +class LLFlatListView; -void VolumeCatcher::setPan(F32 pan) +class LLPanelGroupExperiences : public LLPanelGroupTab { -} - -void VolumeCatcher::pump() -{ -} +public: + LLPanelGroupExperiences(); + virtual ~LLPanelGroupExperiences(); + + // LLPanelGroupTab + virtual void activate(); + + virtual BOOL postBuild(); + + virtual void setGroupID(const LLUUID& id); + + void setExperienceList(const LLSD& experiences); + +protected: + LLFlatListView* mExperiencesList; +}; +#endif diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 7ffaa05919..b2164c1f21 100755..100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -287,11 +287,6 @@ void LLPanelGroupGeneral::activate() { LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID); LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID); - - if (!gdatap || !gdatap->isMemberDataComplete() ) - { - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - } mFirstUse = FALSE; } diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h index 11972bafa9..11972bafa9 100755..100644 --- a/indra/newview/llpanelgroupgeneral.h +++ b/indra/newview/llpanelgroupgeneral.h diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index e662a05dfc..866cb8dbef 100755..100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -243,56 +243,59 @@ void LLPanelGroupInvite::impl::addRoleNames(LLGroupMgrGroupData* gdatap) LLGroupMgrGroupData::member_list_t::iterator agent_iter = gdatap->mMembers.find(gAgent.getID()); + //loop over the agent's roles in the group + //then add those roles to the list of roles that the agent + //can invite people to be. + //if the user is the owner then we add + //all of the roles in the group, + //else if they have the add to roles power + //we add every role but owner, + //else if they have the limited add to roles power + //we add every role the user is in, + //else we just add to everyone + bool is_owner = FALSE; + bool can_assign_any = gAgent.hasPowerInGroup(mGroupID, + GP_ROLE_ASSIGN_MEMBER); + bool can_assign_limited = gAgent.hasPowerInGroup(mGroupID, + GP_ROLE_ASSIGN_MEMBER_LIMITED); + LLGroupMemberData* member_data = NULL; //get the member data for the agent if it exists - if ( agent_iter != gdatap->mMembers.end() ) + if (agent_iter != gdatap->mMembers.end()) { - LLGroupMemberData* member_data = (*agent_iter).second; - - //loop over the agent's roles in the group - //then add those roles to the list of roles that the agent - //can invite people to be - if ( member_data && mRoleNames) + member_data = (*agent_iter).second; + if (member_data && mRoleNames) { - //if the user is the owner then we add - //all of the roles in the group - //else if they have the add to roles power - //we add every role but owner, - //else if they have the limited add to roles power - //we add every role the user is in - //else we just add to everyone - bool is_owner = member_data->isOwner(); - bool can_assign_any = gAgent.hasPowerInGroup(mGroupID, - GP_ROLE_ASSIGN_MEMBER); - bool can_assign_limited = gAgent.hasPowerInGroup(mGroupID, - GP_ROLE_ASSIGN_MEMBER_LIMITED); + is_owner = member_data->isOwner(); + }//end if member data is not null + }//end if agent is in the group + - LLGroupMgrGroupData::role_list_t::iterator rit = gdatap->mRoles.begin(); - LLGroupMgrGroupData::role_list_t::iterator end = gdatap->mRoles.end(); - //populate the role list - for ( ; rit != end; ++rit) + LLGroupMgrGroupData::role_list_t::iterator rit = gdatap->mRoles.begin(); + LLGroupMgrGroupData::role_list_t::iterator end = gdatap->mRoles.end(); + + //populate the role list: + for ( ; rit != end; ++rit) + { + LLUUID role_id = (*rit).first; + LLRoleData rd; + if ( gdatap->getRoleData(role_id,rd) ) + { + // Owners can add any role. + if ( is_owner + // Even 'can_assign_any' can't add owner role. + || (can_assign_any && role_id != gdatap->mOwnerRole) + // Add all roles user is in + || (can_assign_limited && member_data && member_data->isInRole(role_id)) + // Everyone role. + || role_id == LLUUID::null ) { - LLUUID role_id = (*rit).first; - LLRoleData rd; - if ( gdatap->getRoleData(role_id,rd) ) - { - // Owners can add any role. - if ( is_owner - // Even 'can_assign_any' can't add owner role. - || (can_assign_any && role_id != gdatap->mOwnerRole) - // Add all roles user is in - || (can_assign_limited && member_data->isInRole(role_id)) - // Everyone role. - || role_id == LLUUID::null ) - { - mRoleNames->add(rd.mRoleName, - role_id, - ADD_BOTTOM); - } - } + mRoleNames->add(rd.mRoleName, + role_id, + ADD_BOTTOM); } - }//end if member data is not null - }//end if agent is in the group + } + } } //static @@ -579,7 +582,8 @@ void LLPanelGroupInvite::updateLists() { waiting = true; } - if (gdatap->isRoleDataComplete() && gdatap->isMemberDataComplete() && gdatap->isRoleMemberDataComplete()) + if (gdatap->isRoleDataComplete() && gdatap->isMemberDataComplete() + && (gdatap->isRoleMemberDataComplete() || !gdatap->mMembers.size())) // MAINT-5270: large groups receives an empty members list without some powers, so RoleMemberData wouldn't be complete for them { if ( mImplementation->mRoleNames ) { diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h index 9f7b5ae9be..9f7b5ae9be 100755..100644 --- a/indra/newview/llpanelgroupinvite.h +++ b/indra/newview/llpanelgroupinvite.h diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index a2e136bd5a..a2e136bd5a 100755..100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp diff --git a/indra/newview/llpanelgrouplandmoney.h b/indra/newview/llpanelgrouplandmoney.h index 3cec6065e7..3cec6065e7 100755..100644 --- a/indra/newview/llpanelgrouplandmoney.h +++ b/indra/newview/llpanelgrouplandmoney.h diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 54728885c1..54728885c1 100755..100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp diff --git a/indra/newview/llpanelgroupnotices.h b/indra/newview/llpanelgroupnotices.h index 04629b5f6b..04629b5f6b 100755..100644 --- a/indra/newview/llpanelgroupnotices.h +++ b/indra/newview/llpanelgroupnotices.h diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index c3a10b3fa0..00c204e702 100755..100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -350,12 +350,10 @@ void LLPanelGroupRoles::update(LLGroupChange gc) void LLPanelGroupRoles::activate() { + if (!gAgent.isInGroup(mGroupID)) return; + // Start requesting member and role data if needed. LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); - if (!gdatap || !gdatap->isMemberDataComplete() ) - { - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - } if (!gdatap || !gdatap->isRoleDataComplete() ) { @@ -364,13 +362,7 @@ void LLPanelGroupRoles::activate() LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mGroupID); } - - // Check role-member mapping data. - if (!gdatap || !gdatap->isRoleMemberDataComplete() ) - { - LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(mGroupID); - } - + // Need this to get base group member powers if (!gdatap || !gdatap->isGroupPropertiesDataComplete() ) { @@ -1163,7 +1155,37 @@ void LLPanelGroupMembersSubTab::onEjectMembers(void *userdata) if ( selfp ) { - selfp->handleEjectMembers(); + selfp->confirmEjectMembers(); + } +} + +void LLPanelGroupMembersSubTab::confirmEjectMembers() +{ + std::vector<LLScrollListItem*> selection = mMembersList->getAllSelected(); + if (selection.empty()) return; + + S32 selection_count = selection.size(); + if (selection_count == 1) + { + LLSD args; + std::string fullname; + gCacheName->getFullName(mMembersList->getValue(), fullname); + args["AVATAR_NAME"] = fullname; + LLSD payload; + LLNotificationsUtil::add("EjectGroupMemberWarning", + args, + payload, + boost::bind(&LLPanelGroupMembersSubTab::handleEjectCallback, this, _1, _2)); + } + else + { + LLSD args; + args["COUNT"] = llformat("%d", selection_count); + LLSD payload; + LLNotificationsUtil::add("EjectGroupMembersWarning", + args, + payload, + boost::bind(&LLPanelGroupMembersSubTab::handleEjectCallback, this, _1, _2)); } } @@ -1190,6 +1212,16 @@ void LLPanelGroupMembersSubTab::handleEjectMembers() LLGroupMgr::getInstance()->sendGroupMemberEjects(mGroupID, selected_members); } +bool LLPanelGroupMembersSubTab::handleEjectCallback(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (0 == option) // Eject button + { + handleEjectMembers(); + } + return false; +} + void LLPanelGroupMembersSubTab::sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members) { LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); @@ -1327,15 +1359,26 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick() void LLPanelGroupMembersSubTab::activate() { + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); + LLPanelGroupSubTab::activate(); if(!mActivated) { + if (!gdatap || !gdatap->isMemberDataComplete()) + { + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + } + + if (!gdatap || !gdatap->isRoleMemberDataComplete()) + { + LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(mGroupID); + } + update(GC_ALL); mActivated = true; } else { - LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); // Members can be removed outside of this tab, checking changes if (!gdatap || (gdatap->isMemberDataComplete() && gdatap->mMembers.size() != mMembersList->getItemCount())) { @@ -1636,7 +1679,13 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc) { // Build a string with info on retrieval progress. std::ostringstream retrieved; - if ( !gdatap->isMemberDataComplete() ) + + if ( gdatap->isRoleDataComplete() && gdatap->isMemberDataComplete() && !gdatap->mMembers.size() ) + { + // MAINT-5237 + retrieved << "Member list not available."; + } + else if ( !gdatap->isMemberDataComplete() ) { // Still busy retreiving member list. retrieved << "Retrieving member list (" << gdatap->mMembers.size() @@ -1783,7 +1832,7 @@ void LLPanelGroupMembersSubTab::updateMembers() { mMembersList->setEnabled(TRUE); } - else + else if (gdatap->mMembers.size()) { mMembersList->setEnabled(FALSE); mMembersList->setCommentText(std::string("No match.")); @@ -1801,7 +1850,47 @@ void LLPanelGroupMembersSubTab::updateMembers() void LLPanelGroupMembersSubTab::onBanMember(void* user_data) { LLPanelGroupMembersSubTab* self = static_cast<LLPanelGroupMembersSubTab*>(user_data); - self->handleBanMember(); + self->confirmBanMembers(); +} + +void LLPanelGroupMembersSubTab::confirmBanMembers() +{ + std::vector<LLScrollListItem*> selection = mMembersList->getAllSelected(); + if (selection.empty()) return; + + S32 selection_count = selection.size(); + if (selection_count == 1) + { + LLSD args; + std::string fullname; + gCacheName->getFullName(mMembersList->getValue(), fullname); + args["AVATAR_NAME"] = fullname; + LLSD payload; + LLNotificationsUtil::add("BanGroupMemberWarning", + args, + payload, + boost::bind(&LLPanelGroupMembersSubTab::handleBanCallback, this, _1, _2)); + } + else + { + LLSD args; + args["COUNT"] = llformat("%d", selection_count); + LLSD payload; + LLNotificationsUtil::add("BanGroupMembersWarning", + args, + payload, + boost::bind(&LLPanelGroupMembersSubTab::handleBanCallback, this, _1, _2)); + } +} + +bool LLPanelGroupMembersSubTab::handleBanCallback(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (0 == option) // Eject button + { + handleBanMember(); + } + return false; } void LLPanelGroupMembersSubTab::handleBanMember() @@ -2111,20 +2200,7 @@ void LLPanelGroupRolesSubTab::update(LLGroupChange gc) mDeleteRoleButton->setEnabled(FALSE); } } - - if(!mFirstOpen) - { - if (!gdatap || !gdatap->isMemberDataComplete()) - { - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - } - - if (!gdatap || !gdatap->isRoleMemberDataComplete()) - { - LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(mGroupID); - } - } - + if ((GC_ROLE_MEMBER_DATA == gc || GC_MEMBER_DATA == gc) && gdatap && gdatap->isMemberDataComplete() diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index 540b24ada6..9a696124a8 100755..100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -171,6 +171,7 @@ public: void handleEjectMembers(); void sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members); bool handleEjectCallback(const LLSD& notification, const LLSD& response); + void confirmEjectMembers(); static void onRoleCheck(LLUICtrl* check, void* user_data); void handleRoleCheck(const LLUUID& role_id, @@ -178,6 +179,8 @@ public: static void onBanMember(void* user_data); void handleBanMember(); + bool handleBanCallback(const LLSD& notification, const LLSD& response); + void confirmBanMembers(); void applyMemberChanges(); diff --git a/indra/newview/llpanelhome.cpp b/indra/newview/llpanelhome.cpp index ab0ccffae4..ab0ccffae4 100755..100644 --- a/indra/newview/llpanelhome.cpp +++ b/indra/newview/llpanelhome.cpp diff --git a/indra/newview/llpanelhome.h b/indra/newview/llpanelhome.h index 748566326f..748566326f 100755..100644 --- a/indra/newview/llpanelhome.h +++ b/indra/newview/llpanelhome.h diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 389baa86cd..389baa86cd 100755..100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index 02915ec4bb..02915ec4bb 100755..100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h diff --git a/indra/newview/llpanelland.cpp b/indra/newview/llpanelland.cpp index acdb16f432..acdb16f432 100755..100644 --- a/indra/newview/llpanelland.cpp +++ b/indra/newview/llpanelland.cpp diff --git a/indra/newview/llpanelland.h b/indra/newview/llpanelland.h index 2ab1618d47..2ab1618d47 100755..100644 --- a/indra/newview/llpanelland.h +++ b/indra/newview/llpanelland.h diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp index e7bdc51b4a..e7bdc51b4a 100755..100644 --- a/indra/newview/llpanellandaudio.cpp +++ b/indra/newview/llpanellandaudio.cpp diff --git a/indra/newview/llpanellandaudio.h b/indra/newview/llpanellandaudio.h index 7e4fce80e4..7e4fce80e4 100755..100644 --- a/indra/newview/llpanellandaudio.h +++ b/indra/newview/llpanellandaudio.h diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index a660cb3b21..06bb886ae8 100755..100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -128,6 +128,10 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); std::string name = parcel_mgr->getAgentParcelName(); LLVector3 agent_pos = gAgent.getPositionAgent(); + + std::string desc; + LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, agent_pos); + mNotesEditor->setText(desc); if (name.empty()) { @@ -143,7 +147,8 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) } else { - region_name = getString("unknown"); + LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_NORMAL, agent_pos); + region_name = desc; } mLandmarkTitleEditor->setText(llformat("%s (%d, %d, %d)", @@ -154,10 +159,6 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) mLandmarkTitleEditor->setText(name); } - std::string desc; - LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, agent_pos); - mNotesEditor->setText(desc); - // Moved landmark creation here from LLPanelLandmarkInfo::processParcelInfo() // because we use only agent's current coordinates instead of waiting for // remote parcel request to complete. diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h index 01a6fd6b3d..01a6fd6b3d 100755..100644 --- a/indra/newview/llpanellandmarkinfo.h +++ b/indra/newview/llpanellandmarkinfo.h diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 1d73d4bd6e..1d73d4bd6e 100755..100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h index c11cbe05ae..c11cbe05ae 100755..100644 --- a/indra/newview/llpanellandmarks.h +++ b/indra/newview/llpanellandmarks.h diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp index 26cd3ff1c1..26cd3ff1c1 100755..100644 --- a/indra/newview/llpanellandmedia.cpp +++ b/indra/newview/llpanellandmedia.cpp diff --git a/indra/newview/llpanellandmedia.h b/indra/newview/llpanellandmedia.h index 63cfa01470..63cfa01470 100755..100644 --- a/indra/newview/llpanellandmedia.h +++ b/indra/newview/llpanellandmedia.h diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index cc8c3edd51..953f234a53 100755..100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -229,7 +229,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, } } server_choice_combo->sortByName(); - server_choice_combo->addSeparator(ADD_TOP); LL_DEBUGS("AppInit")<<"adding current "<<current_grid<<LL_ENDL; server_choice_combo->add(LLGridManager::getInstance()->getGridLabel(), current_grid, diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index 869f2f8d39..869f2f8d39 100755..100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h diff --git a/indra/newview/llpanelloginlistener.cpp b/indra/newview/llpanelloginlistener.cpp index 33efde11f3..33efde11f3 100755..100644 --- a/indra/newview/llpanelloginlistener.cpp +++ b/indra/newview/llpanelloginlistener.cpp diff --git a/indra/newview/llpanelloginlistener.h b/indra/newview/llpanelloginlistener.h index 45dcea269c..45dcea269c 100755..100644 --- a/indra/newview/llpanelloginlistener.h +++ b/indra/newview/llpanelloginlistener.h diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 17c0b226d0..4229419fce 100755..100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -604,7 +604,7 @@ void LLPanelMainInventory::updateItemcountText() } else { - text = getString("ItemcountUnknown"); + text = getString("ItemcountUnknown", string_args); } mCounterCtrl->setValue(text); @@ -1134,14 +1134,12 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata) const LLUUID& item_id = static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->getUUID(); const std::string &item_name = current_item->getViewModelItem()->getName(); mFilterSubString = item_name; + LLInventoryFilter &filter = mActivePanel->getFilter(); - filter.setFilterSubString(item_name); - mFilterEditor->setText(item_name); + filter.setFindAllLinksMode(item_name, item_id); + mFilterEditor->setText(item_name); mFilterEditor->setFocus(TRUE); - filter.setFilterUUID(item_id); - filter.setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - filter.setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS); } } diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index 21f0ca0cae..21f0ca0cae 100755..100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 79e079f6bd..79e079f6bd 100755..100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h index 9eb74581a2..9eb74581a2 100755..100644 --- a/indra/newview/llpanelmarketplaceinbox.h +++ b/indra/newview/llpanelmarketplaceinbox.h diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index f7c2f629ec..c5fda3c136 100755..100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -62,7 +62,7 @@ LLInboxInventoryPanel::LLInboxInventoryPanel(const LLInboxInventoryPanel::Params LLInboxInventoryPanel::~LLInboxInventoryPanel() {} -LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge) +LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop) { LLUIColor item_color = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); @@ -74,6 +74,7 @@ LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge params.tool_tip = params.name; params.font_color = item_color; params.font_highlight_color = item_color; + params.allow_drop = allow_drop; return LLUICtrlFactory::create<LLInboxFolderViewFolder>(params); } diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h index c05e18c300..66aafe83d1 100755..100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.h +++ b/indra/newview/llpanelmarketplaceinboxinventory.h @@ -46,7 +46,7 @@ public: ~LLInboxInventoryPanel(); // virtual - LLFolderViewFolder * createFolderViewFolder(LLInvFVBridge * bridge); + LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop); LLFolderViewItem * createFolderViewItem(LLInvFVBridge * bridge); }; diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index cedd3025fc..cedd3025fc 100755..100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h index 60e9d4317d..60e9d4317d 100755..100644 --- a/indra/newview/llpanelme.h +++ b/indra/newview/llpanelme.h diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index 2856ea9db1..d7c43c224c 100755..100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -319,6 +319,10 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& _media // Helper to set media control to media URL as required void LLPanelMediaSettingsGeneral::updateMediaPreview() { + if(LLTrans::getString("Multiple Media") == mHomeURL->getValue().asString()) + { + return; + } if ( mHomeURL->getValue().asString().length() > 0 ) { if(mPreviewMedia->getCurrentNavUrl() != mHomeURL->getValue().asString()) diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h index 0ae1401ab2..0ae1401ab2 100755..100644 --- a/indra/newview/llpanelmediasettingsgeneral.h +++ b/indra/newview/llpanelmediasettingsgeneral.h diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp index cb0b7789ff..cb0b7789ff 100755..100644 --- a/indra/newview/llpanelmediasettingspermissions.cpp +++ b/indra/newview/llpanelmediasettingspermissions.cpp diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h index f976720180..f976720180 100755..100644 --- a/indra/newview/llpanelmediasettingspermissions.h +++ b/indra/newview/llpanelmediasettingspermissions.h diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp index b588e8f930..b588e8f930 100755..100644 --- a/indra/newview/llpanelmediasettingssecurity.cpp +++ b/indra/newview/llpanelmediasettingssecurity.cpp diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h index fe8e843571..fe8e843571 100755..100644 --- a/indra/newview/llpanelmediasettingssecurity.h +++ b/indra/newview/llpanelmediasettingssecurity.h diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp index 1cdd1b664e..1cdd1b664e 100755..100644 --- a/indra/newview/llpanelnearbymedia.cpp +++ b/indra/newview/llpanelnearbymedia.cpp diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h index a9c1b190cf..a9c1b190cf 100755..100644 --- a/indra/newview/llpanelnearbymedia.h +++ b/indra/newview/llpanelnearbymedia.h diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index dcd0aab3ab..5dd44b4444 100755..100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -1739,9 +1739,10 @@ void LLPanelObject::sendSculpt() return; LLSculptParams sculpt_params; + LLUUID sculpt_id = LLUUID::null; if (mCtrlSculptTexture) - sculpt_params.setSculptTexture(mCtrlSculptTexture->getImageAssetID()); + sculpt_id = mCtrlSculptTexture->getImageAssetID(); U8 sculpt_type = 0; @@ -1765,7 +1766,7 @@ void LLPanelObject::sendSculpt() if ((mCtrlSculptInvert) && (mCtrlSculptInvert->get())) sculpt_type |= LL_SCULPT_FLAG_INVERT; - sculpt_params.setSculptType(sculpt_type); + sculpt_params.setSculptTexture(sculpt_id, sculpt_type); mObject->setParameterEntry(LLNetworkData::PARAMS_SCULPT, sculpt_params, TRUE); } @@ -2000,7 +2001,11 @@ void LLPanelObject::onCancelSculpt(const LLSD& data) LLTextureCtrl* mTextureCtrl = getChild<LLTextureCtrl>("sculpt texture control"); if(!mTextureCtrl) return; - + + if(mSculptTextureRevert == LLUUID::null) + { + mSculptTextureRevert = LLUUID(SCULPT_DEFAULT_TEXTURE); + } mTextureCtrl->setImageAssetID(mSculptTextureRevert); sendSculpt(); diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h index 8829f493fa..8829f493fa 100755..100644 --- a/indra/newview/llpanelobject.h +++ b/indra/newview/llpanelobject.h diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index bf15f56b44..c4211d5508 100755..100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -130,7 +130,7 @@ public: virtual void move(LLFolderViewModelItem* parent_listener); virtual BOOL isItemCopyable() const; virtual BOOL copyToClipboard() const; - virtual BOOL cutToClipboard() const; + virtual BOOL cutToClipboard(); virtual BOOL isClipboardPasteable() const; virtual void pasteFromClipboard(); virtual void pasteLinkFromClipboard(); @@ -542,7 +542,7 @@ BOOL LLTaskInvFVBridge::copyToClipboard() const return FALSE; } -BOOL LLTaskInvFVBridge::cutToClipboard() const +BOOL LLTaskInvFVBridge::cutToClipboard() { return FALSE; } @@ -905,7 +905,11 @@ void LLTaskTextureBridge::openItem() LLPreviewTexture* preview = LLFloaterReg::showTypedInstance<LLPreviewTexture>("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES); if(preview) { - preview->setAuxItem(findItem()); + LLInventoryItem* item = findItem(); + if(item) + { + preview->setAuxItem(item); + } preview->setObjectID(mPanel->getTaskUUID()); } } @@ -1163,9 +1167,18 @@ void LLTaskNotecardBridge::openItem() { return; } - if(object->permModify() || gAgent.isGodlike()) + + // Note: even if we are not allowed to modify copyable notecard, we should be able to view it + LLInventoryItem *item = dynamic_cast<LLInventoryItem*>(object->getInventoryObject(mUUID)); + BOOL item_copy = item && gAgent.allowOperation(PERM_COPY, item->getPermissions(), GP_OBJECT_MANIPULATE); + if( item_copy + || object->permModify() + || gAgent.isGodlike()) { - LLPreviewNotecard* preview = LLFloaterReg::showTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(mUUID), TAKE_FOCUS_YES); + LLSD floater_key; + floater_key["taskid"] = mPanel->getTaskUUID(); + floater_key["itemid"] = mUUID; + LLPreviewNotecard* preview = LLFloaterReg::showTypedInstance<LLPreviewNotecard>("preview_notecard", floater_key, TAKE_FOCUS_YES); if (preview) { preview->setObjectID(mPanel->getTaskUUID()); diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h index 3de49242ac..3de49242ac 100755..100644 --- a/indra/newview/llpanelobjectinventory.h +++ b/indra/newview/llpanelobjectinventory.h diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp index 8202dfe9a3..8202dfe9a3 100755..100644 --- a/indra/newview/llpanelonlinestatus.cpp +++ b/indra/newview/llpanelonlinestatus.cpp diff --git a/indra/newview/llpanelonlinestatus.h b/indra/newview/llpanelonlinestatus.h index 7dc648f135..7dc648f135 100755..100644 --- a/indra/newview/llpanelonlinestatus.h +++ b/indra/newview/llpanelonlinestatus.h diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 496168229d..01a22df9e1 100755..100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -1059,6 +1059,9 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void) case LLAssetType::AT_BODYPART: applyListViewFilter(LVIT_BODYPART); break; + case LLAssetType::AT_GESTURE: + applyListViewFilter(LVIT_GESTURES); + break; case LLAssetType::AT_CLOTHING: default: applyListViewFilter(LVIT_CLOTHING); diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 30870daf40..841bb4337a 100755..100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -80,6 +80,7 @@ public: { LVIT_ALL = 0, LVIT_CLOTHING, + LVIT_GESTURES, LVIT_BODYPART, LVIT_ATTACHMENT, LVIT_SHAPE, diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 1e1f59055f..1e1f59055f 100755..100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h index a7917b457c..a7917b457c 100755..100644 --- a/indra/newview/llpaneloutfitsinventory.h +++ b/indra/newview/llpaneloutfitsinventory.h diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 5977d558d3..73b928f014 100755..100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -85,6 +85,8 @@ static const std::string RECENT_TAB_NAME = "recent_panel"; static const std::string BLOCKED_TAB_NAME = "blocked_panel"; // blocked avatars static const std::string COLLAPSED_BY_USER = "collapsed_by_user"; +const S32 BASE_MAX_AGENT_GROUPS = 42; +const S32 PREMIUM_MAX_AGENT_GROUPS = 60; extern S32 gMaxAgentGroups; @@ -586,6 +588,12 @@ BOOL LLPanelPeople::postBuild() getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2)); getChild<LLFilterEditor>("fbc_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2)); + if(gMaxAgentGroups <= BASE_MAX_AGENT_GROUPS) + { + getChild<LLTextBox>("groupcount")->setText(getString("GroupCountWithInfo")); + getChild<LLTextBox>("groupcount")->setURLClickedCallback(boost::bind(&LLPanelPeople::onGroupLimitInfo, this)); + } + mTabContainer = getChild<LLTabContainer>("tabs"); mTabContainer->setCommitCallback(boost::bind(&LLPanelPeople::onTabSelected, this, _2)); mSavedFilters.resize(mTabContainer->getTabCount()); @@ -902,8 +910,11 @@ void LLPanelPeople::updateButtons() LLPanel* groups_panel = mTabContainer->getCurrentPanel(); groups_panel->getChildView("minus_btn")->setEnabled(item_selected && selected_id.notNull()); // a real group selected - groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[COUNT]", llformat("%d",gAgent.mGroups.size())); - groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[REMAINING]", llformat("%d",(gMaxAgentGroups-gAgent.mGroups.size()))); + + U32 groups_count = gAgent.mGroups.size(); + U32 groups_ramaining = gMaxAgentGroups > groups_count ? gMaxAgentGroups - groups_count : 0; + groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[COUNT]", llformat("%d", groups_count)); + groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[REMAINING]", llformat("%d", groups_ramaining)); } else { @@ -1114,6 +1125,14 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string) } } +void LLPanelPeople::onGroupLimitInfo() +{ + LLSD args; + args["MAX_BASIC"] = BASE_MAX_AGENT_GROUPS; + args["MAX_PREMIUM"] = PREMIUM_MAX_AGENT_GROUPS; + LLNotificationsUtil::add("GroupLimitInfo", args); +} + void LLPanelPeople::onTabSelected(const LLSD& param) { std::string tab_name = getChild<LLPanel>(param.asString())->getName(); diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index c1d7a134fa..eb7e76a772 100755..100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -93,6 +93,7 @@ private: // UI callbacks void onFilterEdit(const std::string& search_string); + void onGroupLimitInfo(); void onTabSelected(const LLSD& param); void onAddFriendButtonClicked(); void onAddFriendWizButtonClicked(); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index a5f59dbf4a..a5f59dbf4a 100755..100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 9767bab89f..9767bab89f 100755..100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index ce9231d6f2..ce9231d6f2 100755..100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h index 87805bbf90..87805bbf90 100755..100644 --- a/indra/newview/llpanelpermissions.h +++ b/indra/newview/llpanelpermissions.h diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 8fa9aac024..40326cfb39 100755..100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -148,6 +148,9 @@ BOOL LLPanelPickInfo::postBuild() mScrollingPanelMinHeight = mScrollContainer->getScrolledViewRect().getHeight(); mScrollingPanelWidth = mScrollingPanel->getRect().getWidth(); + LLTextEditor* text_desc = getChild<LLTextEditor>(XML_DESC); + text_desc->setContentTrusted(false); + return TRUE; } diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 7a8bd66fcf..7a8bd66fcf 100755..100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index d73a5b402e..55c09d85ea 100755..100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -432,7 +432,7 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type) mNoPicks = !mPicksList->size(); } - else if(APT_CLASSIFIEDS == type) + else if((APT_CLASSIFIEDS == type) || (APT_CLASSIFIED_INFO == type)) { LLAvatarClassifieds* c_info = static_cast<LLAvatarClassifieds*>(data); if(c_info && getAvatarId() == c_info->target_id) diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 3bb7413ac3..3bb7413ac3 100755..100644 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index e62b5a4f1d..32b72fdd68 100755..100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -201,7 +201,7 @@ void LLPanelPlaceInfo::setErrorStatus(S32 status, const std::string& reason) // virtual void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data) { - if(parcel_data.snapshot_id.notNull()) + if(mSnapshotCtrl) { mSnapshotCtrl->setImageAssetID(parcel_data.snapshot_id); } diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index 30327378ef..30327378ef 100755..100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index e853b2d050..2fa4ee376a 100755..100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -53,6 +53,8 @@ #include "llviewerparcelmgr.h" #include "llviewerregion.h" +const F64 COVENANT_REFRESH_TIME_SEC = 60.0f; + static LLPanelInjector<LLPanelPlaceProfile> t_place_profile("panel_place_profile"); // Statics for textures filenames @@ -76,6 +78,7 @@ static std::string icon_see_avs_off; LLPanelPlaceProfile::LLPanelPlaceProfile() : LLPanelPlaceInfo(), + mNextCovenantUpdateTime(0), mForSalePanel(NULL), mYouAreHerePanel(NULL), mSelectedParcelID(-1), @@ -162,6 +165,9 @@ BOOL LLPanelPlaceProfile::postBuild() icon_see_avs_on = getString("icon_SeeAVs_On"); icon_see_avs_off = getString("icon_SeeAVs_Off"); + mLastSelectedRegionID = LLUUID::null; + mNextCovenantUpdateTime = 0; + return TRUE; } @@ -170,6 +176,9 @@ void LLPanelPlaceProfile::resetLocation() { LLPanelPlaceInfo::resetLocation(); + mLastSelectedRegionID = LLUUID::null; + mNextCovenantUpdateTime = 0; + mForSalePanel->setVisible(FALSE); mYouAreHerePanel->setVisible(FALSE); @@ -215,6 +224,8 @@ void LLPanelPlaceProfile::resetLocation() mSubdivideText->setValue(loading); mResaleText->setValue(loading); mSaleToText->setValue(loading); + + getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(TRUE); } // virtual @@ -330,13 +341,20 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, if (!region || !parcel) return; - // send EstateCovenantInfo message - LLMessageSystem *msg = gMessageSystem; - msg->newMessage("EstateCovenantRequest"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); - msg->sendReliable(region->getHost()); + if (mLastSelectedRegionID != region->getRegionID() + || mNextCovenantUpdateTime < LLTimer::getElapsedSeconds()) + { + // send EstateCovenantInfo message + // Note: LLPanelPlaceProfile doesn't change Covenant's content and any + // changes made by Estate floater should be requested by Estate floater + LLMessageSystem *msg = gMessageSystem; + msg->newMessage("EstateCovenantRequest"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); + msg->sendReliable(region->getHost()); + mNextCovenantUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC; + } LLParcelData parcel_data; @@ -522,6 +540,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, F32 dwell; BOOL for_sale; vpm->getDisplayInfo(&area, &claim_price, &rent_price, &for_sale, &dwell); + mForSalePanel->setVisible(for_sale); if (for_sale) { const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID(); @@ -540,8 +559,6 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mSaleToText->setText(getString("anyone")); } - mForSalePanel->setVisible(for_sale); - const U8* sign = (U8*)getString("price_text").c_str(); const U8* sqm = (U8*)getString("area_text").c_str(); @@ -598,6 +615,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mYouAreHerePanel->setVisible(is_current_parcel); getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale); + mAccordionCtrl->arrange(); } void LLPanelPlaceProfile::updateEstateName(const std::string& name) diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index 4547e14b2e..3d2654fc12 100755..100644 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -71,6 +71,7 @@ private: */ S32 mSelectedParcelID; LLUUID mLastSelectedRegionID; + F64 mNextCovenantUpdateTime; //seconds since client start LLPanel* mForSalePanel; LLPanel* mYouAreHerePanel; diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 4bcd932d4b..a9a0c30e26 100755..100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -921,7 +921,12 @@ void LLPanelPlaces::onBackButtonClicked() void LLPanelPlaces::togglePickPanel(BOOL visible) { if (mPickPanel) + { mPickPanel->setVisible(visible); + mPlaceProfile->setVisible(!visible); + updateVerbs(); + } + } void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) @@ -1141,16 +1146,21 @@ void LLPanelPlaces::updateVerbs() bool is_agent_place_info_visible = mPlaceInfoType == AGENT_INFO_TYPE; bool is_create_landmark_visible = mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE; + bool is_pick_panel_visible = false; + if(mPickPanel) + { + is_pick_panel_visible = mPickPanel->isInVisibleChain(); + } bool have_3d_pos = ! mPosGlobal.isExactlyZero(); - mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); - mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); + mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn && !is_pick_panel_visible); + mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn && !is_pick_panel_visible); mOverflowBtn->setVisible(is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn); mEditBtn->setVisible(mPlaceInfoType == LANDMARK_INFO_TYPE && !isLandmarkEditModeOn); mSaveBtn->setVisible(isLandmarkEditModeOn); mCancelBtn->setVisible(isLandmarkEditModeOn); mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn); - mPlaceInfoBtn->setVisible(!is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn); + mPlaceInfoBtn->setVisible(!is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn && !is_pick_panel_visible); mPlaceInfoBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos); diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index c3d1b9bc53..c3d1b9bc53 100755..100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp index 9644b7518e..9644b7518e 100755..100644 --- a/indra/newview/llpanelplacestab.cpp +++ b/indra/newview/llpanelplacestab.cpp diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h index 367ce46e2e..367ce46e2e 100755..100644 --- a/indra/newview/llpanelplacestab.h +++ b/indra/newview/llpanelplacestab.h diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index f42df221e4..f42df221e4 100755..100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h index 6d2eb3430e..6d2eb3430e 100755..100644 --- a/indra/newview/llpanelprimmediacontrols.h +++ b/indra/newview/llpanelprimmediacontrols.h diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index f91c4110c0..f91c4110c0 100755..100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index d97f60ed22..d97f60ed22 100755..100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 106fb4997e..106fb4997e 100755..100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h index 42ad798d60..42ad798d60 100755..100644 --- a/indra/newview/llpanelsnapshot.h +++ b/indra/newview/llpanelsnapshot.h diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index c8a201a5c8..c55e230b5e 100755..100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -48,6 +48,8 @@ public: /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + void onResolutionCommit(LLUICtrl* ctrl); + private: /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; } /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } @@ -72,6 +74,8 @@ BOOL LLPanelSnapshotInventory::postBuild() { getChild<LLSpinCtrl>(getWidthSpinnerName())->setAllowEdit(FALSE); getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(FALSE); + + getChild<LLUICtrl>(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onResolutionCommit, this, _1)); return LLPanelSnapshot::postBuild(); } @@ -89,6 +93,13 @@ void LLPanelSnapshotInventory::updateControls(const LLSD& info) getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot); } +void LLPanelSnapshotInventory::onResolutionCommit(LLUICtrl* ctrl) +{ + BOOL current_window_selected = (getChild<LLComboBox>(getImageSizeComboName())->getCurrentIndex() == 3); + getChild<LLSpinCtrl>(getWidthSpinnerName())->setVisible(!current_window_selected); + getChild<LLSpinCtrl>(getHeightSpinnerName())->setVisible(!current_window_selected); +} + void LLPanelSnapshotInventory::onSend() { LLFloaterSnapshot::saveTexture(); diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index 43e38b95e2..01dfdc4ece 100755..100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -58,6 +58,8 @@ private: /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; /*virtual*/ void updateControls(const LLSD& info); + S32 mLocalFormat; + void onFormatComboCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); void onSaveFlyoutCommit(LLUICtrl* ctrl); @@ -67,6 +69,7 @@ static LLPanelInjector<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal") LLPanelSnapshotLocal::LLPanelSnapshotLocal() { + mLocalFormat = gSavedSettings.getS32("SnapshotFormat"); mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::cancel, this)); } @@ -83,6 +86,10 @@ BOOL LLPanelSnapshotLocal::postBuild() // virtual void LLPanelSnapshotLocal::onOpen(const LLSD& key) { + if(gSavedSettings.getS32("SnapshotFormat") != mLocalFormat) + { + getChild<LLComboBox>("local_format_combo")->selectNthItem(mLocalFormat); + } LLPanelSnapshot::onOpen(key); } @@ -129,6 +136,7 @@ void LLPanelSnapshotLocal::updateControls(const LLSD& info) void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl) { + mLocalFormat = getImageFormat(); // will call updateControls() LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 0fc9ceec83..0fc9ceec83 100755..100644 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 8e37b1418c..8e37b1418c 100755..100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index 8949eb73eb..8949eb73eb 100755..100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 3de9dc2f80..3de9dc2f80 100755..100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h index b88861c5c6..b88861c5c6 100755..100644 --- a/indra/newview/llpanelteleporthistory.h +++ b/indra/newview/llpanelteleporthistory.h diff --git a/indra/newview/llpaneltiptoast.cpp b/indra/newview/llpaneltiptoast.cpp index 35009a552d..35009a552d 100755..100644 --- a/indra/newview/llpaneltiptoast.cpp +++ b/indra/newview/llpaneltiptoast.cpp diff --git a/indra/newview/llpaneltiptoast.h b/indra/newview/llpaneltiptoast.h index cb09f1dca6..cb09f1dca6 100755..100644 --- a/indra/newview/llpaneltiptoast.h +++ b/indra/newview/llpaneltiptoast.h diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 109013498e..109013498e 100755..100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h index f37bd9c048..f37bd9c048 100755..100644 --- a/indra/newview/llpaneltopinfobar.h +++ b/indra/newview/llpaneltopinfobar.h diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index 3946d6a63b..3946d6a63b 100755..100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h index 83464f476a..83464f476a 100755..100644 --- a/indra/newview/llpanelvoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp index a3f0e25ef0..a3f0e25ef0 100755..100644 --- a/indra/newview/llpanelvoiceeffect.cpp +++ b/indra/newview/llpanelvoiceeffect.cpp diff --git a/indra/newview/llpanelvoiceeffect.h b/indra/newview/llpanelvoiceeffect.h index bba525e1df..bba525e1df 100755..100644 --- a/indra/newview/llpanelvoiceeffect.h +++ b/indra/newview/llpanelvoiceeffect.h diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index f1f87e212d..f1f87e212d 100755..100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h index deb6b6f2a6..deb6b6f2a6 100755..100644 --- a/indra/newview/llpanelvolume.h +++ b/indra/newview/llpanelvolume.h diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index cb00f742cc..cb00f742cc 100755..100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h index b843fab756..b843fab756 100755..100644 --- a/indra/newview/llpanelvolumepulldown.h +++ b/indra/newview/llpanelvolumepulldown.h diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index 75e0ed3741..d86a8b4480 100755..100644 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -131,7 +131,7 @@ protected: { bp_selected = true; } - else if (type == LLAssetType::AT_OBJECT) + else if (type == LLAssetType::AT_OBJECT || type == LLAssetType::AT_GESTURE) { attachments_selected = true; } diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h index 9a212b3cca..9a212b3cca 100755..100644 --- a/indra/newview/llpanelwearing.h +++ b/indra/newview/llpanelwearing.h diff --git a/indra/newview/llparcelselection.cpp b/indra/newview/llparcelselection.cpp index 4d1901adc9..4d1901adc9 100755..100644 --- a/indra/newview/llparcelselection.cpp +++ b/indra/newview/llparcelselection.cpp diff --git a/indra/newview/llparcelselection.h b/indra/newview/llparcelselection.h index 1cbdfc6f74..1cbdfc6f74 100755..100644 --- a/indra/newview/llparcelselection.h +++ b/indra/newview/llparcelselection.h diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index ee6893907e..ee6893907e 100755..100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index 3a3ae76604..3a3ae76604 100755..100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h diff --git a/indra/newview/llpatchvertexarray.cpp b/indra/newview/llpatchvertexarray.cpp index 6e3e375488..6e3e375488 100755..100644 --- a/indra/newview/llpatchvertexarray.cpp +++ b/indra/newview/llpatchvertexarray.cpp diff --git a/indra/newview/llpatchvertexarray.h b/indra/newview/llpatchvertexarray.h index 721f3f18b1..721f3f18b1 100755..100644 --- a/indra/newview/llpatchvertexarray.h +++ b/indra/newview/llpatchvertexarray.h diff --git a/indra/newview/llpathfindingcharacter.cpp b/indra/newview/llpathfindingcharacter.cpp index 00f2ebc4bb..00f2ebc4bb 100755..100644 --- a/indra/newview/llpathfindingcharacter.cpp +++ b/indra/newview/llpathfindingcharacter.cpp diff --git a/indra/newview/llpathfindingcharacter.h b/indra/newview/llpathfindingcharacter.h index 7cf9f401b0..7cf9f401b0 100755..100644 --- a/indra/newview/llpathfindingcharacter.h +++ b/indra/newview/llpathfindingcharacter.h diff --git a/indra/newview/llpathfindingcharacterlist.cpp b/indra/newview/llpathfindingcharacterlist.cpp index 12340cebfa..12340cebfa 100755..100644 --- a/indra/newview/llpathfindingcharacterlist.cpp +++ b/indra/newview/llpathfindingcharacterlist.cpp diff --git a/indra/newview/llpathfindingcharacterlist.h b/indra/newview/llpathfindingcharacterlist.h index 4ecf70001d..4ecf70001d 100755..100644 --- a/indra/newview/llpathfindingcharacterlist.h +++ b/indra/newview/llpathfindingcharacterlist.h diff --git a/indra/newview/llpathfindinglinkset.cpp b/indra/newview/llpathfindinglinkset.cpp index 50b76378f5..50b76378f5 100755..100644 --- a/indra/newview/llpathfindinglinkset.cpp +++ b/indra/newview/llpathfindinglinkset.cpp diff --git a/indra/newview/llpathfindinglinkset.h b/indra/newview/llpathfindinglinkset.h index 308a3a1e0f..308a3a1e0f 100755..100644 --- a/indra/newview/llpathfindinglinkset.h +++ b/indra/newview/llpathfindinglinkset.h diff --git a/indra/newview/llpathfindinglinksetlist.cpp b/indra/newview/llpathfindinglinksetlist.cpp index b886e46765..b886e46765 100755..100644 --- a/indra/newview/llpathfindinglinksetlist.cpp +++ b/indra/newview/llpathfindinglinksetlist.cpp diff --git a/indra/newview/llpathfindinglinksetlist.h b/indra/newview/llpathfindinglinksetlist.h index 1d38e4c11a..1d38e4c11a 100755..100644 --- a/indra/newview/llpathfindinglinksetlist.h +++ b/indra/newview/llpathfindinglinksetlist.h diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 4977a72dc6..4977a72dc6 100755..100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h index c61ff244fc..c61ff244fc 100755..100644 --- a/indra/newview/llpathfindingmanager.h +++ b/indra/newview/llpathfindingmanager.h diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index 0287c07f96..0287c07f96 100755..100644 --- a/indra/newview/llpathfindingnavmesh.cpp +++ b/indra/newview/llpathfindingnavmesh.cpp diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h index 87f32b8d56..87f32b8d56 100755..100644 --- a/indra/newview/llpathfindingnavmesh.h +++ b/indra/newview/llpathfindingnavmesh.h diff --git a/indra/newview/llpathfindingnavmeshstatus.cpp b/indra/newview/llpathfindingnavmeshstatus.cpp index 2eaa6075ca..2eaa6075ca 100755..100644 --- a/indra/newview/llpathfindingnavmeshstatus.cpp +++ b/indra/newview/llpathfindingnavmeshstatus.cpp diff --git a/indra/newview/llpathfindingnavmeshstatus.h b/indra/newview/llpathfindingnavmeshstatus.h index 74533fa484..74533fa484 100755..100644 --- a/indra/newview/llpathfindingnavmeshstatus.h +++ b/indra/newview/llpathfindingnavmeshstatus.h diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp index e190dbba65..e190dbba65 100755..100644 --- a/indra/newview/llpathfindingnavmeshzone.cpp +++ b/indra/newview/llpathfindingnavmeshzone.cpp diff --git a/indra/newview/llpathfindingnavmeshzone.h b/indra/newview/llpathfindingnavmeshzone.h index baa1cc5979..baa1cc5979 100755..100644 --- a/indra/newview/llpathfindingnavmeshzone.h +++ b/indra/newview/llpathfindingnavmeshzone.h diff --git a/indra/newview/llpathfindingobject.cpp b/indra/newview/llpathfindingobject.cpp index 900763eae4..900763eae4 100755..100644 --- a/indra/newview/llpathfindingobject.cpp +++ b/indra/newview/llpathfindingobject.cpp diff --git a/indra/newview/llpathfindingobject.h b/indra/newview/llpathfindingobject.h index b8d3ca2364..b8d3ca2364 100755..100644 --- a/indra/newview/llpathfindingobject.h +++ b/indra/newview/llpathfindingobject.h diff --git a/indra/newview/llpathfindingobjectlist.cpp b/indra/newview/llpathfindingobjectlist.cpp index f1ecb45fc0..f1ecb45fc0 100755..100644 --- a/indra/newview/llpathfindingobjectlist.cpp +++ b/indra/newview/llpathfindingobjectlist.cpp diff --git a/indra/newview/llpathfindingobjectlist.h b/indra/newview/llpathfindingobjectlist.h index 61580582d3..61580582d3 100755..100644 --- a/indra/newview/llpathfindingobjectlist.h +++ b/indra/newview/llpathfindingobjectlist.h diff --git a/indra/newview/llpathfindingpathtool.cpp b/indra/newview/llpathfindingpathtool.cpp index 006755e20b..006755e20b 100755..100644 --- a/indra/newview/llpathfindingpathtool.cpp +++ b/indra/newview/llpathfindingpathtool.cpp diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h index 97284265f1..97284265f1 100755..100644 --- a/indra/newview/llpathfindingpathtool.h +++ b/indra/newview/llpathfindingpathtool.h diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp index 9e4f50b7a7..9e4f50b7a7 100755..100644 --- a/indra/newview/llpersistentnotificationstorage.cpp +++ b/indra/newview/llpersistentnotificationstorage.cpp diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h index bf0306380e..bf0306380e 100755..100644 --- a/indra/newview/llpersistentnotificationstorage.h +++ b/indra/newview/llpersistentnotificationstorage.h diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index ea10d03264..ea10d03264 100755..100644 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp diff --git a/indra/newview/llphysicsmotion.h b/indra/newview/llphysicsmotion.h index b246fa99bb..b246fa99bb 100755..100644 --- a/indra/newview/llphysicsmotion.h +++ b/indra/newview/llphysicsmotion.h diff --git a/indra/newview/llphysicsshapebuilderutil.cpp b/indra/newview/llphysicsshapebuilderutil.cpp index 5bfe5c9941..5bfe5c9941 100755..100644 --- a/indra/newview/llphysicsshapebuilderutil.cpp +++ b/indra/newview/llphysicsshapebuilderutil.cpp diff --git a/indra/newview/llphysicsshapebuilderutil.h b/indra/newview/llphysicsshapebuilderutil.h index bd5b7d799c..bd5b7d799c 100755..100644 --- a/indra/newview/llphysicsshapebuilderutil.h +++ b/indra/newview/llphysicsshapebuilderutil.h diff --git a/indra/newview/llplacesfolderview.cpp b/indra/newview/llplacesfolderview.cpp index fe89c1e314..fe89c1e314 100755..100644 --- a/indra/newview/llplacesfolderview.cpp +++ b/indra/newview/llplacesfolderview.cpp diff --git a/indra/newview/llplacesfolderview.h b/indra/newview/llplacesfolderview.h index 65fe76007a..65fe76007a 100755..100644 --- a/indra/newview/llplacesfolderview.h +++ b/indra/newview/llplacesfolderview.h diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp index a498d27d2b..a498d27d2b 100755..100644 --- a/indra/newview/llplacesinventorybridge.cpp +++ b/indra/newview/llplacesinventorybridge.cpp diff --git a/indra/newview/llplacesinventorybridge.h b/indra/newview/llplacesinventorybridge.h index 108991210f..108991210f 100755..100644 --- a/indra/newview/llplacesinventorybridge.h +++ b/indra/newview/llplacesinventorybridge.h diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 5eadd65884..5eadd65884 100755..100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 2805fc4257..2805fc4257 100755..100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp index 153f0930c2..153f0930c2 100755..100644 --- a/indra/newview/llpopupview.cpp +++ b/indra/newview/llpopupview.cpp diff --git a/indra/newview/llpopupview.h b/indra/newview/llpopupview.h index b378f61984..b378f61984 100755..100644 --- a/indra/newview/llpopupview.h +++ b/indra/newview/llpopupview.h diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp index 5987044bff..5987044bff 100755..100644 --- a/indra/newview/llpostcard.cpp +++ b/indra/newview/llpostcard.cpp diff --git a/indra/newview/llpostcard.h b/indra/newview/llpostcard.h index 0eb118b906..0eb118b906 100755..100644 --- a/indra/newview/llpostcard.h +++ b/indra/newview/llpostcard.h diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index bf2652cb49..fb21b980dc 100755..100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -49,6 +49,7 @@ #include "llviewerinventory.h" #include "llviewerwindow.h" #include "lltrans.h" +#include "roles_constants.h" // Constants @@ -230,8 +231,23 @@ void LLPreview::refreshFromItem() } getChild<LLUICtrl>("desc")->setValue(item->getDescription()); - BOOL can_agent_manipulate = item->getPermissions().allowModifyBy(gAgent.getID()); - getChildView("desc")->setEnabled(can_agent_manipulate); + getChildView("desc")->setEnabled(canModify(mObjectUUID, item)); +} + +// static +BOOL LLPreview::canModify(const LLUUID taskUUID, const LLInventoryItem* item) +{ + if (taskUUID.notNull()) + { + LLViewerObject* object = gObjectList.findObject(taskUUID); + if(object && !object->permModify()) + { + // No permission to edit in-world inventory + return FALSE; + } + } + + return item && gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE); } // static diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h index 759430c3a5..49c114720b 100755..100644 --- a/indra/newview/llpreview.h +++ b/indra/newview/llpreview.h @@ -105,7 +105,11 @@ public: // llview /*virtual*/ void draw(); void refreshFromItem(); - + + // We can't modify Item or description in preview if either in-world Object + // or Item itself is unmodifiable + static BOOL canModify(const LLUUID taskUUID, const LLInventoryItem* item); + protected: virtual void onCommit(); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index 35ac0537a3..35ac0537a3 100755..100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp diff --git a/indra/newview/llpreviewanim.h b/indra/newview/llpreviewanim.h index 8eaed6ca1f..8eaed6ca1f 100755..100644 --- a/indra/newview/llpreviewanim.h +++ b/indra/newview/llpreviewanim.h diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index c378738b05..c378738b05 100755..100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h index 7ce5706a0d..7ce5706a0d 100755..100644 --- a/indra/newview/llpreviewgesture.h +++ b/indra/newview/llpreviewgesture.h diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 1308d1e9a7..f100c996b3 100755..100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -218,7 +218,7 @@ void LLPreviewNotecard::loadAsset() LLPermissions perm(item->getPermissions()); BOOL is_owner = gAgent.allowOperation(PERM_OWNER, perm, GP_OBJECT_MANIPULATE); BOOL allow_copy = gAgent.allowOperation(PERM_COPY, perm, GP_OBJECT_MANIPULATE); - BOOL allow_modify = gAgent.allowOperation(PERM_MODIFY, perm, GP_OBJECT_MANIPULATE); + BOOL allow_modify = canModify(mObjectUUID, item); if (allow_copy || gAgent.isGodlike()) { @@ -233,6 +233,7 @@ void LLPreviewNotecard::loadAsset() else { LLHost source_sim = LLHost::invalid; + LLSD* user_data = new LLSD(); if (mObjectUUID.notNull()) { LLViewerObject *objectp = gObjectList.findObject(mObjectUUID); @@ -251,7 +252,13 @@ void LLPreviewNotecard::loadAsset() mAssetStatus = PREVIEW_ASSET_LOADED; return; } + user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID); } + else + { + user_data = new LLSD(mItemUUID); + } + gAssetStorage->getInvItemAsset(source_sim, gAgent.getID(), gAgent.getSessionID(), @@ -261,7 +268,7 @@ void LLPreviewNotecard::loadAsset() item->getAssetUUID(), item->getType(), &onLoadComplete, - (void*)new LLUUID(mItemUUID), + (void*)user_data, TRUE); mAssetStatus = PREVIEW_ASSET_LOADING; } @@ -304,9 +311,8 @@ void LLPreviewNotecard::onLoadComplete(LLVFS *vfs, void* user_data, S32 status, LLExtStat ext_status) { LL_INFOS() << "LLPreviewNotecard::onLoadComplete()" << LL_ENDL; - LLUUID* item_id = (LLUUID*)user_data; - - LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(*item_id)); + LLSD* floater_key = (LLSD*)user_data; + LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", *floater_key); if( preview ) { if(0 == status) @@ -338,10 +344,7 @@ void LLPreviewNotecard::onLoadComplete(LLVFS *vfs, } previewEditor->makePristine(); - - const LLInventoryItem* item = preview->getItem(); - BOOL modifiable = item && gAgent.allowOperation(PERM_MODIFY, - item->getPermissions(), GP_OBJECT_MANIPULATE); + BOOL modifiable = preview->canModify(preview->mObjectID, preview->getItem()); preview->setEnabled(modifiable); preview->mAssetStatus = PREVIEW_ASSET_LOADED; } @@ -365,7 +368,7 @@ void LLPreviewNotecard::onLoadComplete(LLVFS *vfs, preview->mAssetStatus = PREVIEW_ASSET_ERROR; } } - delete item_id; + delete floater_key; } // static diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h index 1cf08dedd6..1cf08dedd6 100755..100644 --- a/indra/newview/llpreviewnotecard.h +++ b/indra/newview/llpreviewnotecard.h diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 7588c29ab8..1e6a23f365 100755..100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -85,19 +85,22 @@ #include "llviewercontrol.h" #include "llappviewer.h" #include "llfloatergotoline.h" +#include "llexperiencecache.h" +#include "llfloaterexperienceprofile.h" +#include "llexperienceassociationresponder.h" const std::string HELLO_LSL = "default\n" "{\n" - " state_entry()\n" - " {\n" - " llSay(0, \"Hello, Avatar!\");\n" - " }\n" + " state_entry()\n" + " {\n" + " llSay(0, \"Hello, Avatar!\");\n" + " }\n" "\n" - " touch_start(integer total_number)\n" - " {\n" - " llSay(0, \"Touched.\");\n" - " }\n" + " touch_start(integer total_number)\n" + " {\n" + " llSay(0, \"Touched.\");\n" + " }\n" "}\n"; const std::string HELP_LSL_PORTAL_TOPIC = "LSL_Portal"; @@ -114,6 +117,26 @@ static bool have_script_upload_cap(LLUUID& object_id) return object && (! object->getRegion()->getCapability("UpdateScriptTask").empty()); } + +class ExperienceResponder : public LLHTTPClient::Responder +{ +public: + ExperienceResponder(const LLHandle<LLLiveLSLEditor>& parent):mParent(parent) + { + } + + LLHandle<LLLiveLSLEditor> mParent; + + /*virtual*/ void httpSuccess() + { + LLLiveLSLEditor* parent = mParent.get(); + if(!parent) + return; + + parent->setExperienceIds(getContent()["experience_ids"]); + } +}; + /// --------------------------------------------------------------------------- /// LLLiveLSLFile /// --------------------------------------------------------------------------- @@ -192,7 +215,7 @@ private: protected: LLLineEditor* mSearchBox; LLLineEditor* mReplaceBox; - void onSearchBoxCommit(); + void onSearchBoxCommit(); }; LLFloaterScriptSearch* LLFloaterScriptSearch::sInstance = NULL; @@ -401,6 +424,55 @@ LLScriptEdCore::~LLScriptEdCore() } } +void LLLiveLSLEditor::experienceChanged() +{ + if(mScriptEd->getAssociatedExperience() != mExperiences->getSelectedValue().asUUID()) + { + mScriptEd->enableSave(getIsModifiable()); + //getChildView("Save_btn")->setEnabled(TRUE); + mScriptEd->setAssociatedExperience(mExperiences->getSelectedValue().asUUID()); + updateExperiencePanel(); + } +} + +void LLLiveLSLEditor::onViewProfile( LLUICtrl *ui, void* userdata ) +{ + LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata; + + LLUUID id; + if(self->mExperienceEnabled->get()) + { + id=self->mScriptEd->getAssociatedExperience(); + if(id.notNull()) + { + LLFloaterReg::showInstance("experience_profile", id, true); + } + } + +} + +void LLLiveLSLEditor::onToggleExperience( LLUICtrl *ui, void* userdata ) +{ + LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata; + + LLUUID id; + if(self->mExperienceEnabled->get()) + { + if(self->mScriptEd->getAssociatedExperience().isNull()) + { + id=self->mExperienceIds.beginArray()->asUUID(); + } + } + + if(id != self->mScriptEd->getAssociatedExperience()) + { + self->mScriptEd->enableSave(self->getIsModifiable()); + } + self->mScriptEd->setAssociatedExperience(id); + + self->updateExperiencePanel(); +} + BOOL LLScriptEdCore::postBuild() { mErrorList = getChild<LLScrollListCtrl>("lsl errors"); @@ -827,7 +899,7 @@ bool LLScriptEdCore::handleSaveChangesDialog(const LLSD& notification, const LLS case 2: // "Cancel" default: // If we were quitting, we didn't really mean it. - LLAppViewer::instance()->abortQuit(); + LLAppViewer::instance()->abortQuit(); break; } return false; @@ -862,8 +934,8 @@ void LLScriptEdCore::onBtnDynamicHelp() LLKeywordToken *token; LLKeywords::keyword_iterator_t token_it; for (token_it = mEditor->keywordsBegin(); - token_it != mEditor->keywordsEnd(); - ++token_it) + token_it != mEditor->keywordsEnd(); + ++token_it) { token = token_it->second; help_combo->add(wstring_to_utf8str(token->getToken())); @@ -1215,6 +1287,143 @@ bool LLScriptEdCore::enableLoadFromFileMenu(void* userdata) return (self && self->mEditor) ? self->mEditor->canLoadOrSaveToFile() : FALSE; } +LLUUID LLScriptEdCore::getAssociatedExperience()const +{ + return mAssociatedExperience; +} + +void LLLiveLSLEditor::setExperienceIds( const LLSD& experience_ids ) +{ + mExperienceIds=experience_ids; + updateExperiencePanel(); +} + + +void LLLiveLSLEditor::updateExperiencePanel() +{ + if(mScriptEd->getAssociatedExperience().isNull()) + { + mExperienceEnabled->set(FALSE); + mExperiences->setVisible(FALSE); + if(mExperienceIds.size()>0) + { + mExperienceEnabled->setEnabled(TRUE); + mExperienceEnabled->setToolTip(getString("add_experiences")); + } + else + { + mExperienceEnabled->setEnabled(FALSE); + mExperienceEnabled->setToolTip(getString("no_experiences")); + } + getChild<LLButton>("view_profile")->setVisible(FALSE); + } + else + { + mExperienceEnabled->setToolTip(getString("experience_enabled")); + mExperienceEnabled->setEnabled(getIsModifiable()); + mExperiences->setVisible(TRUE); + mExperienceEnabled->set(TRUE); + getChild<LLButton>("view_profile")->setToolTip(getString("show_experience_profile")); + buildExperienceList(); + } +} + +void LLLiveLSLEditor::buildExperienceList() +{ + mExperiences->clearRows(); + bool foundAssociated=false; + const LLUUID& associated = mScriptEd->getAssociatedExperience(); + LLUUID last; + LLScrollListItem* item; + for(LLSD::array_const_iterator it = mExperienceIds.beginArray(); it != mExperienceIds.endArray(); ++it) + { + LLUUID id = it->asUUID(); + EAddPosition position = ADD_BOTTOM; + if(id == associated) + { + foundAssociated = true; + position = ADD_TOP; + } + + const LLSD& experience = LLExperienceCache::get(id); + if(experience.isUndefined()) + { + mExperiences->add(getString("loading"), id, position); + last = id; + } + else + { + std::string experience_name_string = experience[LLExperienceCache::NAME].asString(); + if (experience_name_string.empty()) + { + experience_name_string = LLTrans::getString("ExperienceNameUntitled"); + } + mExperiences->add(experience_name_string, id, position); + } + } + + if(!foundAssociated ) + { + const LLSD& experience = LLExperienceCache::get(associated); + if(experience.isDefined()) + { + std::string experience_name_string = experience[LLExperienceCache::NAME].asString(); + if (experience_name_string.empty()) + { + experience_name_string = LLTrans::getString("ExperienceNameUntitled"); + } + item=mExperiences->add(experience_name_string, associated, ADD_TOP); + } + else + { + item=mExperiences->add(getString("loading"), associated, ADD_TOP); + last = associated; + } + item->setEnabled(FALSE); + } + + if(last.notNull()) + { + mExperiences->setEnabled(FALSE); + LLExperienceCache::get(last, boost::bind(&LLLiveLSLEditor::buildExperienceList, this)); + } + else + { + mExperiences->setEnabled(TRUE); + mExperiences->sortByName(TRUE); + mExperiences->setCurrentByIndex(mExperiences->getCurrentIndex()); + getChild<LLButton>("view_profile")->setVisible(TRUE); + } +} + + +void LLScriptEdCore::setAssociatedExperience( const LLUUID& experience_id ) +{ + mAssociatedExperience = experience_id; +} + + + +void LLLiveLSLEditor::requestExperiences() +{ + if (!getIsModifiable()) + { + return; + } + + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + std::string lookup_url=region->getCapability("GetCreatorExperiences"); + if(!lookup_url.empty()) + { + LLHTTPClient::get(lookup_url, new ExperienceResponder(getDerivedHandle<LLLiveLSLEditor>())); + } + } +} + + + /// --------------------------------------------------------------------------- /// LLScriptEdContainer /// --------------------------------------------------------------------------- @@ -1233,7 +1442,7 @@ std::string LLScriptEdContainer::getTmpFileName() std::string script_id = mObjectUUID.asString() + "_" + mItemUUID.asString(); // Use MD5 sum to make the file name shorter and not exceed maximum path length. - char script_id_hash_str[33]; /* Flawfinder: ignore */ + char script_id_hash_str[33]; /* Flawfinder: ignore */ LLMD5 script_id_hash((const U8 *)script_id.c_str()); script_id_hash.hex_digest(script_id_hash_str); @@ -1682,6 +1891,16 @@ BOOL LLLiveLSLEditor::postBuild() mScriptEd->mEditor->makePristine(); mScriptEd->mEditor->setFocus(TRUE); + + mExperiences = getChild<LLComboBox>("Experiences..."); + mExperiences->setCommitCallback(boost::bind(&LLLiveLSLEditor::experienceChanged, this)); + + mExperienceEnabled = getChild<LLCheckBoxCtrl>("enable_xp"); + + childSetCommitCallback("enable_xp", onToggleExperience, this); + childSetCommitCallback("view_profile", onViewProfile, this); + + return LLPreview::postBuild(); } @@ -1725,61 +1944,60 @@ void LLLiveLSLEditor::loadAsset() if(object) { LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(object->getInventoryObject(mItemUUID)); - if(item - && (gAgent.allowOperation(PERM_COPY, item->getPermissions(), GP_OBJECT_MANIPULATE) - || gAgent.isGodlike())) - { - mItem = new LLViewerInventoryItem(item); - //LL_INFOS() << "asset id " << mItem->getAssetUUID() << LL_ENDL; - } - if(!gAgent.isGodlike() - && (item - && (!gAgent.allowOperation(PERM_COPY, item->getPermissions(), GP_OBJECT_MANIPULATE) - || !gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)))) - { - mItem = new LLViewerInventoryItem(item); - mScriptEd->setScriptText(getString("not_allowed"), FALSE); - mScriptEd->mEditor->makePristine(); - mScriptEd->enableSave(FALSE); - mAssetStatus = PREVIEW_ASSET_LOADED; - } - else if(item && mItem.notNull()) + if(item) { - // request the text from the object + ExperienceAssociationResponder::fetchAssociatedExperience(item->getParentUUID(), item->getUUID(), boost::bind(&LLLiveLSLEditor::setAssociatedExperience, getDerivedHandle<LLLiveLSLEditor>(), _1)); + + bool isGodlike = gAgent.isGodlike(); + bool copyManipulate = gAgent.allowOperation(PERM_COPY, item->getPermissions(), GP_OBJECT_MANIPULATE); + mIsModifiable = gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE); + + if(!isGodlike && (!copyManipulate || !mIsModifiable)) + { + mItem = new LLViewerInventoryItem(item); + mScriptEd->setScriptText(getString("not_allowed"), FALSE); + mScriptEd->mEditor->makePristine(); + mScriptEd->enableSave(FALSE); + mAssetStatus = PREVIEW_ASSET_LOADED; + } + else if(copyManipulate || isGodlike) + { + mItem = new LLViewerInventoryItem(item); + // request the text from the object LLSD* user_data = new LLSD(); user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID); - gAssetStorage->getInvItemAsset(object->getRegion()->getHost(), - gAgent.getID(), - gAgent.getSessionID(), - item->getPermissions().getOwner(), - object->getID(), - item->getUUID(), - item->getAssetUUID(), - item->getType(), - &LLLiveLSLEditor::onLoadComplete, - (void*)user_data, - TRUE); - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_GetScriptRunning); - msg->nextBlockFast(_PREHASH_Script); - msg->addUUIDFast(_PREHASH_ObjectID, mObjectUUID); - msg->addUUIDFast(_PREHASH_ItemID, mItemUUID); - msg->sendReliable(object->getRegion()->getHost()); - mAskedForRunningInfo = TRUE; - mAssetStatus = PREVIEW_ASSET_LOADING; + gAssetStorage->getInvItemAsset(object->getRegion()->getHost(), + gAgent.getID(), + gAgent.getSessionID(), + item->getPermissions().getOwner(), + object->getID(), + item->getUUID(), + item->getAssetUUID(), + item->getType(), + &LLLiveLSLEditor::onLoadComplete, + (void*)user_data, + TRUE); + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_GetScriptRunning); + msg->nextBlockFast(_PREHASH_Script); + msg->addUUIDFast(_PREHASH_ObjectID, mObjectUUID); + msg->addUUIDFast(_PREHASH_ItemID, mItemUUID); + msg->sendReliable(object->getRegion()->getHost()); + mAskedForRunningInfo = TRUE; + mAssetStatus = PREVIEW_ASSET_LOADING; + } } - else + + if(mItem.isNull()) { mScriptEd->setScriptText(LLStringUtil::null, FALSE); mScriptEd->mEditor->makePristine(); mAssetStatus = PREVIEW_ASSET_LOADED; + mIsModifiable = FALSE; } - mIsModifiable = item && gAgent.allowOperation(PERM_MODIFY, - item->getPermissions(), - GP_OBJECT_MANIPULATE); - + refreshFromItem(); // This is commented out, because we don't completely // handle script exports yet. /* @@ -1816,6 +2034,8 @@ void LLLiveLSLEditor::loadAsset() time_corrected()); mAssetStatus = PREVIEW_ASSET_LOADED; } + + requestExperiences(); } // static @@ -2079,7 +2299,7 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/) BOOL is_running = getChild<LLCheckBoxCtrl>( "running")->get(); if (!url.empty()) { - uploadAssetViaCaps(url, filename, mObjectUUID, mItemUUID, is_running); + uploadAssetViaCaps(url, filename, mObjectUUID, mItemUUID, is_running, mScriptEd->getAssociatedExperience()); } } @@ -2087,7 +2307,8 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url, const std::string& filename, const LLUUID& task_id, const LLUUID& item_id, - BOOL is_running) + BOOL is_running, + const LLUUID& experience_public_id ) { LL_INFOS() << "Update Task Inventory via capability " << url << LL_ENDL; LLSD body; @@ -2095,6 +2316,7 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url, body["item_id"] = item_id; body["is_script_running"] = is_running; body["target"] = monoChecked() ? "mono" : "lsl2"; + body["experience"] = experience_public_id; LLHTTPClient::post(url, body, new LLUpdateTaskInventoryResponder(body, filename, LLAssetType::AT_LSL_TEXT)); } @@ -2208,8 +2430,12 @@ void LLLiveLSLEditor::onLoad(void* userdata) void LLLiveLSLEditor::onSave(void* userdata, BOOL close_after_save) { LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata; - self->mCloseAfterSave = close_after_save; - self->saveIfNeeded(); + if(self) + { + self->mCloseAfterSave = close_after_save; + self->mScriptEd->mErrorList->setCommentText(""); + self->saveIfNeeded(); + } } @@ -2256,3 +2482,18 @@ BOOL LLLiveLSLEditor::monoChecked() const } return FALSE; } + +void LLLiveLSLEditor::setAssociatedExperience( LLHandle<LLLiveLSLEditor> editor, const LLSD& experience ) +{ + LLLiveLSLEditor* scriptEd = editor.get(); + if(scriptEd) + { + LLUUID id; + if(experience.has(LLExperienceCache::EXPERIENCE_ID)) + { + id=experience[LLExperienceCache::EXPERIENCE_ID].asUUID(); + } + scriptEd->mScriptEd->setAssociatedExperience(id); + scriptEd->updateExperiencePanel(); + } +} diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index fab997bc22..71ca3e31b1 100755..100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -51,6 +51,7 @@ class LLVFS; class LLViewerInventoryItem; class LLScriptEdContainer; class LLFloaterGotoLine; +class LLFloaterExperienceProfile; // Inner, implementation class. LLPreviewScript and LLLiveLSLEditor each own one of these. class LLScriptEdCore : public LLPanel @@ -107,12 +108,14 @@ public: static void onBtnInsertSample(void*); static void onBtnInsertFunction(LLUICtrl*, void*); static void onBtnLoadFromFile(void*); - static void onBtnSaveToFile(void*); + static void onBtnSaveToFile(void*); static bool enableSaveToFileMenu(void* userdata); static bool enableLoadFromFileMenu(void* userdata); - virtual bool hasAccelerators() const { return true; } + virtual bool hasAccelerators() const { return true; } + LLUUID getAssociatedExperience()const; + void setAssociatedExperience( const LLUUID& experience_id ); void setScriptName(const std::string& name){mScriptName = name;}; @@ -146,8 +149,8 @@ private: void (*mLoadCallback)(void* userdata); void (*mSaveCallback)(void* userdata, BOOL close_after_save); void (*mSearchReplaceCallback) (void* userdata); - void* mUserdata; - LLComboBox *mFunctions; + void* mUserdata; + LLComboBox *mFunctions; BOOL mForceClose; LLPanel* mCodePanel; LLScrollListCtrl* mErrorList; @@ -159,6 +162,7 @@ private: BOOL mEnableSave; BOOL mHasScriptData; LLLiveLSLFile* mLiveFile; + LLUUID mAssociatedExperience; LLScriptEdContainer* mContainer; // parent view @@ -242,7 +246,18 @@ public: /*virtual*/ BOOL postBuild(); - void setIsNew() { mIsNew = TRUE; } + void setIsNew() { mIsNew = TRUE; } + + static void setAssociatedExperience( LLHandle<LLLiveLSLEditor> editor, const LLSD& experience ); + static void onToggleExperience(LLUICtrl *ui, void* userdata); + static void onViewProfile(LLUICtrl *ui, void* userdata); + + void setExperienceIds(const LLSD& experience_ids); + void buildExperienceList(); + void updateExperiencePanel(); + void requestExperiences(); + void experienceChanged(); + void addAssociatedExperience(const LLSD& experience); private: virtual BOOL canClose(); @@ -253,10 +268,11 @@ private: void loadAsset(BOOL is_new); /*virtual*/ void saveIfNeeded(bool sync = true); void uploadAssetViaCaps(const std::string& url, - const std::string& filename, + const std::string& filename, const LLUUID& task_id, const LLUUID& item_id, - BOOL is_running); + BOOL is_running, + const LLUUID& experience_public_id); BOOL monoChecked() const; @@ -293,9 +309,16 @@ private: S32 mPendingUploads; BOOL getIsModifiable() const { return mIsModifiable; } // Evaluated on load assert - + LLCheckBoxCtrl* mMonoCheckbox; BOOL mIsModifiable; + + + LLComboBox* mExperiences; + LLCheckBoxCtrl* mExperienceEnabled; + LLSD mExperienceIds; + + LLHandle<LLFloater> mExperienceProfile; }; #endif // LL_LLPREVIEWSCRIPT_H diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp index 105c5e8cbe..105c5e8cbe 100755..100644 --- a/indra/newview/llpreviewsound.cpp +++ b/indra/newview/llpreviewsound.cpp diff --git a/indra/newview/llpreviewsound.h b/indra/newview/llpreviewsound.h index 0453bfd936..0453bfd936 100755..100644 --- a/indra/newview/llpreviewsound.h +++ b/indra/newview/llpreviewsound.h diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index f91a18d8d3..c8cf0faa15 100755..100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -618,4 +618,5 @@ void LLPreviewTexture::setObjectID(const LLUUID& object_id) mAssetStatus = PREVIEW_ASSET_UNLOADED; loadAsset(); } + refreshFromItem(); } diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index b104a91c75..b104a91c75 100755..100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp index e92bf4590d..e92bf4590d 100755..100644 --- a/indra/newview/llproductinforequest.cpp +++ b/indra/newview/llproductinforequest.cpp diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h index fe8f7093b0..fe8f7093b0 100755..100644 --- a/indra/newview/llproductinforequest.h +++ b/indra/newview/llproductinforequest.h diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 1257ee7f94..1257ee7f94 100755..100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h index 813576b21d..813576b21d 100755..100644 --- a/indra/newview/llprogressview.h +++ b/indra/newview/llprogressview.h diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp index 7689cd1a52..7689cd1a52 100755..100644 --- a/indra/newview/llrecentpeople.cpp +++ b/indra/newview/llrecentpeople.cpp diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h index d0d6376867..d0d6376867 100755..100644 --- a/indra/newview/llrecentpeople.h +++ b/indra/newview/llrecentpeople.h diff --git a/indra/newview/llregioninfomodel.cpp b/indra/newview/llregioninfomodel.cpp index 25c576468b..25c576468b 100755..100644 --- a/indra/newview/llregioninfomodel.cpp +++ b/indra/newview/llregioninfomodel.cpp diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h index d22a0de463..d22a0de463 100755..100644 --- a/indra/newview/llregioninfomodel.h +++ b/indra/newview/llregioninfomodel.h diff --git a/indra/newview/llregionposition.cpp b/indra/newview/llregionposition.cpp index 32c271b2b8..32c271b2b8 100755..100644 --- a/indra/newview/llregionposition.cpp +++ b/indra/newview/llregionposition.cpp diff --git a/indra/newview/llregionposition.h b/indra/newview/llregionposition.h index 8f72fa2e4e..8f72fa2e4e 100755..100644 --- a/indra/newview/llregionposition.h +++ b/indra/newview/llregionposition.h diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index 29dcc12f9e..29dcc12f9e 100755..100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index 35348b69ff..35348b69ff 100755..100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h diff --git a/indra/newview/llresourcedata.h b/indra/newview/llresourcedata.h index 28b97ed130..28b97ed130 100755..100644 --- a/indra/newview/llresourcedata.h +++ b/indra/newview/llresourcedata.h diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h index 5223a314f3..5223a314f3 100755..100644 --- a/indra/newview/llrootview.h +++ b/indra/newview/llrootview.h diff --git a/indra/newview/llsavedsettingsglue.cpp b/indra/newview/llsavedsettingsglue.cpp index 37b576814d..37b576814d 100755..100644 --- a/indra/newview/llsavedsettingsglue.cpp +++ b/indra/newview/llsavedsettingsglue.cpp diff --git a/indra/newview/llsavedsettingsglue.h b/indra/newview/llsavedsettingsglue.h index e8c6a7dbdb..e8c6a7dbdb 100755..100644 --- a/indra/newview/llsavedsettingsglue.h +++ b/indra/newview/llsavedsettingsglue.h diff --git a/indra/newview/llsaveoutfitcombobtn.cpp b/indra/newview/llsaveoutfitcombobtn.cpp index 32295cd96f..32295cd96f 100755..100644 --- a/indra/newview/llsaveoutfitcombobtn.cpp +++ b/indra/newview/llsaveoutfitcombobtn.cpp diff --git a/indra/newview/llsaveoutfitcombobtn.h b/indra/newview/llsaveoutfitcombobtn.h index 3987a99f51..3987a99f51 100755..100644 --- a/indra/newview/llsaveoutfitcombobtn.h +++ b/indra/newview/llsaveoutfitcombobtn.h diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 179a73413e..02912f12a9 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -39,6 +39,7 @@ #include "llspatialpartition.h" #include "llagent.h" #include "pipeline.h" +#include "llviewerparcelmgr.h" #include "llviewerpartsim.h" LLSceneMonitorView* gSceneMonitorView = NULL; @@ -702,6 +703,13 @@ LLSceneMonitorView::LLSceneMonitorView(const LLRect& rect) setCanMinimize(false); setCanClose(true); + + sTeleportFinishConnection = LLViewerParcelMgr::getInstance()->setTeleportFinishedCallback(boost::bind(&LLSceneMonitorView::onTeleportFinished, this)); +} + +LLSceneMonitorView::~LLSceneMonitorView() +{ + sTeleportFinishConnection.disconnect(); } void LLSceneMonitorView::onClose(bool app_quitting) @@ -714,6 +722,14 @@ void LLSceneMonitorView::onClickCloseBtn(bool app_quitting) setVisible(false); } +void LLSceneMonitorView::onTeleportFinished() +{ + if(isInVisibleChain()) + { + LLSceneMonitor::getInstance()->reset(); + } +} + void LLSceneMonitorView::onVisibilityChange(BOOL visible) { if (!LLGLSLShader::sNoFixedFunction && visible) diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index 5bde3b5aab..2b6ea57b96 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -64,10 +64,12 @@ public: void dumpToFile(std::string file_name); bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != S32Seconds(0);} + void reset(); + private: void freezeScene(); void unfreezeScene(); - void reset(); + LLRenderTarget& getCaptureTarget(); void generateDitheringTexture(S32 width, S32 height); @@ -109,7 +111,7 @@ class LLSceneMonitorView : public LLFloater { public: LLSceneMonitorView(const LLRect& rect); - + ~LLSceneMonitorView(); virtual void draw(); virtual void onVisibilityChange(BOOL visible); @@ -117,6 +119,8 @@ public: protected: virtual void onClose(bool app_quitting=false); virtual void onClickCloseBtn(bool app_quitting=false); + void onTeleportFinished(); + boost::signals2::connection sTeleportFinishConnection; }; extern LLSceneMonitorView* gSceneMonitorView; diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp index 112fa5b4e1..112fa5b4e1 100755..100644 --- a/indra/newview/llsceneview.cpp +++ b/indra/newview/llsceneview.cpp diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h index e077c358b4..e077c358b4 100755..100644 --- a/indra/newview/llsceneview.h +++ b/indra/newview/llsceneview.h diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index 8708fb87ee..6d94b178dd 100755..100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -541,19 +541,23 @@ void LLScreenChannel::modifyToastByNotificationID(LLUUID id, LLPanel* panel) { std::vector<ToastElem>::iterator it = find(mToastList.begin(), mToastList.end(), id); + LLPanel* panel_to_delete = panel; + if( it != mToastList.end() && panel) { LLToast* toast = it->getToast(); if (toast) { - LLPanel* old_panel = toast->getPanel(); - toast->removeChild(old_panel); - delete old_panel; - toast->insertPanel(panel); - toast->startTimer(); + LLPanel* old_panel = toast->getPanel(); + toast->removeChild(old_panel); + panel_to_delete = old_panel; + toast->insertPanel(panel); + toast->startTimer(); } redrawToasts(); } + + delete panel_to_delete; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index e5f4807ab7..e5f4807ab7 100755..100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index 1d021ec28f..1d021ec28f 100755..100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index 70451194b3..70451194b3 100755..100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index bfa453a0ae..bfa453a0ae 100755..100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp diff --git a/indra/newview/llscrollingpanelparam.h b/indra/newview/llscrollingpanelparam.h index c7a47d5c7a..c7a47d5c7a 100755..100644 --- a/indra/newview/llscrollingpanelparam.h +++ b/indra/newview/llscrollingpanelparam.h diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp index fe7a362723..fe7a362723 100755..100644 --- a/indra/newview/llscrollingpanelparambase.cpp +++ b/indra/newview/llscrollingpanelparambase.cpp diff --git a/indra/newview/llscrollingpanelparambase.h b/indra/newview/llscrollingpanelparambase.h index 9538826251..9538826251 100755..100644 --- a/indra/newview/llscrollingpanelparambase.h +++ b/indra/newview/llscrollingpanelparambase.h diff --git a/indra/newview/llsearchcombobox.cpp b/indra/newview/llsearchcombobox.cpp index 2824c70582..2824c70582 100755..100644 --- a/indra/newview/llsearchcombobox.cpp +++ b/indra/newview/llsearchcombobox.cpp diff --git a/indra/newview/llsearchcombobox.h b/indra/newview/llsearchcombobox.h index 68f3979532..68f3979532 100755..100644 --- a/indra/newview/llsearchcombobox.h +++ b/indra/newview/llsearchcombobox.h diff --git a/indra/newview/llsearchhistory.cpp b/indra/newview/llsearchhistory.cpp index 0ea05a03d6..0ea05a03d6 100755..100644 --- a/indra/newview/llsearchhistory.cpp +++ b/indra/newview/llsearchhistory.cpp diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h index 3309a8fcac..3309a8fcac 100755..100644 --- a/indra/newview/llsearchhistory.h +++ b/indra/newview/llsearchhistory.h diff --git a/indra/newview/llsecapi.cpp b/indra/newview/llsecapi.cpp index 43bb7b1596..43bb7b1596 100755..100644 --- a/indra/newview/llsecapi.cpp +++ b/indra/newview/llsecapi.cpp diff --git a/indra/newview/llsecapi.h b/indra/newview/llsecapi.h index c01d318f56..c01d318f56 100755..100644 --- a/indra/newview/llsecapi.h +++ b/indra/newview/llsecapi.h diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index 40516f9bbb..40516f9bbb 100755..100644 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp diff --git a/indra/newview/llsechandler_basic.h b/indra/newview/llsechandler_basic.h index 1ce5a87c75..1ce5a87c75 100755..100644 --- a/indra/newview/llsechandler_basic.h +++ b/indra/newview/llsechandler_basic.h diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index fdc95c7784..7620046ee3 100755..100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -52,6 +52,7 @@ // viewer includes #include "llagent.h" #include "llagentcamera.h" +#include "llattachmentsmgr.h" #include "llviewerwindow.h" #include "lldrawable.h" #include "llfloaterinspect.h" @@ -619,10 +620,33 @@ bool LLSelectMgr::linkObjects() bool LLSelectMgr::unlinkObjects() { + S32 min_objects_for_confirm = gSavedSettings.getS32("MinObjectsForUnlinkConfirm"); + S32 unlink_object_count = mSelectedObjects->getObjectCount(); // clears out nodes with NULL objects + if (unlink_object_count >= min_objects_for_confirm + && unlink_object_count > mSelectedObjects->getRootObjectCount()) + { + // total count > root count means that there are childer inside and that there are linksets that will be unlinked + LLNotificationsUtil::add("ConfirmUnlink", LLSD(), LLSD(), boost::bind(&LLSelectMgr::confirmUnlinkObjects, this, _1, _2)); + return true; + } + LLSelectMgr::getInstance()->sendDelink(); return true; } +void LLSelectMgr::confirmUnlinkObjects(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + // if Cancel pressed + if (option == 1) + { + return; + } + + LLSelectMgr::getInstance()->sendDelink(); + return; +} + // in order to link, all objects must have the same owner, and the // agent must have the ability to modify all of the objects. However, // we're not answering that question with this method. The question @@ -1186,7 +1210,7 @@ void LLSelectMgr::setGridMode(EGridMode mode) updateSelectionCenter(); } -void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &scale) +void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &scale, bool for_snap_guides) { mGridObjects.cleanupNodes(); @@ -1211,7 +1235,15 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & } else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) { - mGridRotation = first_grid_object->getRenderRotation(); + LLSelectNode *node = mSelectedObjects->findNode(first_grid_object); + if (!for_snap_guides && node) + { + mGridRotation = node->mSavedRotation; + } + else + { + mGridRotation = first_grid_object->getRenderRotation(); + } LLVector4a min_extents(F32_MAX); LLVector4a max_extents(-F32_MAX); @@ -2343,6 +2375,7 @@ void LLSelectMgr::selectionSetIncludeInSearch(bool include_in_search) "ObjectIncludeInSearch", packAgentAndSessionID, packObjectIncludeInSearch, + logNoOp, &include_in_search, SEND_ONLY_ROOTS); } @@ -2392,6 +2425,7 @@ void LLSelectMgr::selectionSetClickAction(U8 action) sendListToRegions("ObjectClickAction", packAgentAndSessionID, packObjectClickAction, + logNoOp, &action, SEND_INDIVIDUALS); } @@ -2427,7 +2461,7 @@ void LLSelectMgr::sendGodlikeRequest(const std::string& request, const std::stri } else { - sendListToRegions(message_type, packGodlikeHead, packObjectIDAsParam, &data, SEND_ONLY_ROOTS); + sendListToRegions(message_type, packGodlikeHead, packObjectIDAsParam, logNoOp, &data, SEND_ONLY_ROOTS); } } @@ -2456,6 +2490,23 @@ void LLSelectMgr::packGodlikeHead(void* user_data) } // static +void LLSelectMgr::logNoOp(LLSelectNode* node, void *) +{ +} + +// static +void LLSelectMgr::logAttachmentRequest(LLSelectNode* node, void *) +{ + LLAttachmentsMgr::instance().onAttachmentRequested(node->mItemID); +} + +// static +void LLSelectMgr::logDetachRequest(LLSelectNode* node, void *) +{ + LLAttachmentsMgr::instance().onDetachRequested(node->mItemID); +} + +// static void LLSelectMgr::packObjectIDAsParam(LLSelectNode* node, void *) { std::string buf = llformat("%u", node->getObject()->getLocalID()); @@ -3561,10 +3612,11 @@ bool LLSelectMgr::confirmDelete(const LLSD& notification, const LLSD& response, // attempt to derez into the trash. LLDeRezInfo info(DRD_TRASH, trash_id); LLSelectMgr::getInstance()->sendListToRegions("DeRezObject", - packDeRezHeader, - packObjectLocalID, - (void*) &info, - SEND_ONLY_ROOTS); + packDeRezHeader, + packObjectLocalID, + logNoOp, + (void*) &info, + SEND_ONLY_ROOTS); // VEFFECT: Delete Object - one effect for all deletes if (LLSelectMgr::getInstance()->mSelectedObjects->mSelectType != SELECT_TYPE_HUD) { @@ -3596,6 +3648,7 @@ void LLSelectMgr::selectForceDelete() "ObjectDelete", packDeleteHeader, packObjectLocalID, + logNoOp, (void*)TRUE, SEND_ONLY_ROOTS); } @@ -3766,7 +3819,7 @@ void LLSelectMgr::selectDuplicate(const LLVector3& offset, BOOL select_copy) data.offset = offset; data.flags = (select_copy ? FLAGS_CREATE_SELECTED : 0x0); - sendListToRegions("ObjectDuplicate", packDuplicateHeader, packDuplicate, &data, SEND_ONLY_ROOTS); + sendListToRegions("ObjectDuplicate", packDuplicateHeader, packDuplicate, logNoOp, &data, SEND_ONLY_ROOTS); if (select_copy) { @@ -3821,7 +3874,7 @@ void LLSelectMgr::repeatDuplicate() data.offset = LLVector3::zero; data.flags = 0x0; - sendListToRegions("ObjectDuplicate", packDuplicateHeader, packDuplicate, &data, SEND_ONLY_ROOTS); + sendListToRegions("ObjectDuplicate", packDuplicateHeader, packDuplicate, logNoOp, &data, SEND_ONLY_ROOTS); // move current selection based on delta from duplication position and update duplication position for (LLObjectSelection::root_iterator iter = getSelection()->root_begin(); @@ -3900,7 +3953,7 @@ void LLSelectMgr::selectDuplicateOnRay(const LLVector3 &ray_start_region, data.mFlags = (select_copy ? FLAGS_CREATE_SELECTED : 0x0); sendListToRegions("ObjectDuplicateOnRay", - packDuplicateOnRayHead, packObjectLocalID, &data, SEND_ONLY_ROOTS); + packDuplicateOnRayHead, packObjectLocalID, logNoOp, &data, SEND_ONLY_ROOTS); if (select_copy) { @@ -3950,6 +4003,7 @@ void LLSelectMgr::sendMultipleUpdate(U32 type) "MultipleObjectUpdate", packAgentAndSessionID, packMultipleUpdate, + logNoOp, &type, send_type); } @@ -4013,7 +4067,7 @@ void LLSelectMgr::sendOwner(const LLUUID& owner_id, data.group_id = group_id; data.override = override; - sendListToRegions("ObjectOwner", packOwnerHead, packObjectLocalID, &data, SEND_ONLY_ROOTS); + sendListToRegions("ObjectOwner", packOwnerHead, packObjectLocalID, logNoOp, &data, SEND_ONLY_ROOTS); } // static @@ -4037,7 +4091,7 @@ void LLSelectMgr::packOwnerHead(void *user_data) void LLSelectMgr::sendGroup(const LLUUID& group_id) { LLUUID local_group_id(group_id); - sendListToRegions("ObjectGroup", packAgentAndSessionAndGroupID, packObjectLocalID, &local_group_id, SEND_ONLY_ROOTS); + sendListToRegions("ObjectGroup", packAgentAndSessionAndGroupID, packObjectLocalID, logNoOp, &local_group_id, SEND_ONLY_ROOTS); } @@ -4061,7 +4115,7 @@ void LLSelectMgr::sendBuy(const LLUUID& buyer_id, const LLUUID& category_id, con LLBuyData buy; buy.mCategoryID = category_id; buy.mSaleInfo = sale_info; - sendListToRegions("ObjectBuy", packAgentGroupAndCatID, packBuyObjectIDs, &buy, SEND_ONLY_ROOTS); + sendListToRegions("ObjectBuy", packAgentGroupAndCatID, packBuyObjectIDs, logNoOp, &buy, SEND_ONLY_ROOTS); } // static @@ -4105,7 +4159,7 @@ void LLSelectMgr::selectionSetObjectPermissions(U8 field, data.mMask = mask; data.mOverride = override; - sendListToRegions("ObjectPermissions", packPermissionsHead, packPermissions, &data, SEND_ONLY_ROOTS); + sendListToRegions("ObjectPermissions", packPermissionsHead, packPermissions, logNoOp, &data, SEND_ONLY_ROOTS); } void LLSelectMgr::packPermissionsHead(void* user_data) @@ -4148,6 +4202,7 @@ void LLSelectMgr::deselectAll() "ObjectDeselect", packAgentAndSessionID, packObjectLocalID, + logNoOp, NULL, SEND_INDIVIDUALS); @@ -4178,6 +4233,7 @@ void LLSelectMgr::deselectAllForStandingUp() "ObjectDeselect", packAgentAndSessionID, packObjectLocalID, + logNoOp, NULL, SEND_INDIVIDUALS); @@ -4259,6 +4315,7 @@ void LLSelectMgr::selectionSetObjectName(const std::string& name) sendListToRegions("ObjectName", packAgentAndSessionID, packObjectName, + logNoOp, (void*)(&name_copy), SEND_ONLY_ROOTS); } @@ -4267,6 +4324,7 @@ void LLSelectMgr::selectionSetObjectName(const std::string& name) sendListToRegions("ObjectName", packAgentAndSessionID, packObjectName, + logNoOp, (void*)(&name_copy), SEND_INDIVIDUALS); } @@ -4282,6 +4340,7 @@ void LLSelectMgr::selectionSetObjectDescription(const std::string& desc) sendListToRegions("ObjectDescription", packAgentAndSessionID, packObjectDescription, + logNoOp, (void*)(&desc_copy), SEND_ONLY_ROOTS); } @@ -4290,6 +4349,7 @@ void LLSelectMgr::selectionSetObjectDescription(const std::string& desc) sendListToRegions("ObjectDescription", packAgentAndSessionID, packObjectDescription, + logNoOp, (void*)(&desc_copy), SEND_INDIVIDUALS); } @@ -4303,6 +4363,7 @@ void LLSelectMgr::selectionSetObjectCategory(const LLCategory& category) sendListToRegions("ObjectCategory", packAgentAndSessionID, packObjectCategory, + logNoOp, (void*)(&category), SEND_ONLY_ROOTS); } @@ -4312,6 +4373,7 @@ void LLSelectMgr::selectionSetObjectSaleInfo(const LLSaleInfo& sale_info) sendListToRegions("ObjectSaleInfo", packAgentAndSessionID, packObjectSaleInfo, + logNoOp, (void*)(&sale_info), SEND_ONLY_ROOTS); } @@ -4345,6 +4407,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point, bool replace) "ObjectAttach", packAgentIDAndSessionAndAttachment, packObjectIDAndRotation, + logAttachmentRequest, &attachment_point, SEND_ONLY_ROOTS ); if (!build_mode) @@ -4365,6 +4428,7 @@ void LLSelectMgr::sendDetach() "ObjectDetach", packAgentAndSessionID, packObjectLocalID, + logDetachRequest, NULL, SEND_ONLY_ROOTS ); } @@ -4381,6 +4445,7 @@ void LLSelectMgr::sendDropAttachment() "ObjectDrop", packAgentAndSessionID, packObjectLocalID, + logDetachRequest, NULL, SEND_ONLY_ROOTS); } @@ -4400,6 +4465,7 @@ void LLSelectMgr::sendLink() "ObjectLink", packAgentAndSessionID, packObjectLocalID, + logNoOp, NULL, SEND_ONLY_ROOTS); } @@ -4437,6 +4503,7 @@ void LLSelectMgr::sendDelink() "ObjectDelink", packAgentAndSessionID, packObjectLocalID, + logNoOp, NULL, SEND_INDIVIDUALS); } @@ -4489,6 +4556,7 @@ void LLSelectMgr::sendSelect() "ObjectSelect", packAgentAndSessionID, packObjectLocalID, + logNoOp, NULL, SEND_INDIVIDUALS); } @@ -4885,10 +4953,12 @@ void LLSelectMgr::packPermissions(LLSelectNode* node, void *user_data) void LLSelectMgr::sendListToRegions(const std::string& message_name, void (*pack_header)(void *user_data), void (*pack_body)(LLSelectNode* node, void *user_data), + void (*log_func)(LLSelectNode* node, void *user_data), void *user_data, ESendType send_type) { LLSelectNode* node; + LLSelectNode* linkset_root = NULL; LLViewerRegion* last_region; LLViewerRegion* current_region; @@ -4896,6 +4966,8 @@ void LLSelectMgr::sendListToRegions(const std::string& message_name, S32 packets_sent = 0; S32 objects_in_this_packet = 0; + bool link_operation = message_name == "ObjectLink"; + //clear update override data (allow next update through) struct f : public LLSelectedNodeFunctor { @@ -5004,8 +5076,16 @@ void LLSelectMgr::sendListToRegions(const std::string& message_name, && (! gMessageSystem->isSendFull(NULL)) && (objects_in_this_packet < MAX_OBJECTS_PER_PACKET)) { + if (link_operation && linkset_root == NULL) + { + // linksets over 254 will be split into multiple messages, + // but we need to provide same root for all messages or we will get separate linksets + linkset_root = node; + } // add another instance of the body of the data (*pack_body)(node, user_data); + // do any related logging + (*log_func)(node, user_data); ++objects_sent; ++objects_in_this_packet; @@ -5030,6 +5110,22 @@ void LLSelectMgr::sendListToRegions(const std::string& message_name, gMessageSystem->newMessage(message_name.c_str()); (*pack_header)(user_data); + if (linkset_root != NULL) + { + if (current_region != last_region) + { + // root should be in one region with the child, reset it + linkset_root = NULL; + } + else + { + // add root instance into new message + (*pack_body)(linkset_root, user_data); + ++objects_sent; + ++objects_in_this_packet; + } + } + // don't move to the next object, we still need to add the // body data. } @@ -6656,7 +6752,7 @@ void LLSelectMgr::undo() { BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); LLUUID group_id(gAgent.getGroupID()); - sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); + sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, logNoOp, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); } //----------------------------------------------------------------------------- @@ -6674,7 +6770,7 @@ void LLSelectMgr::redo() { BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); LLUUID group_id(gAgent.getGroupID()); - sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); + sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, logNoOp, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); } //----------------------------------------------------------------------------- diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 23c41e4cc1..90f7fdfe13 100755..100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -506,6 +506,8 @@ public: bool unlinkObjects(); + void confirmUnlinkObjects(const LLSD& notification, const LLSD& response); + bool enableLinkObjects(); bool enableUnlinkObjects(); @@ -525,7 +527,7 @@ public: void clearGridObjects(); void setGridMode(EGridMode mode); EGridMode getGridMode() { return mGridMode; } - void getGrid(LLVector3& origin, LLQuaternion& rotation, LLVector3 &scale); + void getGrid(LLVector3& origin, LLQuaternion& rotation, LLVector3 &scale, bool for_snap_guides = false); BOOL getTEMode() { return mTEMode; } void setTEMode(BOOL b) { mTEMode = b; } @@ -759,6 +761,7 @@ private: void sendListToRegions( const std::string& message_name, void (*pack_header)(void *user_data), void (*pack_body)(LLSelectNode* node, void *user_data), + void (*log_func)(LLSelectNode* node, void *user_data), void *user_data, ESendType send_type); @@ -794,6 +797,9 @@ private: static void packHingeHead(void *user_data); static void packPermissionsHead(void* user_data); static void packGodlikeHead(void* user_data); + static void logNoOp(LLSelectNode* node, void *user_data); + static void logAttachmentRequest(LLSelectNode* node, void *user_data); + static void logDetachRequest(LLSelectNode* node, void *user_data); static bool confirmDelete(const LLSD& notification, const LLSD& response, LLObjectSelectionHandle handle); // Get the first ID that matches test and whether or not all ids are identical in selected objects. diff --git a/indra/newview/llshareavatarhandler.cpp b/indra/newview/llshareavatarhandler.cpp index 6b4f1d3dc6..6b4f1d3dc6 100755..100644 --- a/indra/newview/llshareavatarhandler.cpp +++ b/indra/newview/llshareavatarhandler.cpp diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 64f24cd291..ea7cf82674 100755..100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -212,7 +212,8 @@ void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility) } if (is_wearable_edit_visible) { - if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE) + U32 index; + if (!gAgentWearables.getWearableIndex(wearable_ptr,index)) { // we're no longer wearing the wearable we were last editing, switch back to outfit editor showOutfitEditPanel(); diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h index 440fce07bb..440fce07bb 100755..100644 --- a/indra/newview/llsidepanelappearance.h +++ b/indra/newview/llsidepanelappearance.h diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 0e23e2ad10..0e23e2ad10 100755..100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index 17a3098db9..17a3098db9 100755..100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp index 2918bb388a..2918bb388a 100755..100644 --- a/indra/newview/llsidepanelinventorysubpanel.cpp +++ b/indra/newview/llsidepanelinventorysubpanel.cpp diff --git a/indra/newview/llsidepanelinventorysubpanel.h b/indra/newview/llsidepanelinventorysubpanel.h index b5cf3aaf17..b5cf3aaf17 100755..100644 --- a/indra/newview/llsidepanelinventorysubpanel.h +++ b/indra/newview/llsidepanelinventorysubpanel.h diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 126f1fb9de..a7cfc173af 100755..100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -44,6 +44,9 @@ #include "llviewercontrol.h" #include "llviewerinventory.h" #include "llviewerobjectlist.h" +#include "llexperienceassociationresponder.h" +#include "llexperiencecache.h" +#include "lltrans.h" //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -319,6 +322,15 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) is_obj_modify = object->permOwnerModify(); } + if(item->getInventoryType() == LLInventoryType::IT_LSL) + { + getChildView("LabelItemExperienceTitle")->setVisible(TRUE); + LLTextBox* tb = getChild<LLTextBox>("LabelItemExperience"); + tb->setText(getString("loading_experience")); + tb->setVisible(TRUE); + ExperienceAssociationResponder::fetchAssociatedExperience(item->getParentUUID(), item->getUUID(), boost::bind(&LLSidepanelItemInfo::setAssociatedExperience, getDerivedHandle<LLSidepanelItemInfo>(), _1)); + } + ////////////////////// // ITEM NAME & DESC // ////////////////////// @@ -674,6 +686,29 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) } } + +void LLSidepanelItemInfo::setAssociatedExperience( LLHandle<LLSidepanelItemInfo> hInfo, const LLSD& experience ) +{ + LLSidepanelItemInfo* info = hInfo.get(); + if(info) + { + LLUUID id; + if(experience.has(LLExperienceCache::EXPERIENCE_ID)) + { + id=experience[LLExperienceCache::EXPERIENCE_ID].asUUID(); + } + if(id.notNull()) + { + info->getChild<LLTextBox>("LabelItemExperience")->setText(LLSLURL("experience", id, "profile").getSLURLString()); + } + else + { + info->getChild<LLTextBox>("LabelItemExperience")->setText(LLTrans::getString("ExperienceNameNull")); + } + } +} + + void LLSidepanelItemInfo::startObjectInventoryObserver() { if (!mObjectInventoryObserver) diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h index 12aaca923e..2e24e58a2a 100755..100644 --- a/indra/newview/llsidepaneliteminfo.h +++ b/indra/newview/llsidepaneliteminfo.h @@ -67,6 +67,8 @@ protected: void refreshFromItem(LLViewerInventoryItem* item); private: + static void setAssociatedExperience( LLHandle<LLSidepanelItemInfo> hInfo, const LLSD& experience ); + void startObjectInventoryObserver(); void stopObjectInventoryObserver(); diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index 17ecfab4fb..2548d730f0 100755..100644 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -370,18 +370,25 @@ void LLSidepanelTaskInfo::refresh() // Update creator text field getChildView("Creator:")->setEnabled(TRUE); + std::string creator_name; - LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name); + LLUUID creator_id; + LLSelectMgr::getInstance()->selectGetCreator(creator_id, creator_name); - getChild<LLUICtrl>("Creator Name")->setValue(creator_name); - getChildView("Creator Name")->setEnabled(TRUE); + if(creator_id != mCreatorID ) + { + mDACreatorName->setValue(creator_name); + mCreatorID = creator_id; + } + mDACreatorName->setEnabled(TRUE); // Update owner text field getChildView("Owner:")->setEnabled(TRUE); std::string owner_name; - const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_name); - if (mOwnerID.isNull()) + LLUUID owner_id; + const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); + if (owner_id.isNull()) { if (LLSelectMgr::getInstance()->selectIsGroupOwned()) { @@ -402,7 +409,12 @@ void LLSidepanelTaskInfo::refresh() } } } - getChild<LLUICtrl>("Owner Name")->setValue(owner_name); + + if(owner_id.isNull() || (owner_id != mOwnerID)) + { + mDAOwnerName->setValue(owner_name); + mOwnerID = owner_id; + } getChildView("Owner Name")->setEnabled(TRUE); // update group text field diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h index a1479ef0e7..a1479ef0e7 100755..100644 --- a/indra/newview/llsidepaneltaskinfo.h +++ b/indra/newview/llsidepaneltaskinfo.h diff --git a/indra/newview/llsidetraypanelcontainer.cpp b/indra/newview/llsidetraypanelcontainer.cpp index e340333c2c..e340333c2c 100755..100644 --- a/indra/newview/llsidetraypanelcontainer.cpp +++ b/indra/newview/llsidetraypanelcontainer.cpp diff --git a/indra/newview/llsidetraypanelcontainer.h b/indra/newview/llsidetraypanelcontainer.h index 93a85ed374..93a85ed374 100755..100644 --- a/indra/newview/llsidetraypanelcontainer.h +++ b/indra/newview/llsidetraypanelcontainer.h diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp index a961f0e3b4..a961f0e3b4 100755..100644 --- a/indra/newview/llsky.cpp +++ b/indra/newview/llsky.cpp diff --git a/indra/newview/llsky.h b/indra/newview/llsky.h index 7b98c97840..7b98c97840 100755..100644 --- a/indra/newview/llsky.h +++ b/indra/newview/llsky.h diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 728fc69723..a8e012bfa1 100755..100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -271,7 +271,14 @@ LLSLURL::LLSLURL(const std::string& slurl) // at this point, head of the path array should be [ <region>, <x>, <y>, <z> ] where x, y and z // are collectively optional // are optional + mRegion = LLURI::unescape(path_array[0].asString()); + + if(LLStringUtil::containsNonprintable(mRegion)) + { + LLStringUtil::stripNonprintable(mRegion); + } + path_array.erase(0); // parse the x, y, and optionally z diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index b86cf7949b..b86cf7949b 100755..100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index 0ae8a338e0..8561a89ae5 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -195,7 +195,8 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail // Stop shining animation. mShineAnimTimer.stop(); mSnapshotDelayTimer.start(); - mSnapshotDelayTimer.setTimerExpirySec(delay); + mSnapshotDelayTimer.resetWithExpiry(delay); + mPosTakenGlobal = gAgentCamera.getCameraPositionGlobal(); @@ -462,7 +463,10 @@ void LLSnapshotLivePreview::reshape(S32 width, S32 height, BOOL called_from_pare if (old_rect.getWidth() != width || old_rect.getHeight() != height) { LL_DEBUGS() << "window reshaped, updating thumbnail" << LL_ENDL; - updateSnapshot(TRUE); + if (mViewContainer && mViewContainer->isInVisibleChain()) + { + updateSnapshot(TRUE); + } } } @@ -670,10 +674,27 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) return FALSE; } - // If we're in freeze-frame mode and camera has moved, update snapshot. + if (previewp->mSnapshotDelayTimer.getStarted()) // Wait for a snapshot delay timer + { + if (!previewp->mSnapshotDelayTimer.hasExpired()) + { + return FALSE; + } + previewp->mSnapshotDelayTimer.stop(); + } + + if (LLToolCamera::getInstance()->hasMouseCapture()) // Hide full-screen preview while camming, either don't take snapshots while ALT-zoom active + { + previewp->setVisible(FALSE); + return FALSE; + } + + // If we're in freeze-frame and/or auto update mode and camera has moved, update snapshot. LLVector3 new_camera_pos = LLViewerCamera::getInstance()->getOrigin(); LLQuaternion new_camera_rot = LLViewerCamera::getInstance()->getQuaternion(); - if (previewp->mForceUpdateSnapshot || (gSavedSettings.getBOOL("FreezeTime") && previewp->mAllowFullScreenPreview && + if (previewp->mForceUpdateSnapshot || + (((gSavedSettings.getBOOL("AutoSnapshot") && LLView::isAvailable(previewp->mViewContainer)) || + (gSavedSettings.getBOOL("FreezeTime") && previewp->mAllowFullScreenPreview)) && (new_camera_pos != previewp->mCameraPos || dot(new_camera_rot, previewp->mCameraRot) < 0.995f))) { previewp->mCameraPos = new_camera_pos; @@ -688,11 +709,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) previewp->mForceUpdateSnapshot = FALSE; } - // see if it's time yet to snap the shot and bomb out otherwise. - previewp->mSnapshotActive = - (previewp->mSnapshotDelayTimer.getStarted() && previewp->mSnapshotDelayTimer.hasExpired()) - && !LLToolCamera::getInstance()->hasMouseCapture(); // don't take snapshots while ALT-zoom active - if (!previewp->mSnapshotActive && previewp->getSnapshotUpToDate() && previewp->getThumbnailUpToDate()) + if (previewp->getSnapshotUpToDate() && previewp->getThumbnailUpToDate()) { return FALSE; } @@ -706,6 +723,8 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) previewp->mPreviewImage = new LLImageRaw; } + previewp->mSnapshotActive = TRUE; + previewp->setVisible(FALSE); previewp->setEnabled(FALSE); @@ -734,40 +753,9 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) // Full size preview is set: get the decoded image result and save it for animation if (gSavedSettings.getBOOL("UseFreezeFrame") && previewp->mAllowFullScreenPreview) { - // Get the decoded version of the formatted image - previewp->getEncodedImage(); - - // We need to scale that a bit for display... - LLPointer<LLImageRaw> scaled = new LLImageRaw( - previewp->mPreviewImageEncoded->getData(), - previewp->mPreviewImageEncoded->getWidth(), - previewp->mPreviewImageEncoded->getHeight(), - previewp->mPreviewImageEncoded->getComponents()); - - if (!scaled->isBufferInvalid()) - { - // leave original image dimensions, just scale up texture buffer - if (previewp->mPreviewImageEncoded->getWidth() > 1024 || previewp->mPreviewImageEncoded->getHeight() > 1024) - { - // go ahead and shrink image to appropriate power of 2 for display - scaled->biasedScaleToPowerOfTwo(1024); - previewp->setImageScaled(TRUE); - } - else - { - // expand image but keep original image data intact - scaled->expandToPowerOfTwo(1024, FALSE); - } - - previewp->mViewerImage[previewp->mCurImageIndex] = LLViewerTextureManager::getLocalTexture(scaled.get(), FALSE); - LLPointer<LLViewerTexture> curr_preview_image = previewp->mViewerImage[previewp->mCurImageIndex]; - gGL.getTexUnit(0)->bind(curr_preview_image); - curr_preview_image->setFilteringOption(previewp->getSnapshotType() == SNAPSHOT_TEXTURE ? LLTexUnit::TFO_ANISOTROPIC : LLTexUnit::TFO_POINT); - curr_preview_image->setAddressMode(LLTexUnit::TAM_CLAMP); - - previewp->mShineCountdown = 4; // wait a few frames to avoid animation glitch due to readback this frame - } + previewp->prepareFreezeFrame(); } + // The snapshot is updated now... previewp->mSnapshotUpToDate = TRUE; @@ -777,7 +765,6 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) } previewp->getWindow()->decBusyCount(); previewp->setVisible(gSavedSettings.getBOOL("UseFreezeFrame") && previewp->mAllowFullScreenPreview); // only show fullscreen preview when in freeze frame mode - previewp->mSnapshotDelayTimer.stop(); previewp->mSnapshotActive = FALSE; LL_DEBUGS() << "done creating snapshot" << LL_ENDL; } @@ -796,6 +783,47 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) return TRUE; } +void LLSnapshotLivePreview::prepareFreezeFrame() +{ + // Get the decoded version of the formatted image + getEncodedImage(); + + // We need to scale that a bit for display... + LLPointer<LLImageRaw> scaled = new LLImageRaw( + mPreviewImageEncoded->getData(), + mPreviewImageEncoded->getWidth(), + mPreviewImageEncoded->getHeight(), + mPreviewImageEncoded->getComponents()); + + if (!scaled->isBufferInvalid()) + { + // leave original image dimensions, just scale up texture buffer + if (mPreviewImageEncoded->getWidth() > 1024 || mPreviewImageEncoded->getHeight() > 1024) + { + // go ahead and shrink image to appropriate power of 2 for display + scaled->biasedScaleToPowerOfTwo(1024); + setImageScaled(TRUE); + } + else + { + // expand image but keep original image data intact + scaled->expandToPowerOfTwo(1024, FALSE); + } + + mViewerImage[mCurImageIndex] = LLViewerTextureManager::getLocalTexture(scaled.get(), FALSE); + LLPointer<LLViewerTexture> curr_preview_image = mViewerImage[mCurImageIndex]; + gGL.getTexUnit(0)->bind(curr_preview_image); + curr_preview_image->setFilteringOption(getSnapshotType() == SNAPSHOT_TEXTURE ? LLTexUnit::TFO_ANISOTROPIC : LLTexUnit::TFO_POINT); + curr_preview_image->setAddressMode(LLTexUnit::TAM_CLAMP); + + + if (gSavedSettings.getBOOL("UseFreezeFrame") && mAllowFullScreenPreview) + { + mShineCountdown = 4; // wait a few frames to avoid animation glitch due to readback this frame + } + } +} + S32 LLSnapshotLivePreview::getEncodedImageWidth() const { S32 width = getWidth(); diff --git a/indra/newview/llsnapshotlivepreview.h b/indra/newview/llsnapshotlivepreview.h index fed33bf37c..57e5d83f8e 100644 --- a/indra/newview/llsnapshotlivepreview.h +++ b/indra/newview/llsnapshotlivepreview.h @@ -119,7 +119,7 @@ public: void generateThumbnailImage(BOOL force_update = FALSE) ; void resetThumbnailImage() { mThumbnailImage = NULL ; } void drawPreviewRect(S32 offset_x, S32 offset_y) ; - + void prepareFreezeFrame(); LLViewerTexture* getBigThumbnailImage(); S32 getBigThumbnailWidth() const { return mBigThumbnailWidth ; } diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 5e342099d7..22944493c9 100755..100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -3770,8 +3770,9 @@ public: LLVector4a *mTangent; LLDrawable* mHit; BOOL mPickTransparent; + BOOL mPickRigged; - LLOctreeIntersect(const LLVector4a& start, const LLVector4a& end, BOOL pick_transparent, + LLOctreeIntersect(const LLVector4a& start, const LLVector4a& end, BOOL pick_transparent, BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent) : mStart(start), mEnd(end), @@ -3781,7 +3782,8 @@ public: mNormal(normal), mTangent(tangent), mHit(NULL), - mPickTransparent(pick_transparent) + mPickTransparent(pick_transparent), + mPickRigged(pick_rigged) { } @@ -3864,9 +3866,9 @@ public: if (vobj->isAvatar()) { LLVOAvatar* avatar = (LLVOAvatar*) vobj; - if (avatar->isSelf() && LLFloater::isVisible(gFloaterTools)) + if ((mPickRigged) || ((avatar->isSelf()) && (LLFloater::isVisible(gFloaterTools)))) { - LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mTangent); + LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mPickRigged, mFaceHit, &intersection, mTexCoord, mNormal, mTangent); if (hit) { mEnd = intersection; @@ -3882,7 +3884,7 @@ public: } } - if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mTangent)) + if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mPickRigged, mFaceHit, &intersection, mTexCoord, mNormal, mTangent)) { mEnd = intersection; // shorten ray so we only find CLOSER hits if (mIntersection) @@ -3900,7 +3902,8 @@ public: } LL_ALIGN_POSTFIX(16); LLDrawable* LLSpatialPartition::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, - BOOL pick_transparent, + BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, // return the face hit LLVector4a* intersection, // return the intersection point LLVector2* tex_coord, // return the texture coordinates of the intersection point @@ -3909,7 +3912,7 @@ LLDrawable* LLSpatialPartition::lineSegmentIntersect(const LLVector4a& start, co ) { - LLOctreeIntersect intersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, tangent); + LLOctreeIntersect intersect(start, end, pick_transparent, pick_rigged, face_hit, intersection, tex_coord, normal, tangent); LLDrawable* drawable = intersect.check(mOctree); return drawable; diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 08a4d00d0f..7633e46200 100755..100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -386,6 +386,7 @@ public: LLDrawable* lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, // return the face hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 7867e1573c..44c980c96f 100755..100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -547,21 +547,8 @@ void LLSpeakerMgr::updateSpeakerList() // For groups, we need to hit the group manager. // Note: The session uuid and the group uuid are actually one and the same. If that was to change, this will fail. LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(session_id); - F32 large_group_delay = 0.f; - if (gdatap) - { - //This is a viewer-side bandaid for maint-4414 it does not fix the core issue. - large_group_delay = (F32)(gdatap->mMemberCount / 5000); - } - - const F32 load_group_timeout = gSavedSettings.getF32("ChatLoadGroupTimeout") + large_group_delay; - - if (!gdatap && (mGetListTime.getElapsedTimeF32() >= load_group_timeout)) - { - // Request the data the first time around - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(session_id); - } - else if (gdatap && gdatap->isMemberDataComplete() && !gdatap->mMembers.empty()) + + if (gdatap && gdatap->isMemberDataComplete() && !gdatap->mMembers.empty()) { // Add group members when we get the complete list (note: can take a while before we get that list) LLGroupMgrGroupData::member_list_t::iterator member_it = gdatap->mMembers.begin(); diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index 0e69184125..0e69184125 100755..100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index 78fe7863c8..78fe7863c8 100755..100644 --- a/indra/newview/llspeakingindicatormanager.cpp +++ b/indra/newview/llspeakingindicatormanager.cpp diff --git a/indra/newview/llspeakingindicatormanager.h b/indra/newview/llspeakingindicatormanager.h index e5afcd1cb7..e5afcd1cb7 100755..100644 --- a/indra/newview/llspeakingindicatormanager.h +++ b/indra/newview/llspeakingindicatormanager.h diff --git a/indra/newview/llsplitbutton.cpp b/indra/newview/llsplitbutton.cpp index 790305103d..790305103d 100755..100644 --- a/indra/newview/llsplitbutton.cpp +++ b/indra/newview/llsplitbutton.cpp diff --git a/indra/newview/llsplitbutton.h b/indra/newview/llsplitbutton.h index 4f20c8b379..4f20c8b379 100755..100644 --- a/indra/newview/llsplitbutton.h +++ b/indra/newview/llsplitbutton.h diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp index c3eb70f850..c3eb70f850 100755..100644 --- a/indra/newview/llsprite.cpp +++ b/indra/newview/llsprite.cpp diff --git a/indra/newview/llsprite.h b/indra/newview/llsprite.h index d00b8ef695..d00b8ef695 100755..100644 --- a/indra/newview/llsprite.h +++ b/indra/newview/llsprite.h diff --git a/indra/newview/llsrv.cpp b/indra/newview/llsrv.cpp index 8b9aead165..8b9aead165 100755..100644 --- a/indra/newview/llsrv.cpp +++ b/indra/newview/llsrv.cpp diff --git a/indra/newview/llsrv.h b/indra/newview/llsrv.h index db5543f772..db5543f772 100755..100644 --- a/indra/newview/llsrv.h +++ b/indra/newview/llsrv.h diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 42fc300187..8a027fdbfa 100755..100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -48,6 +48,7 @@ #include "llares.h" #include "llavatarnamecache.h" +#include "llexperiencecache.h" #include "lllandmark.h" #include "llcachename.h" #include "lldir.h" @@ -194,6 +195,7 @@ #include "llevents.h" #include "llstartuplistener.h" #include "lltoolbarview.h" +#include "llexperiencelog.h" #if LL_WINDOWS #include "lldxhardware.h" @@ -240,7 +242,8 @@ static LLVector3 gAgentStartLookAt(1.0f, 0.f, 0.f); static std::string gAgentStartLocation = "safe"; static bool mLoginStatePastUI = false; -const S32 DEFAULT_MAX_AGENT_GROUPS = 25; +const S32 DEFAULT_MAX_AGENT_GROUPS = 42; +const S32 ALLOWED_MAX_AGENT_GROUPS = 500; boost::scoped_ptr<LLEventPump> LLStartUp::sStateWatcher(new LLEventStream("StartupState")); boost::scoped_ptr<LLStartupListener> LLStartUp::sListener(new LLStartupListener()); @@ -418,9 +421,7 @@ bool idle_startup() gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion()); gSavedSettings.setString("LastGPUString", thisGPU); - // load dynamic GPU/feature tables from website (S3) - LLFeatureManager::getInstance()->fetchHTTPTables(); - + std::string xml_file = LLUI::locateSkin("xui_version.xml"); LLXMLNodePtr root; bool xml_ok = false; @@ -1306,6 +1307,9 @@ bool idle_startup() gAgent.setPositionAgent(agent_start_position_region); display_startup(); + LLStartUp::initExperiences(); + + display_startup(); LLStartUp::setStartupState( STATE_MULTIMEDIA_INIT ); LLConversationLog::getInstance(); @@ -1875,6 +1879,11 @@ bool idle_startup() } display_startup(); + + // *TODO : Uncomment that line once the whole grid migrated to SLM and suppress it from LLAgent::handleTeleportFinished() (llagent.cpp) + //check_merchant_status(); + + display_startup(); if (gSavedSettings.getBOOL("HelpFloaterOpen")) { @@ -2824,6 +2833,14 @@ void LLStartUp::initNameCache() LLAvatarNameCache::setUseUsernames(gSavedSettings.getBOOL("NameTagShowUsernames")); } + +void LLStartUp::initExperiences() +{ + LLAppViewer::instance()->loadExperienceCache(); + LLExperienceCache::initClass(); + LLExperienceLog::instance().initialize(); +} + void LLStartUp::cleanupNameCache() { LLAvatarNameCache::cleanupClass(); @@ -3219,6 +3236,26 @@ bool process_login_success_response() LLStringUtil::trim(gDisplayName); } } + std::string first_name; + if(response.has("first_name")) + { + first_name = response["first_name"].asString(); + LLStringUtil::replaceChar(first_name, '"', ' '); + LLStringUtil::trim(first_name); + gAgentUsername = first_name; + } + + if(response.has("last_name") && !gAgentUsername.empty()) + { + std::string last_name = response["last_name"].asString(); + if (last_name != "Resident") + { + LLStringUtil::replaceChar(last_name, '"', ' '); + LLStringUtil::trim(last_name); + gAgentUsername = gAgentUsername + " " + last_name; + } + } + if(gDisplayName.empty()) { if(response.has("first_name")) @@ -3239,6 +3276,7 @@ bool process_login_success_response() gDisplayName += text; } } + if(gDisplayName.empty()) { gDisplayName.assign(gUserCredential->asString()); @@ -3491,15 +3529,24 @@ bool process_login_success_response() LLViewerMedia::openIDSetup(openid_url, openid_token); } - if(response.has("max-agent-groups")) { - std::string max_agent_groups(response["max-agent-groups"]); - gMaxAgentGroups = atoi(max_agent_groups.c_str()); - LL_INFOS("LLStartup") << "gMaxAgentGroups read from login.cgi: " - << gMaxAgentGroups << LL_ENDL; + gMaxAgentGroups = DEFAULT_MAX_AGENT_GROUPS; + if(response.has("max-agent-groups")) + { + S32 agent_groups = atoi(std::string(response["max-agent-groups"]).c_str()); + if (agent_groups > 0 && agent_groups <= ALLOWED_MAX_AGENT_GROUPS) + { + gMaxAgentGroups = agent_groups; + LL_INFOS("LLStartup") << "gMaxAgentGroups read from login.cgi: " + << gMaxAgentGroups << LL_ENDL; + } + else + { + LL_INFOS("LLStartup") << "Invalid value received, using defaults for gMaxAgentGroups: " + << gMaxAgentGroups << LL_ENDL; + } } else { - gMaxAgentGroups = DEFAULT_MAX_AGENT_GROUPS; - LL_INFOS("LLStartup") << "using gMaxAgentGroups default: " + LL_INFOS("LLStartup") << "Missing max-agent-groups, using default value for gMaxAgentGroups: " << gMaxAgentGroups << LL_ENDL; } @@ -3525,3 +3572,4 @@ void transition_back_to_login_panel(const std::string& emsg) reset_login(); // calls LLStartUp::setStartupState( STATE_LOGIN_SHOW ); gSavedSettings.setBOOL("AutoLogin", FALSE); } + diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h index e39810713a..d434e86f82 100755..100644 --- a/indra/newview/llstartup.h +++ b/indra/newview/llstartup.h @@ -103,6 +103,7 @@ public: static void fontInit(); static void initNameCache(); + static void initExperiences(); static void cleanupNameCache(); diff --git a/indra/newview/llstartuplistener.cpp b/indra/newview/llstartuplistener.cpp index d9a21f908e..d9a21f908e 100755..100644 --- a/indra/newview/llstartuplistener.cpp +++ b/indra/newview/llstartuplistener.cpp diff --git a/indra/newview/llstartuplistener.h b/indra/newview/llstartuplistener.h index a35e11f6eb..a35e11f6eb 100755..100644 --- a/indra/newview/llstartuplistener.h +++ b/indra/newview/llstartuplistener.h diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 2d4b23d892..2d4b23d892 100755..100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 9d28e6c2bc..9d28e6c2bc 100755..100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp index 43fe37ac77..43fe37ac77 100755..100644 --- a/indra/newview/llstylemap.cpp +++ b/indra/newview/llstylemap.cpp diff --git a/indra/newview/llstylemap.h b/indra/newview/llstylemap.h index 8aa0af535c..8aa0af535c 100755..100644 --- a/indra/newview/llstylemap.h +++ b/indra/newview/llstylemap.h diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp index 503dd6747d..503dd6747d 100755..100644 --- a/indra/newview/llsurface.cpp +++ b/indra/newview/llsurface.cpp diff --git a/indra/newview/llsurface.h b/indra/newview/llsurface.h index 33a64ae7d5..33a64ae7d5 100755..100644 --- a/indra/newview/llsurface.h +++ b/indra/newview/llsurface.h diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 2d06b8599c..2d06b8599c 100755..100644 --- a/indra/newview/llsurfacepatch.cpp +++ b/indra/newview/llsurfacepatch.cpp diff --git a/indra/newview/llsurfacepatch.h b/indra/newview/llsurfacepatch.h index 8c8f501dce..8c8f501dce 100755..100644 --- a/indra/newview/llsurfacepatch.h +++ b/indra/newview/llsurfacepatch.h diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp index 057d80457c..2a58f018e7 100755..100644 --- a/indra/newview/llsyswellitem.cpp +++ b/indra/newview/llsyswellitem.cpp @@ -43,6 +43,7 @@ LLSysWellItem::LLSysWellItem(const Params& p) : LLPanel(p), mTitle = getChild<LLTextBox>("title"); mCloseBtn = getChild<LLButton>("close_btn"); + mTitle->setContentTrusted(false); mTitle->setValue(p.title); mCloseBtn->setClickedCallback(boost::bind(&LLSysWellItem::onClickCloseBtn,this)); diff --git a/indra/newview/llsyswellitem.h b/indra/newview/llsyswellitem.h index d961708a01..d961708a01 100755..100644 --- a/indra/newview/llsyswellitem.h +++ b/indra/newview/llsyswellitem.h diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 8babb874f8..8f64cff47c 100755..100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -296,158 +296,6 @@ BOOL LLIMWellWindow::ObjectRowPanel::handleRightMouseDown(S32 x, S32 y, MASK mas } /************************************************************************/ -/* LLNotificationWellWindow implementation */ -/************************************************************************/ - -////////////////////////////////////////////////////////////////////////// -// PUBLIC METHODS -LLNotificationWellWindow::WellNotificationChannel::WellNotificationChannel(LLNotificationWellWindow* well_window) -: LLNotificationChannel(LLNotificationChannel::Params().name(well_window->getPathname())), - mWellWindow(well_window) -{ - connectToChannel("Notifications"); - connectToChannel("Group Notifications"); - connectToChannel("Offer"); -} - -LLNotificationWellWindow::LLNotificationWellWindow(const LLSD& key) -: LLSysWellWindow(key) -{ - mNotificationUpdates.reset(new WellNotificationChannel(this)); -} - -// static -LLNotificationWellWindow* LLNotificationWellWindow::getInstance(const LLSD& key /*= LLSD()*/) -{ - return LLFloaterReg::getTypedInstance<LLNotificationWellWindow>("notification_well_window", key); -} - -// virtual -BOOL LLNotificationWellWindow::postBuild() -{ - BOOL rv = LLSysWellWindow::postBuild(); - setTitle(getString("title_notification_well_window")); - return rv; -} - -// virtual -void LLNotificationWellWindow::setVisible(BOOL visible) -{ - if (visible) - { - // when Notification channel is cleared, storable toasts will be added into the list. - clearScreenChannels(); - } - - LLSysWellWindow::setVisible(visible); -} - -//--------------------------------------------------------------------------------- -void LLNotificationWellWindow::addItem(LLSysWellItem::Params p) -{ - LLSD value = p.notification_id; - // do not add clones - if( mMessageList->getItemByValue(value)) - return; - - LLSysWellItem* new_item = new LLSysWellItem(p); - if (mMessageList->addItem(new_item, value, ADD_TOP)) - { - mSysWellChiclet->updateWidget(isWindowEmpty()); - reshapeWindow(); - new_item->setOnItemCloseCallback(boost::bind(&LLNotificationWellWindow::onItemClose, this, _1)); - new_item->setOnItemClickCallback(boost::bind(&LLNotificationWellWindow::onItemClick, this, _1)); - } - else - { - LL_WARNS() << "Unable to add Notification into the list, notification ID: " << p.notification_id - << ", title: " << p.title - << LL_ENDL; - - new_item->die(); - } -} - -void LLNotificationWellWindow::closeAll() -{ - // Need to clear notification channel, to add storable toasts into the list. - clearScreenChannels(); - std::vector<LLPanel*> items; - mMessageList->getItems(items); - for (std::vector<LLPanel*>::iterator - iter = items.begin(), - iter_end = items.end(); - iter != iter_end; ++iter) - { - LLSysWellItem* sys_well_item = dynamic_cast<LLSysWellItem*>(*iter); - if (sys_well_item) - onItemClose(sys_well_item); - } -} - -////////////////////////////////////////////////////////////////////////// -// PRIVATE METHODS -void LLNotificationWellWindow::initChannel() -{ - LLSysWellWindow::initChannel(); - if(mChannel) - { - mChannel->addOnStoreToastCallback(boost::bind(&LLNotificationWellWindow::onStoreToast, this, _1, _2)); - } -} - -void LLNotificationWellWindow::clearScreenChannels() -{ - // 1 - remove StartUp toast and channel if present - if(!LLNotificationsUI::LLScreenChannel::getStartUpToastShown()) - { - LLNotificationsUI::LLChannelManager::getInstance()->onStartUpToastClose(); - } - - // 2 - remove toasts in Notification channel - if(mChannel) - { - mChannel->removeAndStoreAllStorableToasts(); - } -} - -void LLNotificationWellWindow::onStoreToast(LLPanel* info_panel, LLUUID id) -{ - LLSysWellItem::Params p; - p.notification_id = id; - p.title = static_cast<LLToastPanel*>(info_panel)->getTitle(); - addItem(p); -} - -void LLNotificationWellWindow::onItemClick(LLSysWellItem* item) -{ - LLUUID id = item->getID(); - LLFloaterReg::showInstance("inspect_toast", id); -} - -void LLNotificationWellWindow::onItemClose(LLSysWellItem* item) -{ - LLUUID id = item->getID(); - - if(mChannel) - { - // removeItemByID() is invoked from killToastByNotificationID() and item will removed; - mChannel->killToastByNotificationID(id); - } - else - { - // removeItemByID() should be called one time for each item to remove it from notification well - removeItemByID(id); - } - -} - -void LLNotificationWellWindow::onAdd( LLNotificationPtr notify ) -{ - removeItemByID(notify->getID()); -} - -/************************************************************************/ /* LLIMWellWindow implementation */ /************************************************************************/ diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index 71b41476f5..d02293e6ff 100755..100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -96,57 +96,6 @@ protected: }; /** - * Class intended to manage incoming notifications. - * - * It contains a list of notifications that have not been responded to. - */ -class LLNotificationWellWindow : public LLSysWellWindow -{ -public: - LLNotificationWellWindow(const LLSD& key); - static LLNotificationWellWindow* getInstance(const LLSD& key = LLSD()); - - /*virtual*/ BOOL postBuild(); - /*virtual*/ void setVisible(BOOL visible); - /*virtual*/ void onAdd(LLNotificationPtr notify); - // Operating with items - void addItem(LLSysWellItem::Params p); - - // Closes all notifications and removes them from the Notification Well - void closeAll(); - -protected: - struct WellNotificationChannel : public LLNotificationChannel - { - WellNotificationChannel(LLNotificationWellWindow*); - void onDelete(LLNotificationPtr notify) - { - mWellWindow->removeItemByID(notify->getID()); - } - - LLNotificationWellWindow* mWellWindow; - }; - - LLNotificationChannelPtr mNotificationUpdates; - /*virtual*/ const std::string& getAnchorViewName() { return NOTIFICATION_WELL_ANCHOR_NAME; } - -private: - // init Window's channel - void initChannel(); - void clearScreenChannels(); - - void onStoreToast(LLPanel* info_panel, LLUUID id); - - // Handlers - void onItemClick(LLSysWellItem* item); - void onItemClose(LLSysWellItem* item); - - // ID of a toast loaded by user (by clicking notification well item) - LLUUID mLoadedToastId; - -}; - -/** * Class intended to manage incoming messages in IM chats. * * It contains a list list of all active IM sessions. diff --git a/indra/newview/lltable.h b/indra/newview/lltable.h index d75ef84ae4..d75ef84ae4 100755..100644 --- a/indra/newview/lltable.h +++ b/indra/newview/lltable.h diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index a20d69dd41..a20d69dd41 100755..100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h index e9c29c39bf..e9c29c39bf 100755..100644 --- a/indra/newview/llteleporthistory.h +++ b/indra/newview/llteleporthistory.h diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp index 8a5704939a..8a5704939a 100755..100644 --- a/indra/newview/llteleporthistorystorage.cpp +++ b/indra/newview/llteleporthistorystorage.cpp diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h index cf4c85a991..cf4c85a991 100755..100644 --- a/indra/newview/llteleporthistorystorage.h +++ b/indra/newview/llteleporthistorystorage.h diff --git a/indra/newview/lltextureatlas.cpp b/indra/newview/lltextureatlas.cpp index 1c8e4f796e..1c8e4f796e 100755..100644 --- a/indra/newview/lltextureatlas.cpp +++ b/indra/newview/lltextureatlas.cpp diff --git a/indra/newview/lltextureatlas.h b/indra/newview/lltextureatlas.h index 6b36eb7fe4..6b36eb7fe4 100755..100644 --- a/indra/newview/lltextureatlas.h +++ b/indra/newview/lltextureatlas.h diff --git a/indra/newview/lltextureatlasmanager.cpp b/indra/newview/lltextureatlasmanager.cpp index ca9d6da4db..ca9d6da4db 100755..100644 --- a/indra/newview/lltextureatlasmanager.cpp +++ b/indra/newview/lltextureatlasmanager.cpp diff --git a/indra/newview/lltextureatlasmanager.h b/indra/newview/lltextureatlasmanager.h index b643056198..b643056198 100755..100644 --- a/indra/newview/lltextureatlasmanager.h +++ b/indra/newview/lltextureatlasmanager.h diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index ef852bc905..bcdf8360ed 100755..100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1544,17 +1544,20 @@ void LLTextureCache::purgeAllTextures(bool purge_directories) { std::string dirname = mTexturesDirName + delem + subdirs[i]; LL_INFOS() << "Deleting files in directory: " << dirname << LL_ENDL; - gDirUtilp->deleteFilesInDir(dirname, mask); if (purge_directories) { - LLFile::rmdir(dirname); + gDirUtilp->deleteDirAndContents(dirname); + } + else + { + gDirUtilp->deleteFilesInDir(dirname, mask); } } if (purge_directories) { gDirUtilp->deleteFilesInDir(mTexturesDirName, mask); LLFile::rmdir(mTexturesDirName); - } + } } mHeaderIDMap.clear(); mTexturesSizeMap.clear(); diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 6ff4c44568..6ff4c44568 100755..100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 717807f513..980810835e 100755..100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -188,6 +188,7 @@ protected: private: bool mCanApply; bool mCanPreview; + bool mPreviewSettingChanged; texture_selected_callback mTextureSelectedCallback; }; @@ -215,7 +216,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( mContextConeOpacity(0.f), mSelectedItemPinned( FALSE ), mCanApply(true), - mCanPreview(true) + mCanPreview(true), + mPreviewSettingChanged(false) { buildFromFile("floater_texture_ctrl.xml"); mCanApplyImmediately = can_apply_immediately; @@ -823,6 +825,16 @@ void LLFloaterTexturePicker::onSelectionChange(const std::deque<LLFolderViewItem } setImageID(itemp->getAssetUUID(),false); mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? + + if(!mPreviewSettingChanged) + { + mCanPreview = gSavedSettings.getBOOL("TextureLivePreview"); + } + else + { + mPreviewSettingChanged = false; + } + if (user_action && mCanPreview) { // only commit intentional selections, not implicit ones @@ -979,6 +991,7 @@ void LLFloaterTexturePicker::setCanApply(bool can_preview, bool can_apply) mCanApply = can_apply; mCanPreview = can_preview ? gSavedSettings.getBOOL("TextureLivePreview") : false; + mPreviewSettingChanged = true; } void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string ) diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index 15ca7bed92..15ca7bed92 100755..100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index fab4203ec3..5306ee6be0 100755..100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -656,6 +656,7 @@ private: * is required to distribute data and perform global actions. * In pseudo-UML, it looks like: * + * @verbatim * Main Thread1 * . . * . . @@ -698,7 +699,6 @@ private: * . . * . . * - * * Key: * * SRE - Set Region Enqueued. Enqueue a 'Set Region' command in @@ -723,6 +723,7 @@ private: * global pointers used to find the 'current stats'. * RSC - Read Stats Collector. Extract collector data cloning it * (i.e. deep copy) when necessary. + * @endverbatim * */ class LLTextureFetch::TFRequest // : public LLQueuedThread::QueuedRequest @@ -2522,7 +2523,8 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image mFetchDebugger(NULL), mFetchSource(LLTextureFetch::FROM_ALL), mOriginFetchSource(LLTextureFetch::FROM_ALL), - mFetcherLocked(FALSE) + mFetcherLocked(FALSE), + mTextureInfoMainThread(false) { mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS"); mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), U32Bytes(gSavedSettings.getU32("TextureLoggingThreshold"))); @@ -3128,6 +3130,7 @@ void LLTextureFetch::shutDownImageDecodeThread() // Threads: Ttf void LLTextureFetch::startThread() { + mTextureInfo.startRecording(); } // Threads: Ttf @@ -3138,6 +3141,8 @@ void LLTextureFetch::endThread() << ", ResWaits: " << mTotalResourceWaitCount << ", TotalHTTPReq: " << getTotalNumHTTPRequests() << LL_ENDL; + + mTextureInfo.stopRecording(); } // Threads: Ttf @@ -3541,8 +3546,8 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1 if (log_to_viewer_log || log_to_sim) { U64Microseconds timeNow = LLTimer::getTotalTime(); - mTextureInfo.setRequestSize(id, worker->mFileSize); - mTextureInfo.setRequestCompleteTimeAndLog(id, timeNow); + mTextureInfoMainThread.setRequestSize(id, worker->mFileSize); + mTextureInfoMainThread.setRequestCompleteTimeAndLog(id, timeNow); } } worker->unlockWorkMutex(); // -Mw diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 27779a31e0..a2658ecd85 100755..100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -332,6 +332,7 @@ private: F32 mTextureBandwidth; // <none> F32 mMaxBandwidth; // Mfnq LLTextureInfo mTextureInfo; + LLTextureInfo mTextureInfoMainThread; // XXX possible delete U32Bits mHTTPTextureBits; // Mfnq diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp index 59d692b287..473d8ce709 100755..100644 --- a/indra/newview/lltextureinfo.cpp +++ b/indra/newview/lltextureinfo.cpp @@ -36,14 +36,16 @@ static LLTrace::CountStatHandle<S32> sTextureDownloadsCompleted("texture_downloa static LLTrace::CountStatHandle<S32Bytes > sTextureDataDownloaded("texture_data_downloaded", "amount of texture data downloaded"); static LLTrace::CountStatHandle<U32Milliseconds > sTexureDownloadTime("texture_download_time", "amount of time spent fetching textures"); -LLTextureInfo::LLTextureInfo() : +LLTextureInfo::LLTextureInfo(bool postponeStartRecoreder) : mLogTextureDownloadsToViewerLog(false), mLogTextureDownloadsToSimulator(false), mTextureDownloadProtocol("NONE"), mTextureLogThreshold(LLUnits::Kilobytes::fromValue(100)) { - mTextures.clear(); - mRecording.start(); + if (!postponeStartRecoreder) + { + startRecording(); + } } void LLTextureInfo::setUpLogging(bool writeToViewerLog, bool sendToSim, U32Bytes textureLogThreshold) @@ -78,15 +80,7 @@ U32 LLTextureInfo::getTextureInfoMapSize() bool LLTextureInfo::has(const LLUUID& id) { - std::map<LLUUID, LLTextureInfoDetails *>::iterator iterator = mTextures.find(id); - if (iterator == mTextures.end()) - { - return false; - } - else - { - return true; - } + return mTextures.end() != mTextures.find(id); } void LLTextureInfo::setRequestStartTime(const LLUUID& id, U64 startTime) @@ -192,15 +186,12 @@ void LLTextureInfo::setRequestCompleteTimeAndLog(const LLUUID& id, U64Microsecon LLSD LLTextureInfo::getAverages() { LLSD averagedTextureData; - S32 averageDownloadRate; - U32Milliseconds download_time = mRecording.getSum(sTexureDownloadTime); - if(download_time == (U32Milliseconds)0) - { - averageDownloadRate = 0; - } - else + S32 averageDownloadRate = 0; + unsigned int download_time = mRecording.getSum(sTexureDownloadTime).valueInUnits<LLUnits::Seconds>(); + + if (0 != download_time) { - averageDownloadRate = mRecording.getSum(sTextureDataDownloaded).valueInUnits<LLUnits::Bits>() / download_time.valueInUnits<LLUnits::Seconds>(); + averageDownloadRate = mRecording.getSum(sTextureDataDownloaded).valueInUnits<LLUnits::Bits>() / download_time; } averagedTextureData["bits_per_second"] = averageDownloadRate; @@ -212,6 +203,16 @@ LLSD LLTextureInfo::getAverages() return averagedTextureData; } +void LLTextureInfo::startRecording() +{ + mRecording.start(); +} + +void LLTextureInfo::stopRecording() +{ + mRecording.stop(); +} + void LLTextureInfo::resetTextureStatistics() { mRecording.restart(); diff --git a/indra/newview/lltextureinfo.h b/indra/newview/lltextureinfo.h index 176f2cbb74..03721bdd73 100755..100644 --- a/indra/newview/lltextureinfo.h +++ b/indra/newview/lltextureinfo.h @@ -35,7 +35,7 @@ class LLTextureInfo { public: - LLTextureInfo(); + LLTextureInfo(bool postponeStartRecoreder = true); ~LLTextureInfo(); void setUpLogging(bool writeToViewerLog, bool sendToSim, U32Bytes textureLogThreshold); @@ -53,6 +53,8 @@ public: void resetTextureStatistics(); U32 getTextureInfoMapSize(); LLSD getAverages(); + void startRecording(); + void stopRecording(); private: void addRequest(const LLUUID& id); diff --git a/indra/newview/lltextureinfodetails.cpp b/indra/newview/lltextureinfodetails.cpp index cab16eb922..cab16eb922 100755..100644 --- a/indra/newview/lltextureinfodetails.cpp +++ b/indra/newview/lltextureinfodetails.cpp diff --git a/indra/newview/lltextureinfodetails.h b/indra/newview/lltextureinfodetails.h index a42c335035..a42c335035 100755..100644 --- a/indra/newview/lltextureinfodetails.h +++ b/indra/newview/lltextureinfodetails.h diff --git a/indra/newview/lltexturestats.cpp b/indra/newview/lltexturestats.cpp index ca42d710f8..ca42d710f8 100755..100644 --- a/indra/newview/lltexturestats.cpp +++ b/indra/newview/lltexturestats.cpp diff --git a/indra/newview/lltexturestats.h b/indra/newview/lltexturestats.h index 09bab41fc3..09bab41fc3 100755..100644 --- a/indra/newview/lltexturestats.h +++ b/indra/newview/lltexturestats.h diff --git a/indra/newview/lltexturestatsuploader.cpp b/indra/newview/lltexturestatsuploader.cpp index c4809bc8e7..c4809bc8e7 100755..100644 --- a/indra/newview/lltexturestatsuploader.cpp +++ b/indra/newview/lltexturestatsuploader.cpp diff --git a/indra/newview/lltexturestatsuploader.h b/indra/newview/lltexturestatsuploader.h index ac268c2516..ac268c2516 100755..100644 --- a/indra/newview/lltexturestatsuploader.h +++ b/indra/newview/lltexturestatsuploader.h diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index b7786bcdd7..b7786bcdd7 100755..100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp diff --git a/indra/newview/lltextureview.h b/indra/newview/lltextureview.h index 900b4e17d8..900b4e17d8 100755..100644 --- a/indra/newview/lltextureview.h +++ b/indra/newview/lltextureview.h diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 63ede7f8ac..63ede7f8ac 100755..100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index f02d7c2a1a..f02d7c2a1a 100755..100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index 0a9453534b..530bd9a18f 100755..100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -67,19 +67,19 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal mLabel(notification->getName()), mLineEditor(NULL) { - // EXP-1822 - // save currently focused view, so that return focus to it - // on destroying this toast. - LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); - while(current_selection) - { - if (current_selection->isFocusRoot()) - { - mPreviouslyFocusedView = current_selection->getHandle(); - break; - } - current_selection = current_selection->getParent(); - } + // EXP-1822 + // save currently focused view, so that return focus to it + // on destroying this toast. + LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); + while(current_selection) + { + if (current_selection->isFocusRoot()) + { + mPreviouslyFocusedView = current_selection->getHandle(); + break; + } + current_selection = current_selection->getParent(); + } const LLFontGL* font = LLFontGL::getFontSansSerif(); const S32 LINE_HEIGHT = font->getLineHeight(); @@ -431,7 +431,24 @@ LLToastAlertPanel::~LLToastAlertPanel() // return focus to the previously focused view if the viewer is not exiting if (mPreviouslyFocusedView.get() && !LLApp::isExiting()) { - mPreviouslyFocusedView.get()->setFocus(TRUE); + LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); + while(current_selection) + { + if (current_selection->isFocusRoot()) + { + break; + } + current_selection = current_selection->getParent(); + } + if (current_selection) + { + // If the focus moved to some other view though, move the focus there + current_selection->setFocus(TRUE); + } + else + { + mPreviouslyFocusedView.get()->setFocus(TRUE); + } } } diff --git a/indra/newview/lltoastalertpanel.h b/indra/newview/lltoastalertpanel.h index d1be5e018e..d1be5e018e 100755..100644 --- a/indra/newview/lltoastalertpanel.h +++ b/indra/newview/lltoastalertpanel.h diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index e00b18dedb..cafe757c1a 100755..100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -92,12 +92,13 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(const LLNotificationPtr& notifi +LLTrans::getString("UTCTimeSec")+"] [" +LLTrans::getString("UTCTimeTimezone")+"]"; const LLDate timeStamp = notification->getDate(); - LLDate notice_date = timeStamp.notNull() ? timeStamp : LLDate::now(); + LLDate notice_date = timeStamp.notNull() ? timeStamp : payload["received_time"].asDate(); LLSD substitution; substitution["datetime"] = (S32) notice_date.secondsSinceEpoch(); LLStringUtil::format(timeStr, substitution); LLViewerTextEditor* pMessageText = getChild<LLViewerTextEditor>("message"); + pMessageText->setContentTrusted(false); pMessageText->clear(); LLStyle::Params style; diff --git a/indra/newview/lltoastgroupnotifypanel.h b/indra/newview/lltoastgroupnotifypanel.h index 269c23798c..269c23798c 100755..100644 --- a/indra/newview/lltoastgroupnotifypanel.h +++ b/indra/newview/lltoastgroupnotifypanel.h diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index 39adfb3431..39adfb3431 100755..100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 767617dabc..767617dabc 100755..100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 602c701a33..98ed2f0fc4 100755..100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -46,7 +46,7 @@ const S32 BOTTOM_PAD = VPAD * 3; const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding S32 BUTTON_WIDTH = 90; -// *TODO: magic numbers(?) - copied from llnotify.cpp(250) +// *TODO: magic numbers - copied from llnotify.cpp(250) const S32 MAX_LENGTH = 512 + 20 + DB_FIRST_NAME_BUF_SIZE + DB_LAST_NAME_BUF_SIZE + DB_INV_ITEM_NAME_BUF_SIZE; diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h index e4a75acfda..e4a75acfda 100755..100644 --- a/indra/newview/lltoastnotifypanel.h +++ b/indra/newview/lltoastnotifypanel.h diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp index e1b764a943..e1b764a943 100755..100644 --- a/indra/newview/lltoastpanel.cpp +++ b/indra/newview/lltoastpanel.cpp diff --git a/indra/newview/lltoastpanel.h b/indra/newview/lltoastpanel.h index 51630381f2..51630381f2 100755..100644 --- a/indra/newview/lltoastpanel.h +++ b/indra/newview/lltoastpanel.h diff --git a/indra/newview/lltoastscriptquestion.cpp b/indra/newview/lltoastscriptquestion.cpp index 91ba8c0247..91ba8c0247 100755..100644 --- a/indra/newview/lltoastscriptquestion.cpp +++ b/indra/newview/lltoastscriptquestion.cpp diff --git a/indra/newview/lltoastscriptquestion.h b/indra/newview/lltoastscriptquestion.h index 3a557f60f6..3a557f60f6 100755..100644 --- a/indra/newview/lltoastscriptquestion.h +++ b/indra/newview/lltoastscriptquestion.h diff --git a/indra/newview/lltoastscripttextbox.cpp b/indra/newview/lltoastscripttextbox.cpp index 78d9e92b5c..78d9e92b5c 100755..100644 --- a/indra/newview/lltoastscripttextbox.cpp +++ b/indra/newview/lltoastscripttextbox.cpp diff --git a/indra/newview/lltoastscripttextbox.h b/indra/newview/lltoastscripttextbox.h index 7d33446248..7d33446248 100755..100644 --- a/indra/newview/lltoastscripttextbox.h +++ b/indra/newview/lltoastscripttextbox.h diff --git a/indra/newview/lltool.cpp b/indra/newview/lltool.cpp index 4aad650b68..4aad650b68 100755..100644 --- a/indra/newview/lltool.cpp +++ b/indra/newview/lltool.cpp diff --git a/indra/newview/lltool.h b/indra/newview/lltool.h index c5bad9d532..c5bad9d532 100755..100644 --- a/indra/newview/lltool.h +++ b/indra/newview/lltool.h diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp index fd950864aa..fd950864aa 100755..100644 --- a/indra/newview/lltoolbarview.cpp +++ b/indra/newview/lltoolbarview.cpp diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h index a230c2fdee..a230c2fdee 100755..100644 --- a/indra/newview/lltoolbarview.h +++ b/indra/newview/lltoolbarview.h diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp index 0a0bfaf58b..0a0bfaf58b 100755..100644 --- a/indra/newview/lltoolbrush.cpp +++ b/indra/newview/lltoolbrush.cpp diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h index 2ec6911de9..2ec6911de9 100755..100644 --- a/indra/newview/lltoolbrush.h +++ b/indra/newview/lltoolbrush.h diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 5a63f6e286..76a791c6e9 100755..100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -267,7 +267,7 @@ BOOL LLToolCompTranslate::handleHover(S32 x, S32 y, MASK mask) BOOL LLToolCompTranslate::handleMouseDown(S32 x, S32 y, MASK mask) { mMouseDown = TRUE; - gViewerWindow->pickAsync(x, y, mask, pickCallback, TRUE); + gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ TRUE); return TRUE; } diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h index e75d3c22e2..e75d3c22e2 100755..100644 --- a/indra/newview/lltoolcomp.h +++ b/indra/newview/lltoolcomp.h diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 526f8d1cd8..78d9c7a3f4 100755..100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -821,6 +821,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop, if (!handled) { + // *TODO: Suppress the "outbox" case once "marketplace" is used everywhere for everyone // Disallow drag and drop to 3D from the outbox const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); if (outbox_id.notNull()) @@ -835,6 +836,20 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop, } } } + // Disallow drag and drop to 3D from the marketplace + const LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.notNull()) + { + for (S32 item_index = 0; item_index < (S32)mCargoIDs.size(); item_index++) + { + if (gInventory.isObjectDescendentOf(mCargoIDs[item_index], marketplacelistings_id)) + { + *acceptance = ACCEPT_NO; + mToolTipMsg = LLTrans::getString("TooltipOutboxDragToWorld"); + return; + } + } + } dragOrDrop3D( x, y, mask, drop, acceptance ); } @@ -846,12 +861,12 @@ void LLToolDragAndDrop::dragOrDrop3D( S32 x, S32 y, MASK mask, BOOL drop, EAccep if (mDrop) { // don't allow drag and drop onto transparent objects - pick(gViewerWindow->pickImmediate(x, y, FALSE)); + pick(gViewerWindow->pickImmediate(x, y, FALSE, FALSE)); } else { // don't allow drag and drop onto transparent objects - gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE); + gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE, FALSE); } *acceptance = mLastAccept; @@ -994,11 +1009,14 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj, return TRUE; } - // In case the inventory has not been updated (e.g. due to some recent operation - // causing a dirty inventory), stall the user while fetching the inventory. - if (hit_obj->isInventoryDirty()) + // In case the inventory has not been loaded (e.g. due to some recent operation + // causing a dirty inventory) and we can do an update, stall the user + // while fetching the inventory. + // + // Fetch if inventory is dirty and listener is present (otherwise we will not receive update) + if (hit_obj->isInventoryDirty() && hit_obj->hasInventoryListeners()) { - hit_obj->fetchInventoryFromServer(); + hit_obj->requestInventory(); LLSD args; args["ERROR_MESSAGE"] = "Unable to add texture.\nPlease wait a few seconds and try again."; LLNotificationsUtil::add("ErrorMessage", args); @@ -1078,10 +1096,12 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj, { hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true); } - // Force the object to update its refetch its inventory so it has this texture. - hit_obj->fetchInventoryFromServer(); - // TODO: Check to see if adding the item was successful; if not, then - // we should return false here. + // Force the object to update and refetch its inventory so it has this texture. + hit_obj->dirtyInventory(); + hit_obj->requestInventory(); + // TODO: Check to see if adding the item was successful; if not, then + // we should return false here. This will requre a separate listener + // since without listener, we have no way to receive update } return TRUE; } @@ -1134,8 +1154,7 @@ void LLToolDragAndDrop::dropMesh(LLViewerObject* hit_obj, } LLSculptParams sculpt_params; - sculpt_params.setSculptTexture(asset_id); - sculpt_params.setSculptType(LL_SCULPT_TYPE_MESH); + sculpt_params.setSculptTexture(asset_id, LL_SCULPT_TYPE_MESH); hit_obj->setParameterEntry(LLNetworkData::PARAMS_SCULPT, sculpt_params, TRUE); dialog_refresh_all(); diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h index de501ea32a..63be1ef09b 100755..100644 --- a/indra/newview/lltooldraganddrop.h +++ b/indra/newview/lltooldraganddrop.h @@ -89,6 +89,7 @@ public: void setCargoCount(U32 count) { mCargoCount = count; } void resetCargoCount() { mCargoCount = 0; } U32 getCargoCount() const { return (mCargoCount > 0) ? mCargoCount : mCargoIDs.size(); } + S32 getCargoIndex() const { return mCurItemIndex; } static S32 getOperationId() { return sOperationId; } diff --git a/indra/newview/lltoolface.cpp b/indra/newview/lltoolface.cpp index a00ac10698..a00ac10698 100755..100644 --- a/indra/newview/lltoolface.cpp +++ b/indra/newview/lltoolface.cpp diff --git a/indra/newview/lltoolface.h b/indra/newview/lltoolface.h index 7eb13b0fbc..7eb13b0fbc 100755..100644 --- a/indra/newview/lltoolface.h +++ b/indra/newview/lltoolface.h diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 15f3c36674..c4696c3a01 100755..100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -135,7 +135,7 @@ BOOL LLToolCamera::handleMouseDown(S32 x, S32 y, MASK mask) gViewerWindow->hideCursor(); - gViewerWindow->pickAsync(x, y, mask, pickCallback, FALSE, TRUE); + gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ FALSE, /*BOOL pick_rigged*/ FALSE, /*BOOL pick_unselectable*/ TRUE); return TRUE; } diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h index d23eb2cce6..d23eb2cce6 100755..100644 --- a/indra/newview/lltoolfocus.h +++ b/indra/newview/lltoolfocus.h diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index fa6694b93b..92e8af985b 100755..100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -146,7 +146,7 @@ BOOL LLToolGrab::handleMouseDown(S32 x, S32 y, MASK mask) if (!gAgent.leftButtonGrabbed()) { // can grab transparent objects (how touch event propagates, scripters rely on this) - gViewerWindow->pickAsync(x, y, mask, pickCallback, TRUE); + gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ TRUE); } mClickedInMouselook = gAgentCamera.cameraMouselook(); return TRUE; diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h index 4e22732124..5d24c8813e 100755..100644 --- a/indra/newview/lltoolgrab.h +++ b/indra/newview/lltoolgrab.h @@ -78,6 +78,8 @@ public: // Certain grabs should not highlight the "Build" toolbar button BOOL getHideBuildHighlight() { return mHideBuildHighlight; } + void setClickedInMouselook(BOOL is_clickedInMouselook) {mClickedInMouselook = is_clickedInMouselook;} + static void pickCallback(const LLPickInfo& pick_info); private: LLVector3d getGrabPointGlobal(); diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp index 6c9155be85..6c9155be85 100755..100644 --- a/indra/newview/lltoolgun.cpp +++ b/indra/newview/lltoolgun.cpp diff --git a/indra/newview/lltoolgun.h b/indra/newview/lltoolgun.h index 8ae926b741..8ae926b741 100755..100644 --- a/indra/newview/lltoolgun.h +++ b/indra/newview/lltoolgun.h diff --git a/indra/newview/lltoolindividual.cpp b/indra/newview/lltoolindividual.cpp index 885c1442a0..885c1442a0 100755..100644 --- a/indra/newview/lltoolindividual.cpp +++ b/indra/newview/lltoolindividual.cpp diff --git a/indra/newview/lltoolindividual.h b/indra/newview/lltoolindividual.h index 961a6a4d93..961a6a4d93 100755..100644 --- a/indra/newview/lltoolindividual.h +++ b/indra/newview/lltoolindividual.h diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index 175227173f..3ecb4015ce 100755..100644 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -37,6 +37,7 @@ #include "llfloaterinspect.h" #include "lltool.h" #include "llmanipscale.h" +#include "llmarketplacefunctions.h" #include "llselectmgr.h" #include "lltoolbrush.h" #include "lltoolcomp.h" @@ -83,6 +84,8 @@ LLToolMgr::LLToolMgr() LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Active", boost::bind(&LLToolMgr::inEdit, this)); LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Enabled", boost::bind(&LLToolMgr::canEdit, this)); LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Build.Toggle", boost::bind(&LLToolMgr::toggleBuildMode, this, _2)); + LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Marketplace.Enabled", boost::bind(&LLToolMgr::canAccessMarketplace, this)); + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Marketplace.Toggle", boost::bind(&LLToolMgr::toggleMarketplace, this, _2)); gToolNull = new LLTool(LLStringUtil::null); // Does nothing setCurrentTool(gToolNull); @@ -345,6 +348,23 @@ bool LLToolMgr::inBuildMode() return b; } +bool LLToolMgr::canAccessMarketplace() +{ + return (LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT) || gSavedSettings.getBOOL("InventoryOutboxDisplayBoth"); +} + +void LLToolMgr::toggleMarketplace(const LLSD& sdname) +{ + const std::string& param = sdname.asString(); + + if ((param != "marketplace") || !canAccessMarketplace()) + { + return; + } + + LLFloaterReg::toggleInstanceOrBringToFront("marketplace_listings"); +} + void LLToolMgr::setTransientTool(LLTool* tool) { if (!tool) diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h index e7d1c56c83..a3c1045aac 100755..100644 --- a/indra/newview/lltoolmgr.h +++ b/indra/newview/lltoolmgr.h @@ -54,7 +54,9 @@ public: bool inEdit(); bool canEdit(); + bool canAccessMarketplace(); void toggleBuildMode(const LLSD& sdname); + void toggleMarketplace(const LLSD& sdname); /* Determines if we are in Build mode or not. */ bool inBuildMode(); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 2d458db36b..2d458db36b 100755..100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h index a6889be151..a6889be151 100755..100644 --- a/indra/newview/lltoolmorph.h +++ b/indra/newview/lltoolmorph.h diff --git a/indra/newview/lltoolobjpicker.cpp b/indra/newview/lltoolobjpicker.cpp index 0d9fe9e577..0d9fe9e577 100755..100644 --- a/indra/newview/lltoolobjpicker.cpp +++ b/indra/newview/lltoolobjpicker.cpp diff --git a/indra/newview/lltoolobjpicker.h b/indra/newview/lltoolobjpicker.h index 0c37be1f92..0c37be1f92 100755..100644 --- a/indra/newview/lltoolobjpicker.h +++ b/indra/newview/lltoolobjpicker.h diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index e4353aafaa..abb9a63238 100755..100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -106,8 +106,8 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask) mMouseDownX = x; mMouseDownY = y; - //left mouse down always picks transparent - mPick = gViewerWindow->pickImmediate(x, y, TRUE); + //left mouse down always picks transparent (but see handleMouseUp) + mPick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE); mPick.mKeyMask = mask; mMouseButtonDown = true; @@ -122,7 +122,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask) BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask) { // don't pick transparent so users can't "pay" transparent objects - mPick = gViewerWindow->pickImmediate(x, y, FALSE, TRUE); + mPick = gViewerWindow->pickImmediate(x, y, /*BOOL pick_transparent*/ FALSE, /*BOOL pick_rigged*/ TRUE, /*BOOL pick_particle*/ TRUE); mPick.mKeyMask = mask; // claim not handled so UI focus stays same @@ -319,6 +319,7 @@ BOOL LLToolPie::handleLeftClickPick() { gGrabTransientTool = this; mMouseButtonDown = false; + LLToolGrab::getInstance()->setClickedInMouselook(gAgentCamera.cameraMouselook()); LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolGrab::getInstance() ); return LLToolGrab::getInstance()->handleObjectHit( mPick ); } @@ -545,7 +546,7 @@ void LLToolPie::selectionPropertiesReceived() BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) { - mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE); + mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE, FALSE); LLViewerObject *parent = NULL; LLViewerObject *object = mHoverPick.getObject(); LLSelectMgr::getInstance()->setHoverObject(object, mHoverPick.mObjectFace); @@ -591,7 +592,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) else { // perform a separate pick that detects transparent objects since they respond to 1-click actions - LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE); + LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE); LLViewerObject* click_action_object = click_action_pick.getObject(); @@ -660,30 +661,52 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask) && gAgentAvatarp && !gAgentAvatarp->isSitting() && !mBlockClickToWalk // another behavior hasn't cancelled click to walk - && !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick - && (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land - || mPick.mObjectID.notNull())) // or on an object - { - // handle special cases of steering picks - LLViewerObject* avatar_object = mPick.getObject(); - - // get pointer to avatar - while (avatar_object && !avatar_object->isAvatar()) - { - avatar_object = (LLViewerObject*)avatar_object->getParent(); - } - - if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf()) - { - const F64 SELF_CLICK_WALK_DISTANCE = 3.0; - // pretend we picked some point a bit in front of avatar - mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE; - } - gAgentCamera.setFocusOnAvatar(TRUE, TRUE); - walkToClickedLocation(); - LLFirstUse::notMoving(false); - - return TRUE; + ) + { + // We may be doing click to walk, but we don't want to use a target on + // a transparent object because the user thought they were clicking on + // whatever they were seeing through it, so recompute what was clicked on + // ignoring transparent objects + LLPickInfo savedPick = mPick; + mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY, + FALSE /* ignore transparent */, + FALSE /* ignore particles */); + + if (!mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick + && (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land + || mPick.mObjectID.notNull())) // or on an object + { + // handle special cases of steering picks + LLViewerObject* avatar_object = mPick.getObject(); + + // get pointer to avatar + while (avatar_object && !avatar_object->isAvatar()) + { + avatar_object = (LLViewerObject*)avatar_object->getParent(); + } + + if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf()) + { + const F64 SELF_CLICK_WALK_DISTANCE = 3.0; + // pretend we picked some point a bit in front of avatar + mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE; + } + gAgentCamera.setFocusOnAvatar(TRUE, TRUE); + walkToClickedLocation(); + LLFirstUse::notMoving(false); + + return TRUE; + } + else + { + LL_DEBUGS("maint5901") << "walk target was " + << (mPick.mPosGlobal.isExactlyZero() ? "zero" : "not zero") + << ", pick type was " << (mPick.mPickType == LLPickInfo::PICK_LAND ? "land" : "not land") + << ", pick object was " << mPick.mObjectID + << LL_ENDL; + // we didn't click to walk, so restore the original target + mPick = savedPick; + } } gViewerWindow->setCursor(UI_CURSOR_ARROW); if (hasMouseCapture()) @@ -715,14 +738,33 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) LL_INFOS() << "LLToolPie handleDoubleClick (becoming mouseDown)" << LL_ENDL; } + if (handleMediaDblClick(mPick)) + { + return TRUE; + } + if (gSavedSettings.getBOOL("DoubleClickAutoPilot")) { + // We may be doing double click to walk, but we don't want to use a target on + // a transparent object because the user thought they were clicking on + // whatever they were seeing through it, so recompute what was clicked on + // ignoring transparent objects + LLPickInfo savedPick = mPick; + mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY, + FALSE /* ignore transparent */, + FALSE /* ignore particles */); + if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) || (mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero())) { walkToClickedLocation(); return TRUE; } + else + { + // restore the original pick for any other purpose + mPick = savedPick; + } } else if (gSavedSettings.getBOOL("DoubleClickTeleport")) { @@ -1403,56 +1445,110 @@ static void handle_click_action_play() bool LLToolPie::handleMediaClick(const LLPickInfo& pick) { - //FIXME: how do we handle object in different parcel than us? - LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); - LLPointer<LLViewerObject> objectp = pick.getObject(); - - - if (!parcel || - objectp.isNull() || - pick.mObjectFace < 0 || - pick.mObjectFace >= objectp->getNumTEs()) - { - LLViewerMediaFocus::getInstance()->clearFocus(); - - return false; - } - - // Does this face have media? - const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace); - if(!tep) - return false; - - LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL; - if(!mep) - return false; - - viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); - - if (gSavedSettings.getBOOL("MediaOnAPrimUI")) - { - if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull()) - { - // It's okay to give this a null impl - LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal); - } - else - { - // Make sure keyboard focus is set to the media focus object. - gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance()); - LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl(); - - media_impl->mouseDown(pick.mUVCoords, gKeyboard->currentMask(TRUE)); - mMediaMouseCaptureID = mep->getMediaID(); - setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture. - } - - return true; - } - - LLViewerMediaFocus::getInstance()->clearFocus(); + //FIXME: how do we handle object in different parcel than us? + LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + LLPointer<LLViewerObject> objectp = pick.getObject(); + + + if (!parcel || + objectp.isNull() || + pick.mObjectFace < 0 || + pick.mObjectFace >= objectp->getNumTEs()) + { + LLViewerMediaFocus::getInstance()->clearFocus(); + + return false; + } + + // Does this face have media? + const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace); + if (!tep) + return false; + + LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL; + if (!mep) + return false; + + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + + if (gSavedSettings.getBOOL("MediaOnAPrimUI")) + { + if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull()) + { + // It's okay to give this a null impl + LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal); + } + else + { + // Make sure keyboard focus is set to the media focus object. + gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance()); + LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl(); + + media_impl->mouseDown(pick.mUVCoords, gKeyboard->currentMask(TRUE)); + mMediaMouseCaptureID = mep->getMediaID(); + setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture. + } + + return true; + } + + LLViewerMediaFocus::getInstance()->clearFocus(); + + return false; +} - return false; +bool LLToolPie::handleMediaDblClick(const LLPickInfo& pick) +{ + //FIXME: how do we handle object in different parcel than us? + LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + LLPointer<LLViewerObject> objectp = pick.getObject(); + + + if (!parcel || + objectp.isNull() || + pick.mObjectFace < 0 || + pick.mObjectFace >= objectp->getNumTEs()) + { + LLViewerMediaFocus::getInstance()->clearFocus(); + + return false; + } + + // Does this face have media? + const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace); + if (!tep) + return false; + + LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL; + if (!mep) + return false; + + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + + if (gSavedSettings.getBOOL("MediaOnAPrimUI")) + { + if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull()) + { + // It's okay to give this a null impl + LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal); + } + else + { + // Make sure keyboard focus is set to the media focus object. + gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance()); + LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl(); + + media_impl->mouseDoubleClick(pick.mUVCoords, gKeyboard->currentMask(TRUE)); + mMediaMouseCaptureID = mep->getMediaID(); + setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture. + } + + return true; + } + + LLViewerMediaFocus::getInstance()->clearFocus(); + + return false; } bool LLToolPie::handleMediaHover(const LLPickInfo& pick) diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 68fe8bc4a5..c4a2f4a35b 100755..100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -88,7 +88,8 @@ private: ECursorType cursorFromObject(LLViewerObject* object); bool handleMediaClick(const LLPickInfo& info); - bool handleMediaHover(const LLPickInfo& info); + bool handleMediaDblClick(const LLPickInfo& info); + bool handleMediaHover(const LLPickInfo& info); bool handleMediaMouseUp(); BOOL handleTooltipLand(std::string line, std::string tooltip_msg); BOOL handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg); diff --git a/indra/newview/lltoolpipette.cpp b/indra/newview/lltoolpipette.cpp index ff3dad2675..ff3dad2675 100755..100644 --- a/indra/newview/lltoolpipette.cpp +++ b/indra/newview/lltoolpipette.cpp diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h index 8a83bf31af..8a83bf31af 100755..100644 --- a/indra/newview/lltoolpipette.h +++ b/indra/newview/lltoolpipette.h diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp index ceb57d0172..814bade56a 100755..100644 --- a/indra/newview/lltoolplacer.cpp +++ b/indra/newview/lltoolplacer.cpp @@ -80,7 +80,7 @@ BOOL LLToolPlacer::raycastForNewObjPos( S32 x, S32 y, LLViewerObject** hit_obj, // Viewer-side pick to find the right sim to create the object on. // First find the surface the object will be created on. - LLPickInfo pick = gViewerWindow->pickImmediate(x, y, FALSE); + LLPickInfo pick = gViewerWindow->pickImmediate(x, y, FALSE, FALSE); // Note: use the frontmost non-flora version because (a) plants usually have lots of alpha and (b) pants' Havok // representations (if any) are NOT the same as their viewer representation. diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h index ad59cb0daa..ad59cb0daa 100755..100644 --- a/indra/newview/lltoolplacer.h +++ b/indra/newview/lltoolplacer.h diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 812abe9dbd..1fcc9a0711 100755..100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -63,7 +63,7 @@ LLToolSelect::LLToolSelect( LLToolComposite* composite ) BOOL LLToolSelect::handleMouseDown(S32 x, S32 y, MASK mask) { // do immediate pick query - mPick = gViewerWindow->pickImmediate(x, y, TRUE); + mPick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE); // Pass mousedown to agent LLTool::handleMouseDown(x, y, mask); diff --git a/indra/newview/lltoolselect.h b/indra/newview/lltoolselect.h index 74dababe8c..74dababe8c 100755..100644 --- a/indra/newview/lltoolselect.h +++ b/indra/newview/lltoolselect.h diff --git a/indra/newview/lltoolselectland.cpp b/indra/newview/lltoolselectland.cpp index ff991dc9fd..ff991dc9fd 100755..100644 --- a/indra/newview/lltoolselectland.cpp +++ b/indra/newview/lltoolselectland.cpp diff --git a/indra/newview/lltoolselectland.h b/indra/newview/lltoolselectland.h index b368a4b153..b368a4b153 100755..100644 --- a/indra/newview/lltoolselectland.h +++ b/indra/newview/lltoolselectland.h diff --git a/indra/newview/lltoolselectrect.cpp b/indra/newview/lltoolselectrect.cpp index c5616fb208..71dc8001d4 100755..100644 --- a/indra/newview/lltoolselectrect.cpp +++ b/indra/newview/lltoolselectrect.cpp @@ -71,7 +71,7 @@ void dialog_refresh_all(void); BOOL LLToolSelectRect::handleMouseDown(S32 x, S32 y, MASK mask) { - handlePick(gViewerWindow->pickImmediate(x, y, TRUE)); + handlePick(gViewerWindow->pickImmediate(x, y, TRUE, FALSE)); LLTool::handleMouseDown(x, y, mask); diff --git a/indra/newview/lltoolselectrect.h b/indra/newview/lltoolselectrect.h index 5fdf622b49..5fdf622b49 100755..100644 --- a/indra/newview/lltoolselectrect.h +++ b/indra/newview/lltoolselectrect.h diff --git a/indra/newview/lltoolview.cpp b/indra/newview/lltoolview.cpp index 678e2c241a..678e2c241a 100755..100644 --- a/indra/newview/lltoolview.cpp +++ b/indra/newview/lltoolview.cpp diff --git a/indra/newview/lltoolview.h b/indra/newview/lltoolview.h index 3b5fb55cce..3b5fb55cce 100755..100644 --- a/indra/newview/lltoolview.h +++ b/indra/newview/lltoolview.h diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index f611d0503f..f611d0503f 100755..100644 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp diff --git a/indra/newview/lltracker.h b/indra/newview/lltracker.h index 218f3430a6..218f3430a6 100755..100644 --- a/indra/newview/lltracker.h +++ b/indra/newview/lltracker.h diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp index c108f1dfdc..c108f1dfdc 100755..100644 --- a/indra/newview/lltransientdockablefloater.cpp +++ b/indra/newview/lltransientdockablefloater.cpp diff --git a/indra/newview/lltransientdockablefloater.h b/indra/newview/lltransientdockablefloater.h index 5fb79597f4..5fb79597f4 100755..100644 --- a/indra/newview/lltransientdockablefloater.h +++ b/indra/newview/lltransientdockablefloater.h diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp index 3d68c10489..3d68c10489 100755..100644 --- a/indra/newview/lltransientfloatermgr.cpp +++ b/indra/newview/lltransientfloatermgr.cpp diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index b4611c8c87..b4611c8c87 100755..100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index c0ba0a1f39..c0ba0a1f39 100755..100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 972274714a..972274714a 100755..100644 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h diff --git a/indra/newview/lluiconstants.h b/indra/newview/lluiconstants.h index 1479e58c43..1479e58c43 100755..100644 --- a/indra/newview/lluiconstants.h +++ b/indra/newview/lluiconstants.h diff --git a/indra/newview/lluilistener.cpp b/indra/newview/lluilistener.cpp index 6b2cd71d40..6b2cd71d40 100755..100644 --- a/indra/newview/lluilistener.cpp +++ b/indra/newview/lluilistener.cpp diff --git a/indra/newview/lluilistener.h b/indra/newview/lluilistener.h index 08724024dc..08724024dc 100755..100644 --- a/indra/newview/lluilistener.h +++ b/indra/newview/lluilistener.h diff --git a/indra/newview/lluploaddialog.cpp b/indra/newview/lluploaddialog.cpp index e59064c074..e59064c074 100755..100644 --- a/indra/newview/lluploaddialog.cpp +++ b/indra/newview/lluploaddialog.cpp diff --git a/indra/newview/lluploaddialog.h b/indra/newview/lluploaddialog.h index 3aa9583315..3aa9583315 100755..100644 --- a/indra/newview/lluploaddialog.h +++ b/indra/newview/lluploaddialog.h diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp index 69b9b1f9f1..69b9b1f9f1 100755..100644 --- a/indra/newview/lluploadfloaterobservers.cpp +++ b/indra/newview/lluploadfloaterobservers.cpp diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h index 4ff4a827a5..4ff4a827a5 100755..100644 --- a/indra/newview/lluploadfloaterobservers.h +++ b/indra/newview/lluploadfloaterobservers.h diff --git a/indra/newview/llurl.cpp b/indra/newview/llurl.cpp index 01a81c5f83..01a81c5f83 100755..100644 --- a/indra/newview/llurl.cpp +++ b/indra/newview/llurl.cpp diff --git a/indra/newview/llurl.h b/indra/newview/llurl.h index 01ab3bdfc2..01ab3bdfc2 100755..100644 --- a/indra/newview/llurl.h +++ b/indra/newview/llurl.h diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp index 78268944fc..78268944fc 100755..100644 --- a/indra/newview/llurldispatcher.cpp +++ b/indra/newview/llurldispatcher.cpp diff --git a/indra/newview/llurldispatcher.h b/indra/newview/llurldispatcher.h index 9b05260af1..9b05260af1 100755..100644 --- a/indra/newview/llurldispatcher.h +++ b/indra/newview/llurldispatcher.h diff --git a/indra/newview/llurldispatcherlistener.cpp b/indra/newview/llurldispatcherlistener.cpp index 7545f3a9b3..7545f3a9b3 100755..100644 --- a/indra/newview/llurldispatcherlistener.cpp +++ b/indra/newview/llurldispatcherlistener.cpp diff --git a/indra/newview/llurldispatcherlistener.h b/indra/newview/llurldispatcherlistener.h index b09594bb39..b09594bb39 100755..100644 --- a/indra/newview/llurldispatcherlistener.h +++ b/indra/newview/llurldispatcherlistener.h diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp index f7064e152a..f7064e152a 100755..100644 --- a/indra/newview/llurlhistory.cpp +++ b/indra/newview/llurlhistory.cpp diff --git a/indra/newview/llurlhistory.h b/indra/newview/llurlhistory.h index 3cce4cbe1d..3cce4cbe1d 100755..100644 --- a/indra/newview/llurlhistory.h +++ b/indra/newview/llurlhistory.h diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp index cad5769042..8a61114852 100755..100644 --- a/indra/newview/llurllineeditorctrl.cpp +++ b/indra/newview/llurllineeditorctrl.cpp @@ -84,7 +84,7 @@ void LLURLLineEditor::copyEscapedURLToClipboard() const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length)); LLWString text_to_copy; // *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335). - if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL + if (LLStringUtil::startsWith(unescaped_text, "http://") || LLStringUtil::startsWith(unescaped_text, "secondlife://")) // SLURL text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text)); else // human-readable location text_to_copy = utf8str_to_wstring(unescaped_text); diff --git a/indra/newview/llurllineeditorctrl.h b/indra/newview/llurllineeditorctrl.h index b9540dd571..b9540dd571 100755..100644 --- a/indra/newview/llurllineeditorctrl.h +++ b/indra/newview/llurllineeditorctrl.h diff --git a/indra/newview/llurlwhitelist.cpp b/indra/newview/llurlwhitelist.cpp index 3a7285974e..3a7285974e 100755..100644 --- a/indra/newview/llurlwhitelist.cpp +++ b/indra/newview/llurlwhitelist.cpp diff --git a/indra/newview/llurlwhitelist.h b/indra/newview/llurlwhitelist.h index b0969051a7..b0969051a7 100755..100644 --- a/indra/newview/llurlwhitelist.h +++ b/indra/newview/llurlwhitelist.h diff --git a/indra/newview/llvectorperfoptions.cpp b/indra/newview/llvectorperfoptions.cpp index b80058d98c..b80058d98c 100755..100644 --- a/indra/newview/llvectorperfoptions.cpp +++ b/indra/newview/llvectorperfoptions.cpp diff --git a/indra/newview/llvectorperfoptions.h b/indra/newview/llvectorperfoptions.h index e7a5748256..e7a5748256 100755..100644 --- a/indra/newview/llvectorperfoptions.h +++ b/indra/newview/llvectorperfoptions.h diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 5cc7d7bed3..a0ca91672a 100755..100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -29,6 +29,7 @@ #include <iostream> #include <sstream> #include "llversioninfo.h" +#include <boost/regex.hpp> #if ! defined(LL_VIEWER_CHANNEL) \ || ! defined(LL_VIEWER_VERSION_MAJOR) \ @@ -131,3 +132,48 @@ void LLVersionInfo::resetChannel(const std::string& channel) sWorkingChannelName = channel; sVersionChannel.clear(); // Reset version and channel string til next use. } + +//static +LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity() +{ + ViewerMaturity maturity; + + std::string channel = getChannel(); + + static const boost::regex is_test_channel("\\bTest\\b"); + static const boost::regex is_beta_channel("\\bBeta\\b"); + static const boost::regex is_project_channel("\\bProject\\b"); + static const boost::regex is_release_channel("\\bRelease\\b"); + + if (boost::regex_search(channel, is_release_channel)) + { + maturity = RELEASE_VIEWER; + } + else if (boost::regex_search(channel, is_beta_channel)) + { + maturity = BETA_VIEWER; + } + else if (boost::regex_search(channel, is_project_channel)) + { + maturity = PROJECT_VIEWER; + } + else if (boost::regex_search(channel, is_test_channel)) + { + maturity = TEST_VIEWER; + } + else + { + LL_WARNS() << "Channel '" << channel + << "' does not follow naming convention, assuming Test" + << LL_ENDL; + maturity = TEST_VIEWER; + } + return maturity; +} + + +const std::string &LLVersionInfo::getBuildConfig() +{ + static const std::string build_configuration(LLBUILD_CONFIG); // set in indra/cmake/BuildVersion.cmake + return build_configuration; +} diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 077105cae8..ec599c0cda 100755..100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -66,8 +66,20 @@ public: /// return the channel name, e.g. "Second Life" static const std::string &getChannel(); + /// return the CMake build type + static const std::string &getBuildConfig(); + /// reset the channel name used by the viewer. static void resetChannel(const std::string& channel); + + typedef enum + { + TEST_VIEWER, + PROJECT_VIEWER, + BETA_VIEWER, + RELEASE_VIEWER + } ViewerMaturity; + static ViewerMaturity getViewerMaturity(); }; #endif diff --git a/indra/newview/llviewchildren.cpp b/indra/newview/llviewchildren.cpp index 5c5bbdc8f5..5c5bbdc8f5 100755..100644 --- a/indra/newview/llviewchildren.cpp +++ b/indra/newview/llviewchildren.cpp diff --git a/indra/newview/llviewchildren.h b/indra/newview/llviewchildren.h index 4cd8209259..4cd8209259 100755..100644 --- a/indra/newview/llviewchildren.h +++ b/indra/newview/llviewchildren.h diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 54ac29723f..54ac29723f 100755..100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h index 9d425c82fc..9d425c82fc 100755..100644 --- a/indra/newview/llviewerassetstats.h +++ b/indra/newview/llviewerassetstats.h diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index 5fb99ce02f..5fb99ce02f 100755..100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h index 6baec647e6..6baec647e6 100755..100644 --- a/indra/newview/llviewerassetstorage.h +++ b/indra/newview/llviewerassetstorage.h diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp index 08ba5a5f25..08ba5a5f25 100755..100644 --- a/indra/newview/llviewerassettype.cpp +++ b/indra/newview/llviewerassettype.cpp diff --git a/indra/newview/llviewerassettype.h b/indra/newview/llviewerassettype.h index 9ad8ea7eeb..9ad8ea7eeb 100755..100644 --- a/indra/newview/llviewerassettype.h +++ b/indra/newview/llviewerassettype.h diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp index 3975292ed3..3975292ed3 100755..100644 --- a/indra/newview/llviewerattachmenu.cpp +++ b/indra/newview/llviewerattachmenu.cpp diff --git a/indra/newview/llviewerattachmenu.h b/indra/newview/llviewerattachmenu.h index 064c69ef4d..064c69ef4d 100755..100644 --- a/indra/newview/llviewerattachmenu.h +++ b/indra/newview/llviewerattachmenu.h diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 7ce9d858dd..7ce9d858dd 100755..100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h index 8c302c6549..8c302c6549 100755..100644 --- a/indra/newview/llvieweraudio.h +++ b/indra/newview/llvieweraudio.h diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index 57a0195d23..57a0195d23 100755..100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h index 7b2887d725..7b2887d725 100755..100644 --- a/indra/newview/llviewercamera.h +++ b/indra/newview/llviewercamera.h diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp index 1c3c547bc1..1c3c547bc1 100755..100644 --- a/indra/newview/llviewerchat.cpp +++ b/indra/newview/llviewerchat.cpp diff --git a/indra/newview/llviewerchat.h b/indra/newview/llviewerchat.h index c05caf0a95..c05caf0a95 100755..100644 --- a/indra/newview/llviewerchat.h +++ b/indra/newview/llviewerchat.h diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 5020518454..5020518454 100755..100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp diff --git a/indra/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h index d7191f5c8d..d7191f5c8d 100755..100644 --- a/indra/newview/llviewercontrol.h +++ b/indra/newview/llviewercontrol.h diff --git a/indra/newview/llviewercontrollistener.cpp b/indra/newview/llviewercontrollistener.cpp index 361b96221c..361b96221c 100755..100644 --- a/indra/newview/llviewercontrollistener.cpp +++ b/indra/newview/llviewercontrollistener.cpp diff --git a/indra/newview/llviewercontrollistener.h b/indra/newview/llviewercontrollistener.h index 2e72046924..2e72046924 100755..100644 --- a/indra/newview/llviewercontrollistener.h +++ b/indra/newview/llviewercontrollistener.h diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index afa00e3e6e..afa00e3e6e 100755..100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp diff --git a/indra/newview/llviewerdisplay.h b/indra/newview/llviewerdisplay.h index f6467d7f93..f6467d7f93 100755..100644 --- a/indra/newview/llviewerdisplay.h +++ b/indra/newview/llviewerdisplay.h diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp index e390e8776d..e390e8776d 100755..100644 --- a/indra/newview/llviewerdisplayname.cpp +++ b/indra/newview/llviewerdisplayname.cpp diff --git a/indra/newview/llviewerdisplayname.h b/indra/newview/llviewerdisplayname.h index 16d59ae43b..16d59ae43b 100755..100644 --- a/indra/newview/llviewerdisplayname.h +++ b/indra/newview/llviewerdisplayname.h diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index fc18b20758..14a2627f27 100755..100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -61,6 +61,9 @@ #include "llfloatereditsky.h" #include "llfloatereditwater.h" #include "llfloaterenvironmentsettings.h" +#include "llfloaterexperienceprofile.h" +#include "llfloaterexperiences.h" +#include "llfloaterexperiencepicker.h" #include "llfloaterevent.h" #include "llfloaterfacebook.h" #include "llfloaterflickr.h" @@ -81,11 +84,13 @@ #include "llfloaterland.h" #include "llfloaterlandholdings.h" #include "llfloatermap.h" +#include "llfloatermarketplacelistings.h" #include "llfloatermediasettings.h" #include "llfloatermemleak.h" #include "llfloatermodelpreview.h" #include "llfloaternamedesc.h" #include "llfloaternotificationsconsole.h" +#include "llfloaternotificationstabbed.h" #include "llfloaterobjectweights.h" #include "llfloateropenobject.h" #include "llfloateroutbox.h" @@ -183,6 +188,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("block_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>); LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>); LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); + LLFloaterReg::add("associate_listing", "floater_associate_listing.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAssociateListing>); LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>); LLFloaterReg::add("avatar", "floater_avatar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>); LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>); @@ -214,8 +220,11 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("env_edit_water", "floater_edit_water_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditWater>); LLFloaterReg::add("env_edit_day_cycle", "floater_edit_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditDayCycle>); - LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>); - + LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>); + LLFloaterReg::add("experiences", "floater_experiences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterExperiences>); + LLFloaterReg::add("experience_profile", "floater_experienceprofile.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterExperienceProfile>); + LLFloaterReg::add("experience_search", "floater_experience_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterExperiencePicker>); + LLFloaterReg::add("font_test", "floater_font_test.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFontTest>); LLFloaterReg::add("gestures", "floater_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterGesture>); @@ -232,6 +241,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>); LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>); + LLFloaterReg::add("item_properties", "floater_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>); LLInspectAvatarUtil::registerFloater(); LLInspectGroupUtil::registerFloater(); LLInspectObjectUtil::registerFloater(); @@ -250,6 +260,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("tex_fetch_debugger", "floater_texture_fetch_debugger.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTextureFetchDebugger>); } LLFloaterReg::add("media_settings", "floater_media_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaSettings>); + LLFloaterReg::add("marketplace_listings", "floater_marketplace_listings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMarketplaceListings>); + LLFloaterReg::add("marketplace_validation", "floater_marketplace_validation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMarketplaceValidation>); LLFloaterReg::add("message_critical", "floater_critical.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>); LLFloaterReg::add("message_tos", "floater_tos.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>); LLFloaterReg::add("moveview", "floater_moveview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMove>); @@ -257,7 +269,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMap>); LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationConsole>); - LLFloaterReg::add("notification_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNotificationWellWindow>); + + LLFloaterReg::add("notification_well_window", "floater_notifications_tabbed.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationsTabbed>); LLFloaterReg::add("object_weights", "floater_object_weights.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterObjectWeights>); LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>); diff --git a/indra/newview/llviewerfloaterreg.h b/indra/newview/llviewerfloaterreg.h index 8a827a003e..8a827a003e 100755..100644 --- a/indra/newview/llviewerfloaterreg.h +++ b/indra/newview/llviewerfloaterreg.h diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index 0401de7e69..158cacbc81 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -140,7 +140,11 @@ LLViewerFolderDictionary::LLViewerFolderDictionary() addEntry(LLFolderType::FT_OUTBOX, new ViewerFolderEntry("Merchant Outbox", "Inv_SysOpen", "Inv_SysClosed", FALSE, boxes_invisible)); addEntry(LLFolderType::FT_BASIC_ROOT, new ViewerFolderEntry("Basic Root", "Inv_SysOpen", "Inv_SysClosed", FALSE, true)); - + + addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new ViewerFolderEntry("Marketplace Listings", "Inv_SysOpen", "Inv_SysClosed", FALSE, boxes_invisible)); + addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new ViewerFolderEntry("New Stock", "Inv_StockFolderOpen", "Inv_StockFolderClosed", FALSE, false, "default")); + addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new ViewerFolderEntry("New Version", "Inv_VersionFolderOpen","Inv_VersionFolderClosed", FALSE, false, "default")); + addEntry(LLFolderType::FT_NONE, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE, false, "default")); for (U32 type = (U32)LLFolderType::FT_ENSEMBLE_START; type <= (U32)LLFolderType::FT_ENSEMBLE_END; ++type) diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h index 13d5a8fbbd..13d5a8fbbd 100755..100644 --- a/indra/newview/llviewerfoldertype.h +++ b/indra/newview/llviewerfoldertype.h diff --git a/indra/newview/llviewergenericmessage.cpp b/indra/newview/llviewergenericmessage.cpp index 3df53a4a30..3df53a4a30 100755..100644 --- a/indra/newview/llviewergenericmessage.cpp +++ b/indra/newview/llviewergenericmessage.cpp diff --git a/indra/newview/llviewergenericmessage.h b/indra/newview/llviewergenericmessage.h index 9d451ec0bc..9d451ec0bc 100755..100644 --- a/indra/newview/llviewergenericmessage.h +++ b/indra/newview/llviewergenericmessage.h diff --git a/indra/newview/llviewergesture.cpp b/indra/newview/llviewergesture.cpp index f30279d1e9..f30279d1e9 100755..100644 --- a/indra/newview/llviewergesture.cpp +++ b/indra/newview/llviewergesture.cpp diff --git a/indra/newview/llviewergesture.h b/indra/newview/llviewergesture.h index 8b621850ea..8b621850ea 100755..100644 --- a/indra/newview/llviewergesture.h +++ b/indra/newview/llviewergesture.h diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 04c2e27c9d..04c2e27c9d 100755..100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h index a983012e2e..a983012e2e 100755..100644 --- a/indra/newview/llviewerhelp.h +++ b/indra/newview/llviewerhelp.h diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp index ef4b955a5e..ef4b955a5e 100755..100644 --- a/indra/newview/llviewerhelputil.cpp +++ b/indra/newview/llviewerhelputil.cpp diff --git a/indra/newview/llviewerhelputil.h b/indra/newview/llviewerhelputil.h index d8f08f3f04..d8f08f3f04 100755..100644 --- a/indra/newview/llviewerhelputil.h +++ b/indra/newview/llviewerhelputil.h diff --git a/indra/newview/llviewerhome.cpp b/indra/newview/llviewerhome.cpp index e4e60b981c..e4e60b981c 100755..100644 --- a/indra/newview/llviewerhome.cpp +++ b/indra/newview/llviewerhome.cpp diff --git a/indra/newview/llviewerhome.h b/indra/newview/llviewerhome.h index 8e0cdc85ec..8e0cdc85ec 100755..100644 --- a/indra/newview/llviewerhome.h +++ b/indra/newview/llviewerhome.h diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index d6c8ba10f6..24096e3222 100755..100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -808,6 +808,36 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const return true; } +bool LLViewerInventoryCategory::acceptItem(LLInventoryItem* inv_item) +{ + if (!inv_item) + { + return false; + } + + // Only stock folders have limitation on which item they will accept + bool accept = true; + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // If the item is copyable (i.e. non stock) do not accept the drop in a stock folder + if (inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + accept = false; + } + else + { + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(getUUID(),cat_array,item_array); + // Destination stock folder must be empty OR types of incoming and existing items must be identical and have the same permissions + accept = (!item_array->size() || + ((item_array->at(0)->getInventoryType() == inv_item->getInventoryType()) && + (item_array->at(0)->getPermissions().getMaskNextOwner() == inv_item->getPermissions().getMaskNextOwner()))); + } + } + return accept; +} + void LLViewerInventoryCategory::determineFolderType() { /* Do NOT uncomment this code. This is for future 2.1 support of ensembles. @@ -2106,7 +2136,7 @@ LLWearableType::EType LLViewerInventoryItem::getWearableType() const { return LLWearableType::WT_INVALID; } - return LLWearableType::EType(getFlags() & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK); + return LLWearableType::inventoryFlagsToWearableType(getFlags()); } @@ -2306,5 +2336,3 @@ BOOL LLViewerInventoryItem::regenerateLink() gInventory.notifyObservers(); return TRUE; } - - diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index ca92565600..4e91e4110a 100755..100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -228,6 +228,9 @@ public: void changeType(LLFolderType::EType new_folder_type); virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0); virtual BOOL unpackMessage(const LLSD& category); + + // returns true if the category object will accept the incoming item + bool acceptItem(LLInventoryItem* inv_item); private: friend class LLInventoryModel; diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index e46299f9d2..e46299f9d2 100755..100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index fd262b6e80..fd262b6e80 100755..100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index 888decd3be..888decd3be 100755..100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h index 9addafaee1..9addafaee1 100755..100644 --- a/indra/newview/llviewerjointattachment.h +++ b/indra/newview/llviewerjointattachment.h diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index bf7cf08c63..bf7cf08c63 100755..100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h index 0db2836e15..0db2836e15 100755..100644 --- a/indra/newview/llviewerjointmesh.h +++ b/indra/newview/llviewerjointmesh.h diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp index e44d80b7ce..e44d80b7ce 100755..100644 --- a/indra/newview/llviewerjoystick.cpp +++ b/indra/newview/llviewerjoystick.cpp diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h index 80c758a5af..80c758a5af 100755..100644 --- a/indra/newview/llviewerjoystick.h +++ b/indra/newview/llviewerjoystick.h diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index ada829eb4b..2186ed3c52 100755..100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -423,7 +423,7 @@ void camera_move_backward( EKeystate s ) void camera_move_forward_sitting( EKeystate s ) { if( KEYSTATE_UP == s && gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_FORWARD ) return; - if (gAgent.forwardGrabbed() || gAgentCamera.sitCameraEnabled() || gAgent.getRunning()) + if (gAgent.forwardGrabbed() || gAgentCamera.sitCameraEnabled() || (gAgent.getRunning() && !gAgent.getAlwaysRun())) { agent_push_forward(s); } @@ -438,7 +438,7 @@ void camera_move_backward_sitting( EKeystate s ) { if( KEYSTATE_UP == s && gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_BACKWARD ) return; - if (gAgent.backwardGrabbed() || gAgentCamera.sitCameraEnabled() || gAgent.getRunning()) + if (gAgent.backwardGrabbed() || gAgentCamera.sitCameraEnabled() || (gAgent.getRunning() && !gAgent.getAlwaysRun())) { agent_push_backward(s); } @@ -729,7 +729,10 @@ BOOL LLViewerKeyboard::handleKey(KEY translated_key, MASK translated_mask, BOOL return mKeyHandledByUI[translated_key]; } - +BOOL LLViewerKeyboard::handleKeyUp(KEY translated_key, MASK translated_mask) +{ + return gViewerWindow->handleKeyUp(translated_key, translated_mask); +} BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name) { diff --git a/indra/newview/llviewerkeyboard.h b/indra/newview/llviewerkeyboard.h index ca73212ed1..110dc89d28 100755..100644 --- a/indra/newview/llviewerkeyboard.h +++ b/indra/newview/llviewerkeyboard.h @@ -89,6 +89,7 @@ public: LLViewerKeyboard(); BOOL handleKey(KEY key, MASK mask, BOOL repeated); + BOOL handleKeyUp(KEY key, MASK mask); S32 loadBindings(const std::string& filename); // returns number bound, 0 on error S32 loadBindingsXML(const std::string& filename); // returns number bound, 0 on error diff --git a/indra/newview/llviewerlayer.cpp b/indra/newview/llviewerlayer.cpp index 1a07251e92..1a07251e92 100755..100644 --- a/indra/newview/llviewerlayer.cpp +++ b/indra/newview/llviewerlayer.cpp diff --git a/indra/newview/llviewerlayer.h b/indra/newview/llviewerlayer.h index f9ec9c0c83..f9ec9c0c83 100755..100644 --- a/indra/newview/llviewerlayer.h +++ b/indra/newview/llviewerlayer.h diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 509227c683..ffae3c0e1f 100755..100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -5,21 +5,21 @@ * $LicenseInfo:firstyear=2007&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$ */ @@ -66,6 +66,7 @@ #include "llvoavatar.h" #include "llvoavatarself.h" #include "llvovolume.h" +#include "llfloaterreg.h" #include "llwebprofile.h" #include "llwindow.h" #include "llvieweraudio.h" @@ -167,7 +168,7 @@ public: { LL_ERRS() << "impl already has an outstanding responder" << LL_ENDL; } - + mMediaImpl->mMimeTypeProbe = this; } @@ -189,19 +190,19 @@ private: std::string mime_type = media_type.substr(0, idx1); LL_DEBUGS() << "status is " << getStatus() << ", media type \"" << media_type << "\"" << LL_ENDL; - + // 2xx status codes indicate success. // Most 4xx status codes are successful enough for our purposes. // 499 is the error code for host not found, timeout, etc. - // 500 means "Internal Server error" but we decided it's okay to + // 500 means "Internal Server error" but we decided it's okay to // accept this and go past it in the MIME type probe // 302 means the resource can be found temporarily in a different place - added this for join.secondlife.com - // 499 is a code specifc to join.secondlife.com (?) apparently safe to ignore + // 499 is a code specifc to join.secondlife.com apparently safe to ignore // if( ((status >= 200) && (status < 300)) || -// ((status >= 400) && (status < 499)) || +// ((status >= 400) && (status < 499)) || // (status == 500) || // (status == 302) || -// (status == 499) +// (status == 499) // ) // We now no longer check the error code returned from the probe. // If we have a mime type, use it. If not, default to the web plugin and let it handle error reporting. @@ -229,7 +230,7 @@ private: // the call to initializeMedia may disconnect the responder, which will clear mMediaImpl. // Make a local copy so we can call loadURI() afterwards. LLViewerMediaImpl *impl = mMediaImpl; - + if(impl && !mInitialized && ! mime_type.empty()) { if(impl->initializeMedia(mime_type)) @@ -240,13 +241,13 @@ private: } } } - + public: void cancelRequest() { disconnectOwner(); } - + private: void disconnectOwner() { @@ -261,8 +262,8 @@ private: } mMediaImpl = NULL; } - - + + public: LLViewerMediaImpl *mMediaImpl; bool mInitialized; @@ -284,13 +285,12 @@ public: const LLChannelDescriptors& channels, const LLIOPipe::buffer_ptr_t& buffer) { - // We don't care about the content of the response, only the Set-Cookie header. - LL_DEBUGS("MediaAuth") << dumpResponse() - << " [headers:" << getResponseHeaders() << "]" << LL_ENDL; + const std::string url = getURL(); + const std::string& cookie = getResponseHeader(HTTP_IN_HEADER_SET_COOKIE); - + // *TODO: What about bad status codes? Does this destroy previous cookies? - LLViewerMedia::openIDCookieResponse(cookie); + LLViewerMedia::openIDCookieResponse(url, cookie); } }; @@ -313,7 +313,7 @@ public: const LLIOPipe::buffer_ptr_t& buffer) { // We don't care about the content of the response, only the set-cookie header. - LL_WARNS("MediaAuth") << dumpResponse() + LL_WARNS("MediaAuth") << dumpResponse() << " [headers:" << getResponseHeaders() << "]" << LL_ENDL; LLSD stripped_content = getResponseHeaders(); @@ -364,7 +364,7 @@ static void remove_media_impl(LLViewerMediaImpl* media) { LLViewerMedia::impl_list::iterator iter = sViewerMediaImplList.begin(); LLViewerMedia::impl_list::iterator end = sViewerMediaImplList.end(); - + for(; iter != end; iter++) { if(media == *iter) @@ -391,8 +391,8 @@ static bool sViewerMediaMuteListObserverInitialized = false; // static viewer_media_t LLViewerMedia::newMediaImpl( const LLUUID& texture_id, - S32 media_width, - S32 media_height, + S32 media_width, + S32 media_height, U8 media_auto_scale, U8 media_loop) { @@ -416,24 +416,24 @@ viewer_media_t LLViewerMedia::newMediaImpl( } viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self) -{ +{ // Try to find media with the same media ID viewer_media_t media_impl = getMediaImplFromTextureID(media_entry->getMediaID()); - - LL_DEBUGS() << "called, current URL is \"" << media_entry->getCurrentURL() - << "\", previous URL is \"" << previous_url + + LL_DEBUGS() << "called, current URL is \"" << media_entry->getCurrentURL() + << "\", previous URL is \"" << previous_url << "\", update_from_self is " << (update_from_self?"true":"false") << LL_ENDL; - + bool was_loaded = false; bool needs_navigate = false; - + if(media_impl) - { + { was_loaded = media_impl->hasMedia(); - + media_impl->setHomeURL(media_entry->getHomeURL()); - + media_impl->mMediaAutoScale = media_entry->getAutoScale(); media_impl->mMediaLoop = media_entry->getAutoLoop(); media_impl->mMediaWidth = media_entry->getWidthPixels(); @@ -446,7 +446,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s media_impl->mMediaSource->setLoop(media_impl->mMediaLoop); media_impl->mMediaSource->setSize(media_entry->getWidthPixels(), media_entry->getHeightPixels()); } - + bool url_changed = (media_impl->mMediaEntryURL != previous_url); if(media_impl->mMediaEntryURL.empty()) { @@ -454,7 +454,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s { // The current media URL is now empty. Unload the media source. media_impl->unload(); - + LL_DEBUGS() << "Unloading media instance (new current URL is empty)." << LL_ENDL; } } @@ -463,26 +463,26 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s // The current media URL is not empty. // If (the media was already loaded OR the media was set to autoplay) AND this update didn't come from this agent, // do a navigate. - bool auto_play = media_impl->isAutoPlayable(); + bool auto_play = media_impl->isAutoPlayable(); if((was_loaded || auto_play) && !update_from_self) { needs_navigate = url_changed; } - - LL_DEBUGS() << "was_loaded is " << (was_loaded?"true":"false") - << ", auto_play is " << (auto_play?"true":"false") + + LL_DEBUGS() << "was_loaded is " << (was_loaded?"true":"false") + << ", auto_play is " << (auto_play?"true":"false") << ", needs_navigate is " << (needs_navigate?"true":"false") << LL_ENDL; } } else { media_impl = newMediaImpl( - media_entry->getMediaID(), + media_entry->getMediaID(), media_entry->getWidthPixels(), - media_entry->getHeightPixels(), - media_entry->getAutoScale(), + media_entry->getHeightPixels(), + media_entry->getAutoScale(), media_entry->getAutoLoop()); - + media_impl->setHomeURL(media_entry->getHomeURL()); media_impl->mMediaAutoPlay = media_entry->getAutoPlay(); media_impl->mMediaEntryURL = media_entry->getCurrentURL(); @@ -491,7 +491,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s needs_navigate = true; } } - + if(media_impl) { if(needs_navigate) @@ -510,7 +510,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s LL_DEBUGS() << "updating URL in the media impl to " << media_impl->mMediaEntryURL << LL_ENDL; } } - + return media_impl; } @@ -519,7 +519,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s LLViewerMediaImpl* LLViewerMedia::getMediaImplFromTextureID(const LLUUID& texture_id) { LLViewerMediaImpl* result = NULL; - + // Look up the texture ID in the texture id->impl map. impl_id_map::iterator iter = sViewerMediaTextureIDMap.find(texture_id); if(iter != sViewerMediaTextureIDMap.end()) @@ -534,7 +534,7 @@ LLViewerMediaImpl* LLViewerMedia::getMediaImplFromTextureID(const LLUUID& textur // static std::string LLViewerMedia::getCurrentUserAgent() { - // Don't use user-visible string to avoid + // Don't use user-visible string to avoid // punctuation and strange characters. std::string skin_name = gSavedSettings.getString("SkinCurrent"); @@ -553,7 +553,7 @@ std::string LLViewerMedia::getCurrentUserAgent() codec << LLVersionInfo::getVersion(); codec << " (" << channel << "; " << skin_name << " skin)"; LL_INFOS() << codec.str() << LL_ENDL; - + return codec.str(); } @@ -562,7 +562,7 @@ std::string LLViewerMedia::getCurrentUserAgent() void LLViewerMedia::updateBrowserUserAgent() { std::string user_agent = getCurrentUserAgent(); - + impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); @@ -651,7 +651,7 @@ void LLViewerMedia::muteListChanged() bool LLViewerMedia::isInterestingEnough(const LLVOVolume *object, const F64 &object_interest) { bool result = false; - + if (NULL == object) { result = false; @@ -667,13 +667,13 @@ bool LLViewerMedia::isInterestingEnough(const LLVOVolume *object, const F64 &obj { result = true; } - else + else { LL_DEBUGS() << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << LL_ENDL; if(object_interest >= sLowestLoadableImplInterest) result = true; } - + return result; } @@ -780,13 +780,13 @@ static LLTrace::BlockTimerStatHandle FTM_MEDIA_MISC("Misc"); void LLViewerMedia::updateMedia(void *dummy_arg) { LL_RECORD_BLOCK_TIME(FTM_MEDIA_UPDATE); - + // Enable/disable the plugin read thread LLPluginProcessParent::setUseReadThread(gSavedSettings.getBOOL("PluginUseReadThread")); - + // HACK: we always try to keep a spare running webkit plugin around to improve launch times. createSpareBrowserMediaSource(); - + sAnyMediaShowing = false; sUpdatedCookies = getCookieStore()->getChangedCookies(); if(!sUpdatedCookies.empty()) @@ -794,7 +794,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) LL_DEBUGS() << "updated cookies will be sent to all loaded plugins: " << LL_ENDL; LL_DEBUGS() << sUpdatedCookies << LL_ENDL; } - + impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); @@ -807,14 +807,14 @@ void LLViewerMedia::updateMedia(void *dummy_arg) pimpl->calculateInterest(); } } - + // Let the spare media source actually launch if(sSpareBrowserMediaSource) { LL_RECORD_BLOCK_TIME(FTM_MEDIA_SPARE_IDLE); sSpareBrowserMediaSource->idle(); } - + { LL_RECORD_BLOCK_TIME(FTM_MEDIA_SORT); // Sort the static instance list using our interest criteria @@ -824,14 +824,14 @@ void LLViewerMedia::updateMedia(void *dummy_arg) // Go through the list again and adjust according to priority. iter = sViewerMediaImplList.begin(); end = sViewerMediaImplList.end(); - + F64 total_cpu = 0.0f; int impl_count_total = 0; int impl_count_interest_low = 0; int impl_count_interest_normal = 0; - + std::vector<LLViewerMediaImpl*> proximity_order; - + bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); bool inworld_audio_enabled = gSavedSettings.getBOOL("AudioStreamingMusic"); U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal"); @@ -840,19 +840,19 @@ void LLViewerMedia::updateMedia(void *dummy_arg) F32 max_cpu = gSavedSettings.getF32("PluginInstancesCPULimit"); // Setting max_cpu to 0.0 disables CPU usage checking. bool check_cpu_usage = (max_cpu != 0.0f); - + LLViewerMediaImpl* lowest_interest_loadable = NULL; - + // Notes on tweakable params: // max_instances must be set high enough to allow the various instances used in the UI (for the help browser, search, etc.) to be loaded. // If max_normal + max_low is less than max_instances, things will tend to get unloaded instead of being set to slideshow. - + { LL_RECORD_BLOCK_TIME(FTM_MEDIA_MISC); for(; iter != end; iter++) { LLViewerMediaImpl* pimpl = *iter; - + LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL; if(pimpl->isForcedUnloaded() || (impl_count_total >= (int)max_instances)) @@ -883,7 +883,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) else { // Look at interest and CPU usage for instances that aren't in any of the above states. - + // Heuristic -- if the media texture's approximate screen area is less than 1/4 of the native area of the texture, // turn it down to low instead of normal. This may downsample for plugins that support it. bool media_is_small = false; @@ -897,7 +897,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) { media_is_small = true; } - + if(pimpl->getInterest() == 0.0f) { // This media is completely invisible, due to being outside the view frustrum or out of range. @@ -919,11 +919,11 @@ void LLViewerMedia::updateMedia(void *dummy_arg) // The next max_low inworld get turned down new_priority = LLPluginClassMedia::PRIORITY_LOW; impl_count_interest_low++; - + // Set the low priority size for downsampling to approximately the size the texture is displayed at. { F32 approximate_interest_dimension = (F32) sqrt(pimpl->getInterest()); - + pimpl->setLowPrioritySizeLimit(ll_round(approximate_interest_dimension)); } } @@ -933,18 +933,18 @@ void LLViewerMedia::updateMedia(void *dummy_arg) new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW; } } - + if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED)) { // This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest. lowest_interest_loadable = pimpl; - + impl_count_total++; } // Overrides if the window is minimized or we lost focus (taking care // not to accidentally "raise" the priority either) - if (!gViewerWindow->getActive() /* viewer window minimized? */ + if (!gViewerWindow->getActive() /* viewer window minimized? */ && new_priority > LLPluginClassMedia::PRIORITY_HIDDEN) { new_priority = LLPluginClassMedia::PRIORITY_HIDDEN; @@ -954,7 +954,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) { new_priority = LLPluginClassMedia::PRIORITY_LOW; } - + if(!inworld_media_enabled) { // If inworld media is locked out, force all inworld media to stay unloaded. @@ -972,7 +972,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) } } pimpl->setPriority(new_priority); - + if(pimpl->getUsedInUI()) { // Any impls used in the UI should not be in the proximity list. @@ -984,7 +984,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) } total_cpu += pimpl->getCPUUsage(); - + if (!pimpl->getUsedInUI() && pimpl->hasMedia()) { sAnyMediaShowing = true; @@ -1008,7 +1008,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) sLowestLoadableImplInterest = object->getPixelArea(); } } - + if(gSavedSettings.getBOOL("MediaPerformanceManagerDebug")) { // Give impls the same ordering as the priority list @@ -1017,7 +1017,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) else { LL_RECORD_BLOCK_TIME(FTM_MEDIA_SORT2); - // Use a distance-based sort for proximity values. + // Use a distance-based sort for proximity values. std::stable_sort(proximity_order.begin(), proximity_order.end(), proximity_comparitor); } @@ -1026,7 +1026,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) { proximity_order[i]->mProximity = i; } - + LL_DEBUGS("PluginPriority") << "Total reported CPU usage is " << total_cpu << LL_ENDL; } @@ -1045,11 +1045,11 @@ void LLViewerMedia::setAllMediaEnabled(bool val) // Set "tentative" autoplay first. We need to do this here or else // re-enabling won't start up the media below. gSavedSettings.setBOOL("MediaTentativeAutoPlay", val); - - // Then + + // Then impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); - + for(; iter != end; iter++) { LLViewerMediaImpl* pimpl = *iter; @@ -1058,18 +1058,18 @@ void LLViewerMedia::setAllMediaEnabled(bool val) pimpl->setDisabled(!val); } } - + // Also do Parcel Media and Parcel Audio if (val) { if (!LLViewerMedia::isParcelMediaPlaying() && LLViewerMedia::hasParcelMedia()) - { + { LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); } - + if (gSavedSettings.getBOOL("AudioStreamingMusic") && !LLViewerMedia::isParcelAudioPlaying() && - gAudiop && + gAudiop && LLViewerMedia::hasParcelAudio()) { if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying()) @@ -1142,26 +1142,26 @@ void LLViewerMedia::clearAllCookies() pimpl->mMediaSource->clear_cookies(); } } - + // Clear all cookies from the cookie store getCookieStore()->setAllCookies(""); // FIXME: this may not be sufficient, since the on-disk cookie file won't get written until some browser instance exits cleanly. // It also won't clear cookies for other accounts, or for any account if we're not logged in, and won't do anything at all if there are no webkit plugins loaded. // Until such time as we can centralize cookie storage, the following hack should cover these cases: - + // HACK: Look for cookie files in all possible places and delete them. // NOTE: this assumes knowledge of what happens inside the webkit plugin (it's what adds 'browser_profile' to the path and names the cookie file) - + // Places that cookie files can be: // <getOSUserAppDir>/browser_profile/cookies // <getOSUserAppDir>/first_last/browser_profile/cookies (note that there may be any number of these!) // <getOSUserAppDir>/first_last/plugin_cookies.txt (note that there may be any number of these!) - + std::string base_dir = gDirUtilp->getOSUserAppDir() + gDirUtilp->getDirDelimiter(); std::string target; std::string filename; - + LL_DEBUGS() << "base dir = " << base_dir << LL_ENDL; // The non-logged-in version is easy @@ -1174,7 +1174,7 @@ void LLViewerMedia::clearAllCookies() { LLFile::remove(target); } - + // the hard part: iterate over all user directories and delete the cookie file from each one LLDirIterator dir_iter(base_dir, "*_*"); while (dir_iter.next(filename)) @@ -1184,26 +1184,26 @@ void LLViewerMedia::clearAllCookies() gDirUtilp->append(target, "cookies"); LL_DEBUGS() << "target = " << target << LL_ENDL; if(LLFile::isfile(target)) - { + { LLFile::remove(target); } - + // Other accounts may have new-style cookie files too -- delete them as well target = gDirUtilp->add(base_dir, filename); gDirUtilp->append(target, PLUGIN_COOKIE_FILE_NAME); LL_DEBUGS() << "target = " << target << LL_ENDL; if(LLFile::isfile(target)) - { + { LLFile::remove(target); } } - + // If we have an OpenID cookie, re-add it to the cookie store. - setOpenIDCookie(); + setOpenIDCookie(std::string()); } - + ///////////////////////////////////////////////////////////////////////////////////////// -// static +// static void LLViewerMedia::clearAllCaches() { // Clear all plugins' caches @@ -1215,9 +1215,9 @@ void LLViewerMedia::clearAllCaches() pimpl->clearCache(); } } - + ///////////////////////////////////////////////////////////////////////////////////////// -// static +// static void LLViewerMedia::setCookiesEnabled(bool enabled) { // Set the "cookies enabled" flag for all loaded plugins @@ -1232,9 +1232,9 @@ void LLViewerMedia::setCookiesEnabled(bool enabled) } } } - + ///////////////////////////////////////////////////////////////////////////////////////// -// static +// static void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int port) { // Set the proxy config for all loaded plugins @@ -1251,7 +1251,7 @@ void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int por } ///////////////////////////////////////////////////////////////////////////////////////// -// static +// static ///////////////////////////////////////////////////////////////////////////////////////// // static LLPluginCookieStore *LLViewerMedia::getCookieStore() @@ -1260,7 +1260,7 @@ LLPluginCookieStore *LLViewerMedia::getCookieStore() { sCookieStore = new LLPluginCookieStore; } - + return sCookieStore; } @@ -1276,7 +1276,7 @@ void LLViewerMedia::loadCookieFile() LL_INFOS() << "can't get path to plugin cookie file - probably not logged in yet." << LL_ENDL; return; } - + // open the file for reading llifstream file(resolved_filename.c_str()); if (!file.is_open()) @@ -1284,11 +1284,11 @@ void LLViewerMedia::loadCookieFile() LL_WARNS() << "can't load plugin cookies from file \"" << PLUGIN_COOKIE_FILE_NAME << "\"" << LL_ENDL; return; } - + getCookieStore()->readAllCookies(file, true); file.close(); - + // send the clear_cookies message to all loaded plugins impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); @@ -1300,9 +1300,9 @@ void LLViewerMedia::loadCookieFile() pimpl->mMediaSource->clear_cookies(); } } - + // If we have an OpenID cookie, re-add it to the cookie store. - setOpenIDCookie(); + setOpenIDCookie(std::string()); } @@ -1337,23 +1337,23 @@ void LLViewerMedia::saveCookieFile() void LLViewerMedia::addCookie(const std::string &name, const std::string &value, const std::string &domain, const LLDate &expires, const std::string &path, bool secure) { std::stringstream cookie; - + cookie << name << "=" << LLPluginCookieStore::quoteString(value); - + if(expires.notNull()) { cookie << "; expires=" << expires.asRFC1123(); } - + cookie << "; domain=" << domain; cookie << "; path=" << path; - + if(secure) { cookie << "; secure"; } - + getCookieStore()->setCookies(cookie.str()); } @@ -1370,7 +1370,7 @@ void LLViewerMedia::addSessionCookie(const std::string &name, const std::string void LLViewerMedia::removeCookie(const std::string &name, const std::string &domain, const std::string &path ) { // To remove a cookie, add one with the same name, domain, and path that expires in the past. - + addCookie(name, "", domain, LLDate(LLDate::now().secondsSinceEpoch() - 1.0), path); } @@ -1388,9 +1388,34 @@ LLSD LLViewerMedia::getHeaders() return headers; } + ///////////////////////////////////////////////////////////////////////////////////////// + // static +bool LLViewerMedia::parseRawCookie(const std::string raw_cookie, std::string& name, std::string& value, std::string& path, bool& httponly, bool& secure) +{ + std::size_t name_pos = raw_cookie.find_first_of("="); + if (name_pos != std::string::npos) + { + name = raw_cookie.substr(0, name_pos); + std::size_t value_pos = raw_cookie.find_first_of(";", name_pos); + if (value_pos != std::string::npos) + { + value = raw_cookie.substr(name_pos + 1, value_pos - name_pos - 1); + path = "/"; // assume root path for now + + httponly = true; // hard coded for now + secure = true; + + return true; + } + } + + return false; +} + + ///////////////////////////////////////////////////////////////////////////////////////// // static -void LLViewerMedia::setOpenIDCookie() +void LLViewerMedia::setOpenIDCookie(const std::string& url) { if(!sOpenIDCookie.empty()) { @@ -1398,7 +1423,7 @@ void LLViewerMedia::setOpenIDCookie() // We want just the hostname for the cookie code, but LLURL doesn't seem to have a way to extract that. // We therefore do it here. std::string authority = sOpenIDURL.mAuthority; - std::string::size_type host_start = authority.find('@'); + std::string::size_type host_start = authority.find('@'); if(host_start == std::string::npos) { // no username/password @@ -1406,20 +1431,43 @@ void LLViewerMedia::setOpenIDCookie() } else { - // Hostname starts after the @. + // Hostname starts after the @. // (If the hostname part is empty, this may put host_start at the end of the string. In that case, it will end up passing through an empty hostname, which is correct.) ++host_start; } - std::string::size_type host_end = authority.rfind(':'); + std::string::size_type host_end = authority.rfind(':'); if((host_end == std::string::npos) || (host_end < host_start)) { // no port host_end = authority.size(); } - + getCookieStore()->setCookiesFromHost(sOpenIDCookie, authority.substr(host_start, host_end - host_start)); - // Do a web profile get so we can store the cookie + if (url.length()) + { + LLMediaCtrl* media_instance = LLFloaterReg::getInstance("destinations")->getChild<LLMediaCtrl>("destination_guide_contents"); + if (media_instance) + { + std::string cookie_host = authority.substr(host_start, host_end - host_start); + std::string cookie_name = ""; + std::string cookie_value = ""; + std::string cookie_path = ""; + bool httponly = true; + bool secure = true; + if (parseRawCookie(sOpenIDCookie, cookie_name, cookie_value, cookie_path, httponly, secure) && + media_instance->getMediaPlugin()) + { + media_instance->getMediaPlugin()->setCookie(url, cookie_name, cookie_value, cookie_host, cookie_path, httponly, secure); + } + } + } + + // NOTE: this is the original OpenID cookie code, so of which is no longer needed now that we + // are using CEF - it's very intertwined with other code so, for the moment, I'm going to + // leave it alone and make a task to come back to it once we're sure the CEF cookie code is robust. + + // Do a web profile get so we can store the cookie LLSD headers = LLSD::emptyMap(); headers[HTTP_OUT_HEADER_ACCEPT] = "*/*"; headers[HTTP_OUT_HEADER_COOKIE] = sOpenIDCookie; @@ -1430,7 +1478,7 @@ void LLViewerMedia::setOpenIDCookie() LL_DEBUGS("MediaAuth") << "Requesting " << profile_url << LL_ENDL; LL_DEBUGS("MediaAuth") << "sOpenIDCookie = [" << sOpenIDCookie << "]" << LL_ENDL; - LLHTTPClient::get(profile_url, + LLHTTPClient::get(profile_url, new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()), headers); } @@ -1442,12 +1490,12 @@ void LLViewerMedia::openIDSetup(const std::string &openid_url, const std::string { LL_DEBUGS("MediaAuth") << "url = \"" << openid_url << "\", token = \"" << openid_token << "\"" << LL_ENDL; - // post the token to the url + // post the token to the url // the responder will need to extract the cookie(s). // Save the OpenID URL for later -- we may need the host when adding the cookie. sOpenIDURL.init(openid_url.c_str()); - + // We shouldn't ever do this twice, but just in case this code gets repurposed later, clear existing cookies. sOpenIDCookie.clear(); @@ -1462,24 +1510,24 @@ void LLViewerMedia::openIDSetup(const std::string &openid_url, const std::string U8 *data = new U8[size]; memcpy(data, openid_token.data(), size); - LLHTTPClient::postRaw( - openid_url, - data, - size, + LLHTTPClient::postRaw( + openid_url, + data, + size, new LLViewerMediaOpenIDResponder(), headers); - + } ///////////////////////////////////////////////////////////////////////////////////////// // static -void LLViewerMedia::openIDCookieResponse(const std::string &cookie) +void LLViewerMedia::openIDCookieResponse(const std::string& url, const std::string &cookie) { LL_DEBUGS("MediaAuth") << "Cookie received: \"" << cookie << "\"" << LL_ENDL; - + sOpenIDCookie += cookie; - setOpenIDCookie(); + setOpenIDCookie(url); } ///////////////////////////////////////////////////////////////////////////////////////// @@ -1488,7 +1536,7 @@ void LLViewerMedia::proxyWindowOpened(const std::string &target, const std::stri { if(uuid.empty()) return; - + for (impl_list::iterator iter = sViewerMediaImplList.begin(); iter != sViewerMediaImplList.end(); iter++) { if((*iter)->mMediaSource && (*iter)->mMediaSource->pluginSupportsMediaBrowser()) @@ -1525,7 +1573,7 @@ void LLViewerMedia::createSpareBrowserMediaSource() if (!sSpareBrowserMediaSource && !gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")) { // The null owner will keep the browser plugin from fully initializing - // (specifically, it keeps LLPluginClassMedia from negotiating a size change, + // (specifically, it keeps LLPluginClassMedia from negotiating a size change, // which keeps MediaPluginWebkit::initBrowserWindow from doing anything until we have some necessary data, like the background color) sSpareBrowserMediaSource = LLViewerMediaImpl::newSourceFromMediaType(HTTP_CONTENT_TEXT_HTML, NULL, 0, 0); } @@ -1537,7 +1585,7 @@ LLPluginClassMedia* LLViewerMedia::getSpareBrowserMediaSource() { LLPluginClassMedia* result = sSpareBrowserMediaSource; sSpareBrowserMediaSource = NULL; - return result; + return result; }; bool LLViewerMedia::hasInWorldMedia() @@ -1626,12 +1674,12 @@ void LLViewerMedia::setOnlyAudibleMediaTextureID(const LLUUID& texture_id) ////////////////////////////////////////////////////////////////////////////////////////// // LLViewerMediaImpl ////////////////////////////////////////////////////////////////////////////////////////// -LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, - S32 media_width, - S32 media_height, - U8 media_auto_scale, +LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, + S32 media_width, + S32 media_height, + U8 media_auto_scale, U8 media_loop) -: +: mMediaSource( NULL ), mMovieImageHasMips(false), mMediaWidth(media_width), @@ -1672,7 +1720,7 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mTrustedBrowser(false), mZoomFactor(1.0), mCleanBrowser(false) -{ +{ // Set up the mute list observer if it hasn't been set up already. if(!sViewerMediaMuteListObserverInitialized) @@ -1680,11 +1728,11 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, LLMuteList::getInstance()->addObserver(&sViewerMediaMuteListObserver); sViewerMediaMuteListObserverInitialized = true; } - + add_media_impl(this); setTextureID(texture_id); - + // connect this media_impl to the media texture, creating it if it doesn't exist.0 // This is necessary because we need to be able to use getMaxVirtualSize() even if the media plugin is not loaded. LLViewerMediaTexture* media_tex = LLViewerTextureManager::getMediaTexture(mTextureId); @@ -1699,7 +1747,7 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, LLViewerMediaImpl::~LLViewerMediaImpl() { destroyMediaSource(); - + LLViewerMediaTexture::removeMediaImplFromTexture(mTextureId) ; setTextureID(); @@ -1711,7 +1759,7 @@ void LLViewerMediaImpl::emitEvent(LLPluginClassMedia* plugin, LLViewerMediaObser { // Broadcast to observers using the superclass version LLViewerMediaEventEmitter::emitEvent(plugin, event); - + // If this media is on one or more LLVOVolume objects, tell them about the event as well. std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; while(iter != mObjectList.end()) @@ -1727,7 +1775,7 @@ bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type) { bool mimeTypeChanged = (mMimeType != mime_type); bool pluginChanged = (LLMIMETypes::implType(mCurrentMimeType) != LLMIMETypes::implType(mime_type)); - + if(!mMediaSource || pluginChanged) { // We don't have a plugin at all, or the new mime type is handled by a different plugin than the old mime type. @@ -1750,7 +1798,7 @@ void LLViewerMediaImpl::createMediaSource() // This media shouldn't be created yet. return; } - + if(! mMediaURL.empty()) { navigateInternal(); @@ -1776,15 +1824,15 @@ void LLViewerMediaImpl::destroyMediaSource() { oldImage->setPlaying(FALSE) ; } - + cancelMimeTypeProbe(); - + if(mMediaSource) { mMediaSource->setDeleteOK(true) ; delete mMediaSource; mMediaSource = NULL; - } + } } ////////////////////////////////////////////////////////////////////////////////////////// @@ -1799,11 +1847,11 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ { std::string plugin_basename = LLMIMETypes::implType(media_type); LLPluginClassMedia* media_source = NULL; - + // HACK: we always try to keep a spare running webkit plugin around to improve launch times. // If a spare was already created before PluginAttachDebuggerToPlugins was set, don't use it. // Do not use a spare if launching with full viewer control (e.g. Facebook, Twitter and few others) - if ((plugin_basename == "media_plugin_webkit") && + if ((plugin_basename == "media_plugin_cef") && !gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins") && !clean_browser) { media_source = LLViewerMedia::getSpareBrowserMediaSource(); @@ -1812,7 +1860,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ media_source->setOwner(owner); media_source->setTarget(target); media_source->setSize(default_width, default_height); - + return media_source; } } @@ -1824,8 +1872,12 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ { std::string launcher_name = gDirUtilp->getLLPluginLauncher(); std::string plugin_name = gDirUtilp->getLLPluginFilename(plugin_basename); - std::string user_data_path = gDirUtilp->getOSUserAppDir(); - user_data_path += gDirUtilp->getDirDelimiter(); + + std::string user_data_path_cache = gDirUtilp->getCacheDir(false); + user_data_path_cache += gDirUtilp->getDirDelimiter(); + + std::string user_data_path_cookies = gDirUtilp->getOSUserAppDir(); + user_data_path_cookies += gDirUtilp->getDirDelimiter(); // Fix for EXT-5960 - make browser profile specific to user (cache, cookies etc.) // If the linden username returned is blank, that can only mean we are @@ -1836,8 +1888,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ if ( ! linden_user_dir.empty() ) { // gDirUtilp->getLindenUserDir() is whole path, not just Linden name - user_data_path = linden_user_dir; - user_data_path += gDirUtilp->getDirDelimiter(); + user_data_path_cookies = linden_user_dir; + user_data_path_cookies += gDirUtilp->getDirDelimiter(); }; // See if the plugin executable exists @@ -1854,7 +1906,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ { media_source = new LLPluginClassMedia(owner); media_source->setSize(default_width, default_height); - media_source->setUserDataPath(user_data_path); + media_source->setUserDataPath(user_data_path_cache, user_data_path_cookies); media_source->setLanguageCode(LLUI::getLanguage()); // collect 'cookies enabled' setting from prefs and send to embedded browser @@ -1868,12 +1920,15 @@ 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 || clean_browser); - + bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging"); media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled || clean_browser); + // need to set agent string here before instance created + media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent()); + media_source->setTarget(target); - + const std::string plugin_dir = gDirUtilp->getLLPluginDir(); if (media_source->init(launcher_name, plugin_dir, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) { @@ -1886,14 +1941,14 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ } } } - + LL_WARNS_ONCE("Plugin") << "plugin initialization failed for mime type: " << media_type << LL_ENDL; LLSD args; args["MIME_TYPE"] = media_type; LLNotificationsUtil::add("NoPlugin", args); return NULL; -} +} ////////////////////////////////////////////////////////////////////////////////////////// bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) @@ -1904,10 +1959,10 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) mMediaWidth = mMediaSource->getSetWidth(); mMediaHeight = mMediaSource->getSetHeight(); } - + // Always delete the old media impl first. destroyMediaSource(); - + // and unconditionally set the mime type mMimeType = media_type; @@ -1915,7 +1970,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) { // This impl should not be loaded at this time. LL_DEBUGS("PluginPriority") << this << "Not loading (PRIORITY_UNLOADED)" << LL_ENDL; - + return false; } @@ -1926,7 +1981,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) mCurrentMimeType = mMimeType; LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight, mTarget, mCleanBrowser); - + if (media_source) { media_source->setDisableTimeout(gSavedSettings.getBOOL("DebugPluginDisableTimeout")); @@ -1935,7 +1990,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent()); media_source->focus(mHasFocus); media_source->setBackgroundColor(mBackgroundColor); - + if(gSavedSettings.getBOOL("BrowserIgnoreSSLCertErrors")) { media_source->ignore_ssl_cert_errors(true); @@ -1943,19 +1998,19 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) // the correct way to deal with certs it to load ours from CA.pem and append them to the ones // Qt/WebKit loads from your system location. - // Note: This needs the new CA.pem file with the Equifax Secure Certificate Authority + // Note: This needs the new CA.pem file with the Equifax Secure Certificate Authority // cert at the bottom: (MIIDIDCCAomgAwIBAgIENd70zzANBg) std::string ca_path = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "CA.pem" ); media_source->addCertificateFilePath( ca_path ); media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); - + if(mClearCache) { mClearCache = false; media_source->clear_cache(); } - + // TODO: Only send cookies to plugins that need them // Ideally, the plugin should tell us whether it handles cookies or not -- either via the init response or through a separate message. // Due to the ordering of messages, it's possible we wouldn't get that information back in time to send cookies before sending a navigate message, @@ -1966,7 +2021,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) { media_source->set_cookies(all_cookies); } - + mMediaSource = media_source; mMediaSource->setDeleteOK(false) ; updateVolume(); @@ -2009,16 +2064,16 @@ void LLViewerMediaImpl::loadURI() std::string sanitized_uri = (u.query().empty() ? uri : u.scheme() + "://" + u.authority() + u.path()); LL_INFOS() << "Asking media source to load URI: " << sanitized_uri << LL_ENDL; } - + mMediaSource->loadURI( uri ); - - // A non-zero mPreviousMediaTime means that either this media was previously unloaded by the priority code while playing/paused, + + // A non-zero mPreviousMediaTime means that either this media was previously unloaded by the priority code while playing/paused, // or a seek happened before the media loaded. In either case, seek to the saved time. if(mPreviousMediaTime != 0.0f) { seek(mPreviousMediaTime); } - + if(mPreviousMediaState == MEDIA_PLAYING) { // This media was playing before this instance was unloaded. @@ -2071,11 +2126,11 @@ void LLViewerMediaImpl::play() // This may be the case where the plugin's priority is PRIORITY_UNLOADED return; } - + // Only do this if the media source was just loaded. loadURI(); } - + // always start the media start(); } @@ -2176,10 +2231,10 @@ void LLViewerMediaImpl::updateVolume() { if(mMediaSource) { - // always scale the volume by the global media volume + // always scale the volume by the global media volume F32 volume = mRequestedVolume * LLViewerMedia::getVolume(); - if (mProximityCamera > 0) + if (mProximityCamera > 0) { if (mProximityCamera > gSavedSettings.getF32("MediaRollOffMax")) { @@ -2218,7 +2273,7 @@ F32 LLViewerMediaImpl::getVolume() void LLViewerMediaImpl::focus(bool focus) { mHasFocus = focus; - + if (mMediaSource) { // call focus just for the hell of it, even though this apopears to be a nop @@ -2246,7 +2301,7 @@ std::string LLViewerMediaImpl::getCurrentMediaURL() { return mCurrentMediaURL; } - + return mMediaURL; } @@ -2314,17 +2369,17 @@ void LLViewerMediaImpl::mouseMove(S32 x, S32 y, MASK mask) } ////////////////////////////////////////////////////////////////////////////////////////// -//static +//static void LLViewerMediaImpl::scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y) { F32 texture_x = texture_coords.mV[VX]; F32 texture_y = texture_coords.mV[VY]; - + // Deal with repeating textures by wrapping the coordinates into the range [0, 1.0) texture_x = fmodf(texture_x, 1.0f); if(texture_x < 0.0f) texture_x = 1.0 + texture_x; - + texture_y = fmodf(texture_y, 1.0f); if(texture_y < 0.0f) texture_y = 1.0 + texture_y; @@ -2352,7 +2407,7 @@ void LLViewerMediaImpl::mouseDown(const LLVector2& texture_coords, MASK mask, S3 void LLViewerMediaImpl::mouseUp(const LLVector2& texture_coords, MASK mask, S32 button) { if(mMediaSource) - { + { S32 x, y; scaleTextureCoords(texture_coords, &x, &y); @@ -2363,7 +2418,7 @@ void LLViewerMediaImpl::mouseUp(const LLVector2& texture_coords, MASK mask, S32 void LLViewerMediaImpl::mouseMove(const LLVector2& texture_coords, MASK mask) { if(mMediaSource) - { + { S32 x, y; scaleTextureCoords(texture_coords, &x, &y); @@ -2371,6 +2426,17 @@ void LLViewerMediaImpl::mouseMove(const LLVector2& texture_coords, MASK mask) } } +void LLViewerMediaImpl::mouseDoubleClick(const LLVector2& texture_coords, MASK mask) +{ + if (mMediaSource) + { + S32 x, y; + scaleTextureCoords(texture_coords, &x, &y); + + mouseDoubleClick(x, y, mask); + } +} + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button) { @@ -2405,18 +2471,18 @@ void LLViewerMediaImpl::onMouseCaptureLost() } ////////////////////////////////////////////////////////////////////////////////////////// -BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask) -{ +BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask) +{ // NOTE: this is called when the mouse is released when we have capture. // Due to the way mouse coordinates are mapped to the object, we can't use the x and y coordinates that come in with the event. - + if(hasMouseCapture()) { // Release the mouse -- this will also send a mouseup to the media gFocusMgr.setMouseCapture( FALSE ); } - return TRUE; + return TRUE; } ////////////////////////////////////////////////////////////////////////////////////////// @@ -2492,14 +2558,14 @@ void LLViewerMediaImpl::updateJavascriptObject() } ////////////////////////////////////////////////////////////////////////////////////////// -const std::string& LLViewerMediaImpl::getName() const -{ +const std::string& LLViewerMediaImpl::getName() const +{ if (mMediaSource) { return mMediaSource->getMediaName(); } - - return LLStringUtil::null; + + return LLStringUtil::null; }; ////////////////////////////////////////////////////////////////////////////////////////// @@ -2555,21 +2621,21 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi // Don't carry media play state across distinct URLs. resetPreviousMediaState(); } - + // Always set the current URL and MIME type. mMediaURL = url; mMimeType = mime_type; mCleanBrowser = clean_browser; - + // Clear the current media URL, since it will no longer be correct. mCurrentMediaURL.clear(); - + // if mime type discovery was requested, we'll need to do it when the media loads mNavigateRediscoverType = rediscover_type; - + // and if this was a server request, the navigate on load will also need to be one. mNavigateServerRequest = server_request; - + // An explicit navigate resets the "failed" flag. mMediaSourceFailed = false; @@ -2585,7 +2651,7 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi // This impl should not be loaded at this time. LL_DEBUGS("PluginPriority") << this << "Not loading (PRIORITY_UNLOADED)" << LL_ENDL; - + return; } @@ -2609,13 +2675,13 @@ void LLViewerMediaImpl::navigateInternal() mNavigateSuspendedDeferred = true; return; } - + if(mMimeTypeProbe != NULL) { LL_WARNS() << "MIME type probe already in progress -- bailing out." << LL_ENDL; return; } - + if(mNavigateServerRequest) { setNavState(MEDIANAVSTATE_SERVER_SENT); @@ -2624,12 +2690,12 @@ void LLViewerMediaImpl::navigateInternal() { setNavState(MEDIANAVSTATE_NONE); } - + // If the caller has specified a non-empty MIME type, look that up in our MIME types list. // If we have a plugin for that MIME type, use that instead of attempting auto-discovery. // This helps in supporting legacy media content where the server the media resides on returns a bogus MIME type // but the parcel owner has correctly set the MIME type in the parcel media settings. - + if(!mMimeType.empty() && (mMimeType != LLMIMETypes::getDefaultMimeType())) { std::string plugin_basename = LLMIMETypes::implType(mMimeType); @@ -2698,27 +2764,47 @@ void LLViewerMediaImpl::navigateStop() bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask) { bool result = false; - + + if (mMediaSource) + { + // FIXME: THIS IS SO WRONG. + // Menu keys should be handled by the menu system and not passed to UI elements, but this is how LLTextEditor and LLLineEditor do it... + if (MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) + { + result = true; + } + + if (!result) + { + LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData(); + result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN, key, mask, native_key_data); + } + } + + return result; +} + +////////////////////////////////////////////////////////////////////////////////////////// +bool LLViewerMediaImpl::handleKeyUpHere(KEY key, MASK mask) +{ + bool result = false; + if (mMediaSource) { // FIXME: THIS IS SO WRONG. // Menu keys should be handled by the menu system and not passed to UI elements, but this is how LLTextEditor and LLLineEditor do it... - if( MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) + if (MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) { result = true; } - - if(!result) + + if (!result) { - LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData(); - - result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask, native_key_data); - // Since the viewer internal event dispatching doesn't give us key-up events, simulate one here. - (void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask, native_key_data); + result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP, key, mask, native_key_data); } } - + return result; } @@ -2726,7 +2812,7 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask) bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char) { bool result = false; - + if (mMediaSource) { // only accept 'printable' characters, sigh... @@ -2734,11 +2820,11 @@ bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char) && uni_char != 127) // SDL thinks this is 'delete' - yuck. { LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData(); - + mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE), native_key_data); } } - + return result; } @@ -2817,15 +2903,15 @@ void LLViewerMediaImpl::update() } } - + if(mMediaSource == NULL) { return; } - + // Make sure a navigate doesn't happen during the idle -- it can cause mMediaSource to get destroyed, which can cause a crash. setNavigateSuspended(true); - + mMediaSource->idle(); setNavigateSuspended(false); @@ -2834,7 +2920,7 @@ void LLViewerMediaImpl::update() { return; } - + if(mMediaSource->isPluginExited()) { resetPreviousMediaState(); @@ -2846,18 +2932,18 @@ void LLViewerMediaImpl::update() { return; } - + if(mSuspendUpdates || !mVisible) { return; } - + LLViewerMediaTexture* placeholder_image = updatePlaceholderImage(); - + if(placeholder_image) { LLRect dirty_rect; - + // Since we're updating this texture, we know it's playing. Tell the texture to do its replacement magic so it gets rendered. placeholder_image->setPlaying(TRUE); @@ -2868,7 +2954,7 @@ void LLViewerMediaImpl::update() S32 y_pos = llmax(dirty_rect.mBottom, 0); S32 width = llmin(dirty_rect.mRight, placeholder_image->getWidth()) - x_pos; S32 height = llmin(dirty_rect.mTop, placeholder_image->getHeight()) - y_pos; - + if(width > 0 && height > 0) { @@ -2881,21 +2967,21 @@ void LLViewerMediaImpl::update() // Offset the pixels pointer to match x_pos and y_pos data += ( x_pos * mMediaSource->getTextureDepth() * mMediaSource->getBitsWidth() ); data += ( y_pos * mMediaSource->getTextureDepth() ); - + { LL_RECORD_BLOCK_TIME(FTM_MEDIA_SET_SUBIMAGE); placeholder_image->setSubImage( - data, - mMediaSource->getBitsWidth(), + data, + mMediaSource->getBitsWidth(), mMediaSource->getBitsHeight(), - x_pos, - y_pos, - width, + x_pos, + y_pos, + width, height); } } - + mMediaSource->resetDirty(); } } @@ -2916,10 +3002,10 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() // The code that created this instance will read from the plugin's bits. return NULL; } - + LLViewerMediaTexture* placeholder_image = LLViewerTextureManager::getMediaTexture( mTextureId ); - - if (mNeedsNewTexture + + if (mNeedsNewTexture || placeholder_image->getUseMipMaps() || (placeholder_image->getWidth() != mMediaSource->getTextureWidth()) || (placeholder_image->getHeight() != mMediaSource->getTextureHeight()) @@ -2933,7 +3019,7 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() int texture_width = mMediaSource->getTextureWidth(); int texture_height = mMediaSource->getTextureHeight(); int texture_depth = mMediaSource->getTextureDepth(); - + // MEDIAOPT: check to see if size actually changed before doing work placeholder_image->destroyGLTexture(); // MEDIAOPT: apparently just calling setUseMipMaps(FALSE) doesn't work? @@ -2959,13 +3045,13 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() // FIXME // placeholder_image->mIsMediaTexture = true; mNeedsNewTexture = false; - - // If the amount of the texture being drawn by the media goes down in either width or height, + + // If the amount of the texture being drawn by the media goes down in either width or height, // recreate the texture to avoid leaving parts of the old image behind. mTextureUsedWidth = mMediaSource->getWidth(); mTextureUsedHeight = mMediaSource->getHeight(); } - + return placeholder_image; } @@ -2980,14 +3066,14 @@ LLUUID LLViewerMediaImpl::getMediaTextureID() const void LLViewerMediaImpl::setVisible(bool visible) { mVisible = visible; - + if(mVisible) { if(mMediaSource && mMediaSource->isPluginExited()) { destroyMediaSource(); } - + if(!mMediaSource) { createMediaSource(); @@ -3021,12 +3107,12 @@ void LLViewerMediaImpl::scaleMouse(S32 *mouse_x, S32 *mouse_y) bool LLViewerMediaImpl::isMediaTimeBased() { bool result = false; - + if(mMediaSource) { result = mMediaSource->pluginSupportsMediaTime(); } - + return result; } @@ -3034,14 +3120,14 @@ bool LLViewerMediaImpl::isMediaTimeBased() bool LLViewerMediaImpl::isMediaPlaying() { bool result = false; - + if(mMediaSource) { EMediaStatus status = mMediaSource->getStatus(); if(status == MEDIA_PLAYING || status == MEDIA_LOADING) result = true; } - + return result; } ////////////////////////////////////////////////////////////////////////////////////////// @@ -3054,7 +3140,7 @@ bool LLViewerMediaImpl::isMediaPaused() if(mMediaSource->getStatus() == MEDIA_PAUSED) result = true; } - + return result; } @@ -3082,7 +3168,7 @@ void LLViewerMediaImpl::setDisabled(bool disabled, bool forcePlayOnEnable) { // Only do this on actual state transitions. mIsDisabled = disabled; - + if(mIsDisabled) { // We just disabled this media. Clear all state. @@ -3108,13 +3194,13 @@ bool LLViewerMediaImpl::isForcedUnloaded() const { return true; } - + // If this media's class is not supposed to be shown, unload if (!shouldShowBasedOnClass()) { return true; } - + return false; } @@ -3127,19 +3213,19 @@ bool LLViewerMediaImpl::isPlayable() const // All of the forced-unloaded criteria also imply not playable. return false; } - + if(hasMedia()) { // Anything that's already playing is, by definition, playable. return true; } - + if(!mMediaURL.empty()) { // If something has navigated the instance, it's ready to be played. return true; } - + return false; } @@ -3151,7 +3237,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla { case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: { - LL_DEBUGS("Media") << "MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is: " << plugin->getClickURL() << LL_ENDL; + LL_DEBUGS("Media") << "MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is: " << plugin->getClickURL() << LL_ENDL; std::string url = plugin->getClickURL(); std::string nav_type = plugin->getClickNavType(); LLURLDispatcher::dispatch(url, nav_type, NULL, mTrustedBrowser); @@ -3170,7 +3256,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla // Reset the last known state of the media to defaults. resetPreviousMediaState(); - + // TODO: may want a different message for this case? LLSD args; args["PLUGIN"] = LLMIMETypes::implType(mCurrentMimeType); @@ -3192,13 +3278,13 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla //LLNotificationsUtil::add("MediaPluginFailed", args); } break; - + case MEDIA_EVENT_CURSOR_CHANGED: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << plugin->getCursorName() << LL_ENDL; std::string cursor = plugin->getCursorName(); - + if(cursor == "arrow") mLastSetCursor = UI_CURSOR_ARROW; else if(cursor == "ibeam") @@ -3214,6 +3300,13 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla } break; + case LLViewerMediaObserver::MEDIA_EVENT_FILE_DOWNLOAD: + { + //llinfos << "Media event - file download requested - filename is " << self->getFileDownloadFilename() << llendl; + LLNotificationsUtil::add("MediaFileDownloadUnsupported"); + } + break; + case LLViewerMediaObserver::MEDIA_EVENT_NAVIGATE_BEGIN: { LL_DEBUGS("Media") << "MEDIA_EVENT_NAVIGATE_BEGIN, uri is: " << plugin->getNavigateURI() << LL_ENDL; @@ -3259,7 +3352,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla } } break; - + case LLViewerMediaObserver::MEDIA_EVENT_LOCATION_CHANGED: { LL_DEBUGS("Media") << "MEDIA_EVENT_LOCATION_CHANGED, uri is: " << plugin->getLocation() << LL_ENDL; @@ -3296,15 +3389,15 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla { // 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; @@ -3460,7 +3553,7 @@ void LLViewerMediaImpl::calculateInterest() { LL_RECORD_BLOCK_TIME(FTM_MEDIA_CALCULATE_INTEREST); LLViewerMediaTexture* texture = LLViewerTextureManager::findMediaTexture( mTextureId ); - + if(texture != NULL) { mInterest = texture->getMaxVirtualSize(); @@ -3470,7 +3563,7 @@ void LLViewerMediaImpl::calculateInterest() // This will be a relatively common case now, since it will always be true for unloaded media. mInterest = 0.0f; } - + // Calculate distance from the avatar, for use in the proximity calculation. mProximityDistance = 0.0f; mProximityCamera = 0.0f; @@ -3480,7 +3573,7 @@ void LLViewerMediaImpl::calculateInterest() std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; LLVOVolume* objp = *iter ; llassert_always(objp != NULL) ; - + // The distance calculation is invalid for HUD attachments -- leave both mProximityDistance and mProximityCamera at 0 for them. if(!objp->isHUDAttachment()) { @@ -3493,12 +3586,12 @@ void LLViewerMediaImpl::calculateInterest() mProximityCamera = camera_delta.magVec(); } } - + if(mNeedsMuteCheck) { // Check all objects this instance is associated with, and those objects' owners, against the mute list mIsMuted = false; - + std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; for(; iter != mObjectList.end() ; ++iter) { @@ -3525,7 +3618,7 @@ void LLViewerMediaImpl::calculateInterest() } } } - + mNeedsMuteCheck = false; } } @@ -3533,7 +3626,7 @@ void LLViewerMediaImpl::calculateInterest() F64 LLViewerMediaImpl::getApproximateTextureInterest() { F64 result = 0.0f; - + if(mMediaSource) { result = mMediaSource->getFullWidth(); @@ -3551,8 +3644,8 @@ F64 LLViewerMediaImpl::getApproximateTextureInterest() void LLViewerMediaImpl::setUsedInUI(bool used_in_ui) { - mUsedInUI = used_in_ui; - + mUsedInUI = used_in_ui; + // HACK: Force elements used in UI to load right away. // This fixes some issues where UI code that uses the browser instance doesn't expect it to be unloaded. if(mUsedInUI && (mPriority == LLPluginClassMedia::PRIORITY_UNLOADED)) @@ -3572,7 +3665,7 @@ void LLViewerMediaImpl::setUsedInUI(bool used_in_ui) void LLViewerMediaImpl::setBackgroundColor(LLColor4 color) { - mBackgroundColor = color; + mBackgroundColor = color; if(mMediaSource) { @@ -3583,12 +3676,12 @@ void LLViewerMediaImpl::setBackgroundColor(LLColor4 color) F64 LLViewerMediaImpl::getCPUUsage() const { F64 result = 0.0f; - + if(mMediaSource) { result = mMediaSource->getCPUUsage(); } - + return result; } @@ -3602,19 +3695,19 @@ void LLViewerMediaImpl::setPriority(LLPluginClassMedia::EPriority priority) << " to " << LLPluginClassMedia::priorityToString(priority) << LL_ENDL; } - + mPriority = priority; - + if(priority == LLPluginClassMedia::PRIORITY_UNLOADED) { if(mMediaSource) { // Need to unload the media source - + // First, save off previous media state mPreviousMediaState = mMediaSource->getStatus(); mPreviousMediaTime = mMediaSource->getCurrentTime(); - + destroyMediaSource(); } } @@ -3623,7 +3716,7 @@ void LLViewerMediaImpl::setPriority(LLPluginClassMedia::EPriority priority) { mMediaSource->setPriority(mPriority); } - + // NOTE: loading (or reloading) media sources whose priority has risen above PRIORITY_UNLOADED is done in update(). } @@ -3638,8 +3731,8 @@ void LLViewerMediaImpl::setLowPrioritySizeLimit(int size) void LLViewerMediaImpl::setNavState(EMediaNavState state) { mMediaNavState = state; - - switch (state) + + switch (state) { case MEDIANAVSTATE_NONE: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_NONE" << LL_ENDL; break; case MEDIANAVSTATE_BEGUN: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_BEGUN" << LL_ENDL; break; @@ -3678,7 +3771,7 @@ void LLViewerMediaImpl::cancelMimeTypeProbe() // There doesn't seem to be a way to actually cancel an outstanding request. // Simulate it by telling the LLMimeDiscoveryResponder not to write back any results. mMimeTypeProbe->cancelRequest(); - + // The above should already have set mMimeTypeProbe to NULL. if(mMimeTypeProbe != NULL) { @@ -3687,7 +3780,7 @@ void LLViewerMediaImpl::cancelMimeTypeProbe() } } -void LLViewerMediaImpl::addObject(LLVOVolume* obj) +void LLViewerMediaImpl::addObject(LLVOVolume* obj) { std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; for(; iter != mObjectList.end() ; ++iter) @@ -3701,14 +3794,14 @@ void LLViewerMediaImpl::addObject(LLVOVolume* obj) mObjectList.push_back(obj) ; mNeedsMuteCheck = true; } - -void LLViewerMediaImpl::removeObject(LLVOVolume* obj) + +void LLViewerMediaImpl::removeObject(LLVOVolume* obj) { - mObjectList.remove(obj) ; + mObjectList.remove(obj) ; mNeedsMuteCheck = true; } - -const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const + +const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const { return &mObjectList ; } @@ -3716,13 +3809,13 @@ const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const LLVOVolume *LLViewerMediaImpl::getSomeObject() { LLVOVolume *result = NULL; - + std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; if(iter != mObjectList.end()) { result = *iter; } - + return result; } @@ -3735,12 +3828,12 @@ void LLViewerMediaImpl::setTextureID(LLUUID id) // Remove this item's entry from the map sViewerMediaTextureIDMap.erase(mTextureId); } - + if(id.notNull()) { sViewerMediaTextureIDMap.insert(LLViewerMedia::impl_id_map::value_type(id, this)); } - + mTextureId = id; } } @@ -3749,7 +3842,7 @@ void LLViewerMediaImpl::setTextureID(LLUUID id) // bool LLViewerMediaImpl::isAutoPlayable() const { - return (mMediaAutoPlay && + return (mMediaAutoPlay && gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && gSavedSettings.getBOOL("MediaTentativeAutoPlay")); } @@ -3760,20 +3853,20 @@ bool LLViewerMediaImpl::shouldShowBasedOnClass() const { // If this is parcel media or in the UI, return true always if (getUsedInUI() || isParcelMedia()) return true; - + bool attached_to_another_avatar = isAttachedToAnotherAvatar(); bool inside_parcel = isInAgentParcel(); - + // LL_INFOS() << " hasFocus = " << hasFocus() << // " others = " << (attached_to_another_avatar && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING)) << // " within = " << (inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING)) << // " outside = " << (!inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING)) << LL_ENDL; - + // If it has focus, we should show it // This is incorrect, and causes EXT-6750 (disabled attachment media still plays) // if (hasFocus()) // return true; - + // If it is attached to an avatar and the pref is off, we shouldn't show it if (attached_to_another_avatar) { @@ -3786,7 +3879,7 @@ bool LLViewerMediaImpl::shouldShowBasedOnClass() const return show_media_within_parcel; } - else + else { static LLCachedControl<bool> show_media_outside_parcel(gSavedSettings, LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING, true); @@ -3799,7 +3892,7 @@ bool LLViewerMediaImpl::shouldShowBasedOnClass() const bool LLViewerMediaImpl::isAttachedToAnotherAvatar() const { bool result = false; - + std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin(); std::list< LLVOVolume* >::const_iterator end = mObjectList.end(); for ( ; iter != end; iter++) @@ -3843,7 +3936,7 @@ bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj) bool LLViewerMediaImpl::isInAgentParcel() const { bool result = false; - + std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin(); std::list< LLVOVolume* >::const_iterator end = mObjectList.end(); for ( ; iter != end; iter++) diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 6803adfaa2..ede408dd0c 100755..100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -150,7 +150,7 @@ public: static void removeCookie(const std::string &name, const std::string &domain, const std::string &path = std::string("/") ); static void openIDSetup(const std::string &openid_url, const std::string &openid_token); - static void openIDCookieResponse(const std::string &cookie); + static void openIDCookieResponse(const std::string& url, const std::string &cookie); static void proxyWindowOpened(const std::string &target, const std::string &uuid); static void proxyWindowClosed(const std::string &uuid); @@ -163,7 +163,8 @@ public: static LLSD getHeaders(); private: - static void setOpenIDCookie(); + static bool parseRawCookie(const std::string raw_cookie, std::string& name, std::string& value, std::string& path, bool& httponly, bool& secure); + static void setOpenIDCookie(const std::string& url); static void onTeleportFinished(); static LLPluginCookieStore *sCookieStore; @@ -225,7 +226,8 @@ public: void mouseDown(const LLVector2& texture_coords, MASK mask, S32 button = 0); void mouseUp(const LLVector2& texture_coords, MASK mask, S32 button = 0); void mouseMove(const LLVector2& texture_coords, MASK mask); - void mouseDoubleClick(S32 x,S32 y, MASK mask, S32 button = 0); + void mouseDoubleClick(const LLVector2& texture_coords, MASK mask); + void mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button = 0); void scrollWheel(S32 x, S32 y, MASK mask); void mouseCapture(); @@ -238,6 +240,7 @@ public: void navigateInternal(); void navigateStop(); bool handleKeyHere(KEY key, MASK mask); + bool handleKeyUpHere(KEY key, MASK mask); bool handleUnicodeCharHere(llwchar uni_char); bool canNavigateForward(); bool canNavigateBack(); @@ -248,6 +251,7 @@ public: void setHomeURL(const std::string& home_url, const std::string& mime_type = LLStringUtil::null) { mHomeURL = home_url; mHomeMimeType = mime_type;}; void clearCache(); void setPageZoomFactor( double factor ); + double getPageZoomFactor() {return mZoomFactor;} std::string getMimeType() { return mMimeType; } void scaleMouse(S32 *mouse_x, S32 *mouse_y); void scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y); diff --git a/indra/newview/llviewermedia_streamingaudio.cpp b/indra/newview/llviewermedia_streamingaudio.cpp index c107e8472c..c107e8472c 100755..100644 --- a/indra/newview/llviewermedia_streamingaudio.cpp +++ b/indra/newview/llviewermedia_streamingaudio.cpp diff --git a/indra/newview/llviewermedia_streamingaudio.h b/indra/newview/llviewermedia_streamingaudio.h index 1e7f771e17..1e7f771e17 100755..100644 --- a/indra/newview/llviewermedia_streamingaudio.h +++ b/indra/newview/llviewermedia_streamingaudio.h diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index aa019dfdd8..7b4df3d3da 100755..100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -352,6 +352,18 @@ BOOL LLViewerMediaFocus::handleKey(KEY key, MASK mask, BOOL called_from_parent) return true; } +BOOL LLViewerMediaFocus::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) +{ + LLViewerMediaImpl* media_impl = getFocusedMediaImpl(); + if (media_impl) + { + media_impl->handleKeyUpHere(key, mask); + } + return true; +} + + + BOOL LLViewerMediaFocus::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent) { LLViewerMediaImpl* media_impl = getFocusedMediaImpl(); @@ -603,3 +615,13 @@ LLUUID LLViewerMediaFocus::getControlsMediaID() return LLUUID::null; } + +bool LLViewerMediaFocus::wantsKeyUpKeyDown() const +{ + return true; +} + +bool LLViewerMediaFocus::wantsReturnKey() const +{ + return true; +} diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index f03dd8751e..0b2a64868e 100755..100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -56,6 +56,7 @@ public: /*virtual*/ bool getFocus(); /*virtual*/ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + /*virtual*/ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent); /*virtual*/ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); @@ -87,6 +88,10 @@ public: // Return the ID of the media instance the controls are currently attached to (either focus or hover). LLUUID getControlsMediaID(); + // The MoaP object wants keyup and keydown events. Overridden to return true. + virtual bool wantsKeyUpKeyDown() const; + virtual bool wantsReturnKey() const; + protected: /*virtual*/ void onFocusReceived(); /*virtual*/ void onFocusLost(); diff --git a/indra/newview/llviewermediaobserver.h b/indra/newview/llviewermediaobserver.h index 5dab7e399e..5dab7e399e 100755..100644 --- a/indra/newview/llviewermediaobserver.h +++ b/indra/newview/llviewermediaobserver.h diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 3b0adcf7f4..de219edcff 100755..100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -57,6 +57,7 @@ #include "llfacebookconnect.h" #include "llfilepicker.h" #include "llfirstuse.h" +#include "llfloaterabout.h" #include "llfloaterbuy.h" #include "llfloaterbuycontents.h" #include "llbuycurrencyhtml.h" @@ -88,6 +89,7 @@ #include "llinventoryfunctions.h" #include "llpanellogin.h" #include "llpanelblockedlist.h" +#include "llmarketplacefunctions.h" #include "llmenuoptionpathfindingrebakenavmesh.h" #include "llmoveview.h" #include "llparcel.h" @@ -98,6 +100,7 @@ #include "llspellcheckmenuhandler.h" #include "llstatusbar.h" #include "lltextureview.h" +#include "lltoolbarview.h" #include "lltoolcomp.h" #include "lltoolmgr.h" #include "lltoolpie.h" @@ -386,6 +389,66 @@ void set_underclothes_menu_options() } } +void set_merchant_SLM_menu() +{ + // DD-170 : SLM Alpha and Beta program : for the moment, we always show the SLM menu and + // tools so that all merchants can try out the UI, even if not migrated. + // *TODO : Keep SLM UI hidden for non migrated merchant in released viewer + + //if (LLMarketplaceData::instance().getSLMStatus() == MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT) + //{ + // Merchant not migrated: show only the old Merchant Outbox menu + // gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(TRUE); + //} + //else + //{ + // All other cases (new merchant, not merchant, migrated merchant): show the new Marketplace Listings menu and enable the tool + gMenuHolder->getChild<LLView>("MarketplaceListings")->setVisible(TRUE); + LLCommand* command = LLCommandManager::instance().getCommand("marketplacelistings"); + gToolBarView->enableCommand(command->id(), true); + //} +} + +void set_merchant_outbox_menu(U32 status, const LLSD& content) +{ + // If the merchant is fully migrated, the API is disabled (503) and we won't show the old menu item. + // In all other cases, we show it. + if (status != MarketplaceErrorCodes::IMPORT_SERVER_API_DISABLED) + { + gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(TRUE); + } +} + +void check_merchant_status() +{ + if (!gSavedSettings.getBOOL("InventoryOutboxDisplayBoth")) + { + // Reset the SLM status: we actually want to check again, that's the point of calling check_merchant_status() + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED); + + // Hide SLM related menu item + gMenuHolder->getChild<LLView>("MarketplaceListings")->setVisible(FALSE); + + // Also disable the toolbar button for Marketplace Listings + LLCommand* command = LLCommandManager::instance().getCommand("marketplacelistings"); + gToolBarView->enableCommand(command->id(), false); + + // Launch an SLM test connection to get the merchant status + LLMarketplaceData::instance().initializeSLM(boost::bind(&set_merchant_SLM_menu)); + + // Do the Merchant Outbox init only once per session + if (LLMarketplaceInventoryImporter::instance().getMarketPlaceStatus() == MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED) + { + // Hide merchant outbox related menu item + gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(FALSE); + + // Launch a Merchant Outbox test connection to get the migration status + LLMarketplaceInventoryImporter::instance().setStatusReportCallback(boost::bind(&set_merchant_outbox_menu,_1, _2)); + LLMarketplaceInventoryImporter::instance().initialize(); + } + } +} + void init_menus() { // Initialize actions @@ -1182,9 +1245,24 @@ class LLAdvancedToggleWireframe : public view_listener_t bool handleEvent(const LLSD& userdata) { gUseWireframe = !(gUseWireframe); + + if (gUseWireframe) + { + gInitialDeferredModeForWireframe = LLPipeline::sRenderDeferred; + } + gWindowResized = TRUE; LLPipeline::updateRenderDeferred(); gPipeline.resetVertexBuffers(); + + if (!gUseWireframe && !gInitialDeferredModeForWireframe && LLPipeline::sRenderDeferred != gInitialDeferredModeForWireframe && gPipeline.isInit()) + { + LLPipeline::refreshCachedSettings(); + gPipeline.releaseGLBuffers(); + gPipeline.createGLBuffers(); + LLViewerShaderMgr::instance()->setShaders(); + } + return true; } }; @@ -2077,6 +2155,22 @@ class LLAdvancedCheckShowObjectUpdates : public view_listener_t +/////////////////////// +// CHECK FOR UPDATES // +/////////////////////// + + + +class LLAdvancedCheckViewerUpdates : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLFloaterAboutUtil::checkUpdatesAndNotify(); + return true; + } +}; + + //////////////////// // COMPRESS IMAGE // //////////////////// @@ -2695,6 +2789,7 @@ void handle_object_edit() if (gAgentCamera.getFocusOnAvatar() && !LLToolMgr::getInstance()->inEdit()) { + LLFloaterTools::sPreviousFocusOnAvatar = true; LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); if (selection->getSelectType() == SELECT_TYPE_HUD || !gSavedSettings.getBOOL("EditCameraMovement")) @@ -6632,7 +6727,7 @@ class LLAttachmentDetachFromPoint : public view_listener_t LLViewerObject *attached_object = (*iter); ids_to_remove.push_back(attached_object->getAttachmentItemID()); } - } + } if (!ids_to_remove.empty()) { LLAppearanceMgr::instance().removeItemsFromAvatar(ids_to_remove); @@ -7077,11 +7172,10 @@ void handle_selected_texture_info(void*) { msg.append( llformat("%d ", (S32)(it->second[i]))); } - - LLSD args; - args["MESSAGE"] = msg; - LLNotificationsUtil::add("SystemMessage", args); } + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); } } @@ -8857,6 +8951,7 @@ void initialize_menus() // Advanced (toplevel) view_listener_t::addMenu(new LLAdvancedToggleShowObjectUpdates(), "Advanced.ToggleShowObjectUpdates"); view_listener_t::addMenu(new LLAdvancedCheckShowObjectUpdates(), "Advanced.CheckShowObjectUpdates"); + view_listener_t::addMenu(new LLAdvancedCheckViewerUpdates(), "Advanced.CheckViewerUpdates"); view_listener_t::addMenu(new LLAdvancedCompressImage(), "Advanced.CompressImage"); view_listener_t::addMenu(new LLAdvancedShowDebugSettings(), "Advanced.ShowDebugSettings"); view_listener_t::addMenu(new LLAdvancedEnableViewAdminOptions(), "Advanced.EnableViewAdminOptions"); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 7f09fc2d8f..b7bdf00157 100755..100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -83,6 +83,7 @@ BOOL enable_god_full(void* user_data); BOOL enable_god_liaison(void* user_data); BOOL enable_god_basic(void* user_data); void set_underclothes_menu_options(); +void check_merchant_status(); void exchange_callingcard(const LLUUID& dest_id); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index f8e50ba463..f8e50ba463 100755..100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h index 3034d00b22..3034d00b22 100755..100644 --- a/indra/newview/llviewermenufile.h +++ b/indra/newview/llviewermenufile.h diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d440c33a0b..b2a0fa3634 100755..100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -56,6 +56,7 @@ #include "llcallingcard.h" #include "llbuycurrencyhtml.h" #include "llfirstuse.h" +#include "llfloaterbump.h" #include "llfloaterbuyland.h" #include "llfloaterland.h" #include "llfloaterregioninfo.h" @@ -70,6 +71,7 @@ #include "llinventoryobserver.h" #include "llinventorypanel.h" #include "llfloaterimnearbychat.h" +#include "llmarketplacefunctions.h" #include "llnotifications.h" #include "llnotificationsutil.h" #include "llpanelgrouplandmoney.h" @@ -118,6 +120,7 @@ #include <boost/foreach.hpp> #include "llnotificationmanager.h" // +#include "llexperiencecache.h" #if LL_MSVC // disable boost::lexical_cast warning @@ -143,6 +146,7 @@ extern bool gShiftFrame; bool check_offer_throttle(const std::string& from_name, bool check_only); bool check_asset_previewable(const LLAssetType::EType asset_type); static void process_money_balance_reply_extended(LLMessageSystem* msg); +bool handle_trusted_experiences_notification(const LLSD&); //inventory offer throttle globals LLFrameTimer gThrottleTimer; @@ -2306,7 +2310,8 @@ static void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::s LLNotificationsUtil::add("GodMessage", args); // Treat like a system message and put in chat history. - chat.mText = av_name.getCompleteName() + ": " + message; + chat.mSourceType = CHAT_SOURCE_SYSTEM; + chat.mText = message; LLFloaterIMNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat"); if (nearby_chat) @@ -2638,6 +2643,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["sender_name"] = name; payload["group_id"] = group_id; payload["inventory_name"] = item_name; + payload["received_time"] = LLDate::now(); if(info && info->asLLSD()) { payload["inventory_offer"] = info->asLLSD(); @@ -2664,6 +2670,13 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; case IM_GROUP_INVITATION: { + if (!is_muted) + { + // group is not blocked, but we still need to check agent that sent the invitation + // and we have no agent's id + // Note: server sends username "first.last". + is_muted |= LLMuteList::getInstance()->isMuted(name); + } if (is_do_not_disturb || is_muted) { send_do_not_disturb_message(msg, from_id); @@ -2810,6 +2823,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_FROM_TASK: { + if (is_do_not_disturb && !is_owned_by_me) { return; @@ -2893,17 +2907,13 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["from_id"] = from_id; payload["slurl"] = location; payload["name"] = name; - std::string session_name; + if (from_group) { payload["group_owned"] = "true"; } - LLNotification::Params params("ServerObjectMessage"); - params.substitutions = substitutions; - params.payload = payload; - - LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, from_group); + LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload); } break; @@ -3558,6 +3568,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT && LLMuteList::getInstance()->isLinden(from_name); + if (is_muted && (chat.mSourceType == CHAT_SOURCE_OBJECT)) + { + return; + } + BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible); chatter = gObjectList.findObject(from_id); if (chatter) @@ -3734,11 +3749,15 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) } } - LLSD msg_notify = LLSD(LLSD::emptyMap()); - msg_notify["session_id"] = LLUUID(); - msg_notify["from_id"] = chat.mFromID; - msg_notify["source_type"] = chat.mSourceType; - on_new_message(msg_notify); + if (mesg != "") + { + LLSD msg_notify = LLSD(LLSD::emptyMap()); + msg_notify["session_id"] = LLUUID(); + msg_notify["from_id"] = chat.mFromID; + msg_notify["source_type"] = chat.mSourceType; + on_new_message(msg_notify); + } + } } @@ -5580,6 +5599,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) } } final_args["MESSAGE"] = message; + payload["dest_id"] = dest_id; notification = success ? "PaymentSent" : "PaymentFailure"; } else { @@ -5654,164 +5674,192 @@ bool handle_prompt_for_maturity_level_change_and_reteleport_callback(const LLSD& // some of the server notifications need special handling. This is where we do that. bool handle_special_notification(std::string notificationID, LLSD& llsdBlock) { - U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger()); - std::string regionMaturity = LLViewerRegion::accessToString(regionAccess); - LLStringUtil::toLower(regionMaturity); - llsdBlock["REGIONMATURITY"] = regionMaturity; bool returnValue = false; - LLNotificationPtr maturityLevelNotification; - std::string notifySuffix = "_Notify"; - if (regionAccess == SIM_ACCESS_MATURE) - { - if (gAgent.isTeen()) + if(llsdBlock.has("_region_access")) + { + U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger()); + std::string regionMaturity = LLViewerRegion::accessToString(regionAccess); + LLStringUtil::toLower(regionMaturity); + llsdBlock["REGIONMATURITY"] = regionMaturity; + LLNotificationPtr maturityLevelNotification; + std::string notifySuffix = "_Notify"; + if (regionAccess == SIM_ACCESS_MATURE) { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; + if (gAgent.isTeen()) + { + gAgent.clearTeleportRequest(); + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); + returnValue = true; - notifySuffix = "_NotifyAdultsOnly"; + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG()) + { + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } + else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0) + { + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock); + returnValue = true; + } } - else if (gAgent.prefersPG()) + else if (regionAccess == SIM_ACCESS_ADULT) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; + if (!gAgent.isAdult()) + { + gAgent.clearTeleportRequest(); + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); + returnValue = true; + + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG() || gAgent.prefersMature()) + { + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } + else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0) + { + maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock); + returnValue = true; + } } - else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0) + + if ((maturityLevelNotification == NULL) || maturityLevelNotification->isIgnored()) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock); - returnValue = true; + // Given a simple notification if no maturityLevelNotification is set or it is ignore + LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock); } } - else if (regionAccess == SIM_ACCESS_ADULT) + + return returnValue; +} + +bool handle_trusted_experiences_notification(const LLSD& llsdBlock) +{ + if(llsdBlock.has("trusted_experiences")) { - if (!gAgent.isAdult()) - { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; - - notifySuffix = "_NotifyAdultsOnly"; - } - else if (gAgent.prefersPG() || gAgent.prefersMature()) + std::ostringstream str; + const LLSD& experiences = llsdBlock["trusted_experiences"]; + LLSD::array_const_iterator it = experiences.beginArray(); + for(/**/; it != experiences.endArray(); ++it) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; + str<<LLSLURL("experience", it->asUUID(), "profile").getSLURLString() << "\n"; } - else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0) + std::string str_list = str.str(); + if(!str_list.empty()) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock); - returnValue = true; + LLNotificationsUtil::add("TrustedExperiencesAvailable", LLSD::emptyMap().with("EXPERIENCE_LIST", (LLSD)str_list)); + return true; } } - - if ((maturityLevelNotification == NULL) || maturityLevelNotification->isIgnored()) - { - // Given a simple notification if no maturityLevelNotification is set or it is ignore - LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock); - } - - return returnValue; + return false; } // some of the server notifications need special handling. This is where we do that. bool handle_teleport_access_blocked(LLSD& llsdBlock, const std::string & notificationID, const std::string & defaultMessage) { - U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger()); - std::string regionMaturity = LLViewerRegion::accessToString(regionAccess); - LLStringUtil::toLower(regionMaturity); - llsdBlock["REGIONMATURITY"] = regionMaturity; - bool returnValue = false; - LLNotificationPtr tp_failure_notification; - std::string notifySuffix; - - if (notificationID == std::string("TeleportEntryAccessBlocked")) + if(llsdBlock.has("_region_access")) { - notifySuffix = "_Notify"; - if (regionAccess == SIM_ACCESS_MATURE) - { - if (gAgent.isTeen()) - { - gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; + U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger()); + std::string regionMaturity = LLViewerRegion::accessToString(regionAccess); + LLStringUtil::toLower(regionMaturity); + llsdBlock["REGIONMATURITY"] = regionMaturity; - notifySuffix = "_NotifyAdultsOnly"; - } - else if (gAgent.prefersPG()) + LLNotificationPtr tp_failure_notification; + std::string notifySuffix; + + if (notificationID == std::string("TeleportEntryAccessBlocked")) + { + notifySuffix = "_Notify"; + if (regionAccess == SIM_ACCESS_MATURE) { - if (gAgent.hasRestartableFailedTeleportRequest()) + if (gAgent.isTeen()) { - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); returnValue = true; + + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG()) + { + if (gAgent.hasRestartableFailedTeleportRequest()) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + returnValue = true; + } + else + { + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } } else { gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); returnValue = true; } } - else - { - gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; - } - } - else if (regionAccess == SIM_ACCESS_ADULT) - { - if (!gAgent.isAdult()) - { - gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; - - notifySuffix = "_NotifyAdultsOnly"; - } - else if (gAgent.prefersPG() || gAgent.prefersMature()) + else if (regionAccess == SIM_ACCESS_ADULT) { - if (gAgent.hasRestartableFailedTeleportRequest()) + if (!gAgent.isAdult()) { - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); returnValue = true; + + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG() || gAgent.prefersMature()) + { + if (gAgent.hasRestartableFailedTeleportRequest()) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + returnValue = true; + } + else + { + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } } else { gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); returnValue = true; } } + } // End of special handling for "TeleportEntryAccessBlocked" + else + { // Normal case, no message munging + gAgent.clearTeleportRequest(); + if (LLNotifications::getInstance()->templateExists(notificationID)) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID, llsdBlock, llsdBlock); + } else { - gAgent.clearTeleportRequest(); - tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; + llsdBlock["MESSAGE"] = defaultMessage; + tp_failure_notification = LLNotificationsUtil::add("GenericAlertOK", llsdBlock); } - } - } // End of special handling for "TeleportEntryAccessBlocked" - else - { // Normal case, no message munging - gAgent.clearTeleportRequest(); - if (LLNotifications::getInstance()->templateExists(notificationID)) - { - tp_failure_notification = LLNotificationsUtil::add(notificationID, llsdBlock, llsdBlock); + returnValue = true; } - else + + if ((tp_failure_notification == NULL) || tp_failure_notification->isIgnored()) { - llsdBlock["MESSAGE"] = defaultMessage; - tp_failure_notification = LLNotificationsUtil::add("GenericAlertOK", llsdBlock); + // Given a simple notification if no tp_failure_notification is set or it is ignore + LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock); } - returnValue = true; - } - - if ((tp_failure_notification == NULL) || tp_failure_notification->isIgnored()) - { - // Given a simple notification if no tp_failure_notification is set or it is ignore - LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock); } + handle_trusted_experiences_notification(llsdBlock); return returnValue; } @@ -5840,6 +5888,9 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) LL_WARNS() << "attempt_standard_notification: Attempted to read notification parameter data into LLSD but failed:" << llsdRaw << LL_ENDL; } } + + + handle_trusted_experiences_notification(llsdBlock); if ( (notificationID == "RegionEntryAccessBlocked") || @@ -5921,7 +5972,25 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) make_ui_sound("UISndRestart"); } - + + // Special Marketplace update notification + if (notificationID == "SLM_UPDATE_FOLDER") + { + std::string state = llsdBlock["state"].asString(); + if (state == "deleted") + { + // Perform the deletion viewer side, no alert shown in this case + LLMarketplaceData::instance().deleteListing(llsdBlock["listing_id"].asInteger()); + return true; + } + else + { + // In general, no message will be displayed, all we want is to get the listing updated in the marketplace floater + // If getListing() fails though, the message of the alert will be shown by the caller of attempt_standard_notification() + return LLMarketplaceData::instance().getListing(llsdBlock["listing_id"].asInteger()); + } + } + LLNotificationsUtil::add(notificationID, llsdBlock); return true; } @@ -6024,8 +6093,8 @@ void process_alert_core(const std::string& message, BOOL modal) std::string alert_name(message.substr(ALERT_PREFIX.length())); if (!handle_special_alerts(alert_name)) { - LLNotificationsUtil::add(alert_name); - } + LLNotificationsUtil::add(alert_name); + } } else if (message.find(NOTIFY_PREFIX) == 0) { @@ -6047,10 +6116,10 @@ void process_alert_core(const std::string& message, BOOL modal) LLFloaterRegionRestarting::close(); } - std::string new_msg =LLNotifications::instance().getGlobalString(text); - args["MESSAGE"] = new_msg; - LLNotificationsUtil::add("SystemMessage", args); - } + std::string new_msg =LLNotifications::instance().getGlobalString(text); + args["MESSAGE"] = new_msg; + LLNotificationsUtil::add("SystemMessage", args); + } else if (modal) { LLSD args; @@ -6159,6 +6228,11 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use gCacheName->get(perp, false, boost::bind(&mean_name_callback, _1, _2, _3)); } } + LLFloaterBump* bumps_floater = LLFloaterBump::getInstance(); + if(bumps_floater && bumps_floater->isInVisibleChain()) + { + bumps_floater->populateCollisionList(); + } } void process_frozen_message(LLMessageSystem *msgsystem, void **user_data) @@ -6306,6 +6380,12 @@ bool script_question_cb(const LLSD& notification, const LLSD& response) return false; } + LLUUID experience; + if(notification["payload"].has("experience")) + { + experience = notification["payload"]["experience"].asUUID(); + } + // check whether permissions were granted or denied BOOL allowed = TRUE; // the "yes/accept" button is the first button in the template, making it button 0 @@ -6315,6 +6395,16 @@ bool script_question_cb(const LLSD& notification, const LLSD& response) new_questions = 0; allowed = FALSE; } + else if(experience.notNull()) + { + LLSD permission; + LLSD data; + permission["permission"]="Allow"; + + data[experience.asString()]=permission; + data["experience"]=experience; + LLEventPumps::instance().obtain("experience_permission").post(data); + } LLUUID task_id = notification["payload"]["task_id"].asUUID(); LLUUID item_id = notification["payload"]["item_id"].asUUID(); @@ -6341,7 +6431,27 @@ bool script_question_cb(const LLSD& notification, const LLSD& response) { script_question_mute(task_id,notification["payload"]["object_name"].asString()); } + if ( response["BlockExperience"] ) + { + if(experience.notNull()) + { + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + return false; + std::string lookup_url=region->getCapability("ExperiencePreferences"); + if(lookup_url.empty()) + return false; + LLSD permission; + LLSD data; + permission["permission"]="Block"; + + data[experience.asString()]=permission; + LLHTTPClient::put(lookup_url, data, NULL); + data["experience"]=experience; + LLEventPumps::instance().obtain("experience_permission").post(data); + } +} return false; } @@ -6374,8 +6484,24 @@ void script_question_mute(const LLUUID& task_id, const std::string& object_name) static LLNotificationFunctorRegistration script_question_cb_reg_1("ScriptQuestion", script_question_cb); static LLNotificationFunctorRegistration script_question_cb_reg_2("ScriptQuestionCaution", script_question_cb); +static LLNotificationFunctorRegistration script_question_cb_reg_3("ScriptQuestionExperience", script_question_cb); static LLNotificationFunctorRegistration unknown_script_question_cb_reg("UnknownScriptQuestion", unknown_script_question_cb); +void process_script_experience_details(const LLSD& experience_details, LLSD args, LLSD payload) +{ + if(experience_details[LLExperienceCache::PROPERTIES].asInteger() & LLExperienceCache::PROPERTY_GRID) + { + args["GRID_WIDE"] = LLTrans::getString("Grid-Scope"); + } + else + { + args["GRID_WIDE"] = LLTrans::getString("Land-Scope"); + } + args["EXPERIENCE"] = LLSLURL("experience", experience_details[LLExperienceCache::EXPERIENCE_ID].asUUID(), "profile").getSLURLString(); + + LLNotificationsUtil::add("ScriptQuestionExperience", args, payload); +} + void process_script_question(LLMessageSystem *msg, void **user_data) { // *TODO: Translate owner name -> [FIRST] [LAST] @@ -6387,6 +6513,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data) S32 questions; std::string object_name; std::string owner_name; + LLUUID experienceid; // taskid -> object key of object requesting permissions msg->getUUIDFast(_PREHASH_Data, _PREHASH_TaskID, taskid ); @@ -6396,6 +6523,11 @@ void process_script_question(LLMessageSystem *msg, void **user_data) msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, owner_name); msg->getS32Fast(_PREHASH_Data, _PREHASH_Questions, questions ); + if(msg->has(_PREHASH_Experience)) + { + msg->getUUIDFast(_PREHASH_Experience, _PREHASH_ExperienceID, experienceid); + } + // Special case. If the objects are owned by this agent, throttle per-object instead // of per-owner. It's common for residents to reset a ton of scripts that re-request // permissions, as with tier boxes. UUIDs can't be valid agent names and vice-versa, @@ -6482,20 +6614,21 @@ void process_script_question(LLMessageSystem *msg, void **user_data) payload["owner_name"] = owner_name; // check whether cautions are even enabled or not - if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) + const char* notification = "ScriptQuestion"; + + if(caution && gSavedSettings.getBOOL("PermissionsCautionEnabled")) { - if (caution) - { - args["FOOTERTEXT"] = (count > 1) ? LLTrans::getString("AdditionalPermissionsRequestHeader") + "\n\n" + script_question : ""; - } - // display the caution permissions prompt - LLNotificationsUtil::add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload); + args["FOOTERTEXT"] = (count > 1) ? LLTrans::getString("AdditionalPermissionsRequestHeader") + "\n\n" + script_question : ""; + notification = "ScriptQuestionCaution"; } - else + else if(experienceid.notNull()) { - // fall back to default behavior if cautions are entirely disabled - LLNotificationsUtil::add("ScriptQuestion", args, payload); + payload["experience"]=experienceid; + LLExperienceCache::get(experienceid, boost::bind(process_script_experience_details, _1, args, payload)); + return; } + + LLNotificationsUtil::add(notification, args, payload); } } } diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index d8f5c71f8d..d8f5c71f8d 100755..100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index faa58d423f..6666aecca2 100755..100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -119,14 +119,14 @@ void LLGridManager::initialize(const std::string& grid_file) mGridFile = grid_file; // as we don't want an attacker to override our grid list // to point the default grid to an invalid grid - addSystemGrid("Second Life Main Grid (Agni)", + addSystemGrid(LLTrans::getString("AgniGridLabel"), MAINGRID, MAIN_GRID_LOGIN_URI, "https://secondlife.com/helpers/", DEFAULT_LOGIN_PAGE, SL_UPDATE_QUERY_URL, "Agni"); - addSystemGrid("Second Life Beta Test Grid (Aditi)", + addSystemGrid(LLTrans::getString("AditiGridLabel"), "util.aditi.lindenlab.com", "https://login.aditi.lindenlab.com/cgi-bin/login.cgi", "http://aditi-secondlife.webdev.lindenlab.com/helpers/", diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h index 8526c0ba7f..8526c0ba7f 100755..100644 --- a/indra/newview/llviewernetwork.h +++ b/indra/newview/llviewernetwork.h diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index a2c0a91ea6..d79c84bee3 100755..100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -232,6 +232,8 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe mRenderMedia(FALSE), mBestUpdatePrecision(0), mText(), + mHudText(""), + mHudTextColor(LLColor4::white), mLastInterpUpdateSecs(0.f), mLastMessageUpdateSecs(0.f), mLatestRecvPacketID(0), @@ -1413,12 +1415,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // Setup object text if (!mText) { - mText = (LLHUDText *)LLHUDObject::addHUDObject(LLHUDObject::LL_HUD_TEXT); - mText->setFont(LLFontGL::getFontSansSerif()); - mText->setVertAlignment(LLHUDText::ALIGN_VERT_TOP); - mText->setMaxLines(-1); - mText->setSourceObject(this); - mText->setOnHUDAttachment(isHUDAttachment()); + initHudText(); } std::string temp_string; @@ -1432,6 +1429,9 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, mText->setColor(LLColor4(coloru)); mText->setString(temp_string); + mHudText = temp_string; + mHudTextColor = LLColor4(coloru); + setChanged(MOVED | SILHOUETTE); } else if (mText.notNull()) @@ -1794,12 +1794,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // Setup object text if (!mText && (value & 0x4)) { - mText = (LLHUDText *)LLHUDObject::addHUDObject(LLHUDObject::LL_HUD_TEXT); - mText->setFont(LLFontGL::getFontSansSerif()); - mText->setVertAlignment(LLHUDText::ALIGN_VERT_TOP); - mText->setMaxLines(-1); // Set to match current agni behavior. - mText->setSourceObject(this); - mText->setOnHUDAttachment(isHUDAttachment()); + initHudText(); } if (value & 0x4) @@ -1812,6 +1807,9 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, mText->setColor(LLColor4(coloru)); mText->setString(temp_string); + mHudText = temp_string; + mHudTextColor = LLColor4(coloru); + setChanged(TEXTURE); } else if(mText.notNull()) @@ -1958,6 +1956,11 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, if (sent_parentp && (sent_parentp != this) && !sent_parentp->isDead()) { + if (((LLViewerObject*)sent_parentp)->isAvatar()) + { + //LL_DEBUGS("Avatar") << "ATT got object update for attachment " << LL_ENDL; + } + // // We have a viewer object for the parent, and it's not dead. // Do the actual reparenting here. @@ -2835,6 +2838,11 @@ void LLViewerObject::clearInventoryListeners() mInventoryCallbacks.clear(); } +bool LLViewerObject::hasInventoryListeners() +{ + return !mInventoryCallbacks.empty(); +} + void LLViewerObject::requestInventory() { if(mInventoryDirty && mInventory && !mInventoryCallbacks.empty()) @@ -2842,15 +2850,20 @@ void LLViewerObject::requestInventory() mInventory->clear(); // will deref and delete entries delete mInventory; mInventory = NULL; - mInventoryDirty = FALSE; //since we are going to request it now } + if(mInventory) { + // inventory is either up to date or doesn't has a listener + // if it is dirty, leave it this way in case we gain a listener doInventoryCallback(); } - // throw away duplicate requests else { + // since we are going to request it now + mInventoryDirty = FALSE; + + // Note: throws away duplicate requests fetchInventoryFromServer(); } } @@ -2860,8 +2873,6 @@ void LLViewerObject::fetchInventoryFromServer() if (!mInventoryPending) { delete mInventory; - mInventory = NULL; - mInventoryDirty = FALSE; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_RequestTaskInventory); msg->nextBlockFast(_PREHASH_AgentData); @@ -2880,6 +2891,9 @@ struct LLFilenameAndTask { LLUUID mTaskID; std::string mFilename; + + // for sequencing in case of multiple updates + S16 mSerial; #ifdef _DEBUG static S32 sCount; LLFilenameAndTask() @@ -2915,9 +2929,17 @@ void LLViewerObject::processTaskInv(LLMessageSystem* msg, void** user_data) return; } - msg->getS16Fast(_PREHASH_InventoryData, _PREHASH_Serial, object->mInventorySerialNum); LLFilenameAndTask* ft = new LLFilenameAndTask; ft->mTaskID = task_id; + // we can receive multiple task updates simultaneously, make sure we will not rewrite newer with older update + msg->getS16Fast(_PREHASH_InventoryData, _PREHASH_Serial, ft->mSerial); + + if (ft->mSerial < object->mInventorySerialNum) + { + // viewer did some changes to inventory that were not saved yet. + LL_DEBUGS() << "Task inventory serial might be out of sync, server serial: " << ft->mSerial << " client serial: " << object->mInventorySerialNum << LL_ENDL; + object->mInventorySerialNum = ft->mSerial; + } std::string unclean_filename; msg->getStringFast(_PREHASH_InventoryData, _PREHASH_Filename, unclean_filename); @@ -2957,9 +2979,13 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS { LLFilenameAndTask* ft = (LLFilenameAndTask*)user_data; LLViewerObject* object = NULL; - if(ft && (0 == error_code) && - (object = gObjectList.findObject(ft->mTaskID))) + + if (ft + && (0 == error_code) + && (object = gObjectList.findObject(ft->mTaskID)) + && ft->mSerial >= object->mInventorySerialNum) { + object->mInventorySerialNum = ft->mSerial; if (object->loadTaskInvFile(ft->mFilename)) { @@ -2990,7 +3016,7 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS } else { - // This Occurs When to requests were made, and the first one + // This Occurs When two requests were made, and the first one // has already handled it. LL_DEBUGS() << "Problem loading task inventory. Return code: " << error_code << LL_ENDL; @@ -4070,6 +4096,7 @@ LLViewerObject* LLViewerObject::getRootEdit() const BOOL LLViewerObject::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, @@ -4942,12 +4969,7 @@ void LLViewerObject::setDebugText(const std::string &utf8text) if (!mText) { - mText = (LLHUDText *)LLHUDObject::addHUDObject(LLHUDObject::LL_HUD_TEXT); - mText->setFont(LLFontGL::getFontSansSerif()); - mText->setVertAlignment(LLHUDText::ALIGN_VERT_TOP); - mText->setMaxLines(-1); - mText->setSourceObject(this); - mText->setOnHUDAttachment(isHUDAttachment()); + initHudText(); } mText->setColor(LLColor4::white); mText->setString(utf8text); @@ -4956,6 +4978,25 @@ void LLViewerObject::setDebugText(const std::string &utf8text) updateText(); } +void LLViewerObject::initHudText() +{ + mText = (LLHUDText *)LLHUDObject::addHUDObject(LLHUDObject::LL_HUD_TEXT); + mText->setFont(LLFontGL::getFontSansSerif()); + mText->setVertAlignment(LLHUDText::ALIGN_VERT_TOP); + mText->setMaxLines(-1); + mText->setSourceObject(this); + mText->setOnHUDAttachment(isHUDAttachment()); +} + +void LLViewerObject::restoreHudText() +{ + if(mText) + { + mText->setColor(mHudTextColor); + mText->setString(mHudText); + } +} + void LLViewerObject::setIcon(LLViewerTexture* icon_image) { if (!mIcon) @@ -5002,7 +5043,13 @@ void LLViewerObject::updateText() { if (mText.notNull()) { - LLVector3 up_offset(0,0,0); + LLVOAvatar* avatar = getAvatar(); + if (avatar) + { + mText->setHidden(avatar->isInMuteList()); + } + + LLVector3 up_offset(0,0,0); up_offset.mV[2] = getScale().mV[VZ]*0.6f; if (mDrawable.notNull()) diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 05c87c153b..cb8acfdcf8 100755..100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -268,6 +268,7 @@ public: virtual BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point @@ -403,6 +404,8 @@ public: void setCanSelect(BOOL canSelect); void setDebugText(const std::string &utf8text); + void initHudText(); + void restoreHudText(); void setIcon(LLViewerTexture* icon_image); void clearIcon(); @@ -436,8 +439,8 @@ public: void removeInventoryListener(LLVOInventoryListener* listener); BOOL isInventoryPending() { return mInventoryPending; } void clearInventoryListeners(); + bool hasInventoryListeners(); void requestInventory(); - void fetchInventoryFromServer(); static void processTaskInv(LLMessageSystem* msg, void** user_data); void removeInventory(const LLUUID& item_id); @@ -593,6 +596,9 @@ private: static void initObjectDataMap(); + // forms task inventory request if none are pending + void fetchInventoryFromServer(); + public: // // Viewer-side only types - use the LL_PCODE_APP mask. @@ -670,6 +676,9 @@ public: LLPointer<LLHUDText> mText; LLPointer<class LLHUDIcon> mIcon; + std::string mHudText; + LLColor4 mHudTextColor; + static BOOL sUseSharedDrawables; protected: diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 7c36b30dd1..61e918215c 100755..100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -474,13 +474,13 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { U32 flags = 0; mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i); - + if(flags & FLAGS_TEMPORARY_ON_REZ) { - compressed_dp.unpackUUID(fullid, "ID"); - compressed_dp.unpackU32(local_id, "LocalID"); - compressed_dp.unpackU8(pcode, "PCode"); - } + compressed_dp.unpackUUID(fullid, "ID"); + compressed_dp.unpackU32(local_id, "LocalID"); + compressed_dp.unpackU8(pcode, "PCode"); + } else //send to object cache { regionp->cacheFullUpdate(compressed_dp, flags); @@ -497,7 +497,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, gMessageSystem->getSenderPort()); if (fullid.isNull()) { - // LL_WARNS() << "update for unknown localid " << local_id << " host " << gMessageSystem->getSender() << ":" << gMessageSystem->getSenderPort() << LL_ENDL; + LL_DEBUGS() << "update for unknown localid " << local_id << " host " << gMessageSystem->getSender() << ":" << gMessageSystem->getSenderPort() << LL_ENDL; mNumUnknownUpdates++; } } @@ -1282,7 +1282,7 @@ void LLViewerObjectList::clearDebugText() { for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - (*iter)->setDebugText(""); + (*iter)->restoreHudText(); } } diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 594317cd9f..594317cd9f 100755..100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 37b249dddd..fc275eb2f0 100755..100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -590,7 +590,13 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << LL_ENDL; } break; - + + case MEDIA_EVENT_FILE_DOWNLOAD: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_FILE_DOWNLOAD" << LL_ENDL; + } + break; + case MEDIA_EVENT_GEOMETRY_CHANGE: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE, uuid is " << self->getClickUUID() << LL_ENDL; diff --git a/indra/newview/llviewerparcelmedia.h b/indra/newview/llviewerparcelmedia.h index 534f65b419..534f65b419 100755..100644 --- a/indra/newview/llviewerparcelmedia.h +++ b/indra/newview/llviewerparcelmedia.h diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp index 57ee583eae..57ee583eae 100755..100644 --- a/indra/newview/llviewerparcelmediaautoplay.cpp +++ b/indra/newview/llviewerparcelmediaautoplay.cpp diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h index a052362829..a052362829 100755..100644 --- a/indra/newview/llviewerparcelmediaautoplay.h +++ b/indra/newview/llviewerparcelmediaautoplay.h diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index d9d4c34fb0..2a6b105cab 100755..100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -205,8 +205,8 @@ void LLViewerParcelMgr::dump() mCurrentParcel->dump(); LL_INFOS() << "banning " << mCurrentParcel->mBanList.size() << LL_ENDL; - access_map_const_iterator cit = mCurrentParcel->mBanList.begin(); - access_map_const_iterator end = mCurrentParcel->mBanList.end(); + LLAccessEntry::map::const_iterator cit = mCurrentParcel->mBanList.begin(); + LLAccessEntry::map::const_iterator end = mCurrentParcel->mBanList.end(); for ( ; cit != end; ++cit) { LL_INFOS() << "ban id " << (*cit).first << LL_ENDL; @@ -892,7 +892,7 @@ void LLViewerParcelMgr::sendParcelAccessListRequest(U32 flags) if (!region) return; LLMessageSystem *msg = gMessageSystem; - + if (flags & AL_BAN) { @@ -902,6 +902,14 @@ void LLViewerParcelMgr::sendParcelAccessListRequest(U32 flags) { mCurrentParcel->mAccessList.clear(); } + if (flags & AL_ALLOW_EXPERIENCE) + { + mCurrentParcel->clearExperienceKeysByType(EXPERIENCE_KEY_TYPE_ALLOWED); + } + if (flags & AL_BLOCK_EXPERIENCE) + { + mCurrentParcel->clearExperienceKeysByType(EXPERIENCE_KEY_TYPE_BLOCKED); + } // Only the headers differ msg->newMessageFast(_PREHASH_ParcelAccessListRequest); @@ -1594,8 +1602,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } else if (local_id == parcel_mgr.mAgentParcel->getLocalID()) { - // updated agent parcel - parcel_mgr.mAgentParcel->unpackMessage(msg); + // Parcels in different regions can have same ids. + LLViewerRegion* parcel_region = LLWorld::getInstance()->getRegion( msg->getSender() ); + LLViewerRegion* agent_region = gAgent.getRegion(); + if (parcel_region && agent_region && parcel_region->getRegionID() == agent_region->getRegionID()) + { + // updated agent parcel + parcel_mgr.mAgentParcel->unpackMessage(msg); + } } } @@ -1665,7 +1679,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } // Request access list information for this land - parcel_mgr.sendParcelAccessListRequest(AL_ACCESS | AL_BAN); + parcel_mgr.sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_ALLOW_EXPERIENCE | AL_BLOCK_EXPERIENCE); // Request dwell for this land, if it's not public land. parcel_mgr.mSelectedDwell = DWELL_NAN; @@ -1830,6 +1844,14 @@ void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void { parcel->unpackAccessEntries(msg, &(parcel->mBanList) ); } + else if (message_flags & AL_ALLOW_EXPERIENCE) + { + parcel->unpackExperienceEntries(msg, EXPERIENCE_KEY_TYPE_ALLOWED); + } + else if (message_flags & AL_BLOCK_EXPERIENCE) + { + parcel->unpackExperienceEntries(msg, EXPERIENCE_KEY_TYPE_BLOCKED); + } /*else if (message_flags & AL_RENTER) { parcel->unpackAccessEntries(msg, &(parcel->mRenterList) ); @@ -1864,10 +1886,6 @@ void LLViewerParcelMgr::processParcelDwellReply(LLMessageSystem* msg, void**) void LLViewerParcelMgr::sendParcelAccessListUpdate(U32 which) { - - LLUUID transactionUUID; - transactionUUID.generate(); - if (!mSelected) { return; @@ -1876,125 +1894,92 @@ void LLViewerParcelMgr::sendParcelAccessListUpdate(U32 which) LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( mWestSouth ); if (!region) return; - LLMessageSystem* msg = gMessageSystem; - LLParcel* parcel = mCurrentParcel; if (!parcel) return; if (which & AL_ACCESS) { - S32 count = parcel->mAccessList.size(); - S32 num_sections = (S32) ceil(count/PARCEL_MAX_ENTRIES_PER_PACKET); - S32 sequence_id = 1; - BOOL start_message = TRUE; - BOOL initial = TRUE; - - access_map_const_iterator cit = parcel->mAccessList.begin(); - access_map_const_iterator end = parcel->mAccessList.end(); - while ( (cit != end) || initial ) - { - if (start_message) - { - msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_Data); - msg->addU32Fast(_PREHASH_Flags, AL_ACCESS); - msg->addS32(_PREHASH_LocalID, parcel->getLocalID() ); - msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); - msg->addS32Fast(_PREHASH_SequenceID, sequence_id); - msg->addS32Fast(_PREHASH_Sections, num_sections); - start_message = FALSE; - - if (initial && (cit == end)) - { - // pack an empty block if there will be no data - msg->nextBlockFast(_PREHASH_List); - msg->addUUIDFast(_PREHASH_ID, LLUUID::null ); - msg->addS32Fast(_PREHASH_Time, 0 ); - msg->addU32Fast(_PREHASH_Flags, 0 ); - } + sendParcelAccessListUpdate(AL_ACCESS, parcel->mAccessList, region, parcel->getLocalID()); + } - initial = FALSE; - sequence_id++; + if (which & AL_BAN) + { + sendParcelAccessListUpdate(AL_BAN, parcel->mBanList, region, parcel->getLocalID()); + } - } - - while ( (cit != end) && (msg->getCurrentSendTotal() < MTUBYTES)) - { + if(which & AL_ALLOW_EXPERIENCE) + { + sendParcelAccessListUpdate(AL_ALLOW_EXPERIENCE, parcel->getExperienceKeysByType(EXPERIENCE_KEY_TYPE_ALLOWED), region, parcel->getLocalID()); + } + if(which & AL_BLOCK_EXPERIENCE) + { + sendParcelAccessListUpdate(AL_BLOCK_EXPERIENCE, parcel->getExperienceKeysByType(EXPERIENCE_KEY_TYPE_BLOCKED), region, parcel->getLocalID()); + } +} - const LLAccessEntry& entry = (*cit).second; - - msg->nextBlockFast(_PREHASH_List); - msg->addUUIDFast(_PREHASH_ID, entry.mID ); - msg->addS32Fast(_PREHASH_Time, entry.mTime ); - msg->addU32Fast(_PREHASH_Flags, entry.mFlags ); - ++cit; - } +void LLViewerParcelMgr::sendParcelAccessListUpdate(U32 flags, const LLAccessEntry::map& entries, LLViewerRegion* region, S32 parcel_local_id) +{ + S32 count = entries.size(); + S32 num_sections = (S32) ceil(count/PARCEL_MAX_ENTRIES_PER_PACKET); + S32 sequence_id = 1; + BOOL start_message = TRUE; + BOOL initial = TRUE; - start_message = TRUE; - msg->sendReliable( region->getHost() ); - } - } + LLUUID transactionUUID; + transactionUUID.generate(); - if (which & AL_BAN) - { - S32 count = parcel->mBanList.size(); - S32 num_sections = (S32) ceil(count/PARCEL_MAX_ENTRIES_PER_PACKET); - S32 sequence_id = 1; - BOOL start_message = TRUE; - BOOL initial = TRUE; - - access_map_const_iterator cit = parcel->mBanList.begin(); - access_map_const_iterator end = parcel->mBanList.end(); - while ( (cit != end) || initial ) - { - if (start_message) - { - msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_Data); - msg->addU32Fast(_PREHASH_Flags, AL_BAN); - msg->addS32(_PREHASH_LocalID, parcel->getLocalID() ); - msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); - msg->addS32Fast(_PREHASH_SequenceID, sequence_id); - msg->addS32Fast(_PREHASH_Sections, num_sections); - start_message = FALSE; - - if (initial && (cit == end)) - { - // pack an empty block if there will be no data - msg->nextBlockFast(_PREHASH_List); - msg->addUUIDFast(_PREHASH_ID, LLUUID::null ); - msg->addS32Fast(_PREHASH_Time, 0 ); - msg->addU32Fast(_PREHASH_Flags, 0 ); - } - initial = FALSE; - sequence_id++; + LLMessageSystem* msg = gMessageSystem; - } - - while ( (cit != end) && (msg->getCurrentSendTotal() < MTUBYTES)) + LLAccessEntry::map::const_iterator cit = entries.begin(); + LLAccessEntry::map::const_iterator end = entries.end(); + while ( (cit != end) || initial ) + { + if (start_message) + { + msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); + msg->nextBlockFast(_PREHASH_Data); + msg->addU32Fast(_PREHASH_Flags, flags); + msg->addS32(_PREHASH_LocalID, parcel_local_id); + msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); + msg->addS32Fast(_PREHASH_SequenceID, sequence_id); + msg->addS32Fast(_PREHASH_Sections, num_sections); + start_message = FALSE; + + if (initial && (cit == end)) { - const LLAccessEntry& entry = (*cit).second; - + // pack an empty block if there will be no data msg->nextBlockFast(_PREHASH_List); - msg->addUUIDFast(_PREHASH_ID, entry.mID ); - msg->addS32Fast(_PREHASH_Time, entry.mTime ); - msg->addU32Fast(_PREHASH_Flags, entry.mFlags ); - ++cit; + msg->addUUIDFast(_PREHASH_ID, LLUUID::null ); + msg->addS32Fast(_PREHASH_Time, 0 ); + msg->addU32Fast(_PREHASH_Flags, 0 ); } - start_message = TRUE; - msg->sendReliable( region->getHost() ); + initial = FALSE; + sequence_id++; + } + + while ( (cit != end) && (msg->getCurrentSendTotal() < MTUBYTES)) + { + const LLAccessEntry& entry = (*cit).second; + + msg->nextBlockFast(_PREHASH_List); + msg->addUUIDFast(_PREHASH_ID, entry.mID ); + msg->addS32Fast(_PREHASH_Time, entry.mTime ); + msg->addU32Fast(_PREHASH_Flags, entry.mFlags ); + ++cit; + } + + start_message = TRUE; + msg->sendReliable( region->getHost() ); } } + void LLViewerParcelMgr::deedLandToGroup() { std::string group_name; diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index b5b269abdf..bb6bbf3308 100755..100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -218,7 +218,7 @@ public: // Takes an Access List flag, like AL_ACCESS or AL_BAN void sendParcelAccessListUpdate(U32 which); - + // Takes an Access List flag, like AL_ACCESS or AL_BAN void sendParcelAccessListRequest(U32 flags); @@ -291,6 +291,8 @@ public: static BOOL isParcelModifiableByAgent(const LLParcel* parcelp, U64 group_proxy_power); private: + static void sendParcelAccessListUpdate(U32 flags, const std::map<LLUUID, class LLAccessEntry>& entries, LLViewerRegion* region, S32 parcel_local_id); + static void sendParcelExperienceUpdate( const U32 flags, uuid_vec_t experience_ids, LLViewerRegion* region, S32 parcel_local_id ); static bool releaseAlertCB(const LLSD& notification, const LLSD& response); // If the user is claiming land and the current selection diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index 4fd423b6f4..4fd423b6f4 100755..100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp diff --git a/indra/newview/llviewerparceloverlay.h b/indra/newview/llviewerparceloverlay.h index 14a2af5354..14a2af5354 100755..100644 --- a/indra/newview/llviewerparceloverlay.h +++ b/indra/newview/llviewerparceloverlay.h diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 230bdca4ef..230bdca4ef 100755..100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h index 40e8e1d45d..40e8e1d45d 100755..100644 --- a/indra/newview/llviewerpartsim.h +++ b/indra/newview/llviewerpartsim.h diff --git a/indra/newview/llviewerpartsource.cpp b/indra/newview/llviewerpartsource.cpp index 7efa821bbf..7efa821bbf 100755..100644 --- a/indra/newview/llviewerpartsource.cpp +++ b/indra/newview/llviewerpartsource.cpp diff --git a/indra/newview/llviewerpartsource.h b/indra/newview/llviewerpartsource.h index 12e926173b..12e926173b 100755..100644 --- a/indra/newview/llviewerpartsource.h +++ b/indra/newview/llviewerpartsource.h diff --git a/indra/newview/llviewerprecompiledheaders.cpp b/indra/newview/llviewerprecompiledheaders.cpp index 307e903726..307e903726 100755..100644 --- a/indra/newview/llviewerprecompiledheaders.cpp +++ b/indra/newview/llviewerprecompiledheaders.cpp diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 999d9092bd..999d9092bd 100755..100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 92e07c52a5..6af3e40f01 100755..100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -828,7 +828,6 @@ void LLViewerRegion::processRegionInfo(LLMessageSystem* msg, void**) LLRegionInfoModel::instance().update(msg); LLFloaterGodTools::processRegionInfo(msg); LLFloaterRegionInfo::processRegionInfo(msg); - LLFloaterReporter::processRegionInfo(msg); } void LLViewerRegion::setCacheID(const LLUUID& id) @@ -2718,6 +2717,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) capabilityNames.append("CopyInventoryFromNotecard"); capabilityNames.append("CreateInventoryCategory"); capabilityNames.append("DispatchRegionInfo"); + capabilityNames.append("DirectDelivery"); capabilityNames.append("EnvironmentSettings"); capabilityNames.append("EstateChangeInfo"); capabilityNames.append("EventQueueGet"); @@ -2733,8 +2733,21 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) AISCommand::getCapabilityNames(capabilityNames); capabilityNames.append("GetDisplayNames"); + capabilityNames.append("GetExperiences"); + capabilityNames.append("AgentExperiences"); + capabilityNames.append("FindExperienceByName"); + capabilityNames.append("GetExperienceInfo"); + capabilityNames.append("GetAdminExperiences"); + capabilityNames.append("GetCreatorExperiences"); + capabilityNames.append("ExperiencePreferences"); + capabilityNames.append("GroupExperiences"); + capabilityNames.append("UpdateExperience"); + capabilityNames.append("IsExperienceAdmin"); + capabilityNames.append("IsExperienceContributor"); + capabilityNames.append("RegionExperiences"); capabilityNames.append("GetMesh"); capabilityNames.append("GetMesh2"); + capabilityNames.append("GetMetadata"); capabilityNames.append("GetObjectCost"); capabilityNames.append("GetObjectPhysicsData"); capabilityNames.append("GetTexture"); diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index c14fa5aee8..c14fa5aee8 100755..100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index dafe2cafec..dafe2cafec 100755..100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index 923aa522ad..923aa522ad 100755..100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index f60829e9e8..24a6758312 100755..100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -60,6 +60,7 @@ #include "llfeaturemanager.h" #include "llviewernetwork.h" #include "llmeshrepository.h" //for LLMeshRepository::sBytesReceived +#include "llsdserialize.h" namespace LLStatViewer { @@ -616,8 +617,10 @@ void send_stats() body["DisplayNamesShowUsername"] = gSavedSettings.getBOOL("NameTagShowUsernames"); body["MinimalSkin"] = false; - + LLViewerStats::getInstance()->addToMessage(body); + + LL_INFOS("LogViewerStatsPacket") << "Sending viewer statistics: " << body << LL_ENDL; LLHTTPClient::post(url, body, new ViewerStatsResponder()); LLViewerStats::instance().getRecording().resume(); diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 7843652589..7843652589 100755..100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index b5ccf4ffa0..b5ccf4ffa0 100755..100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h index d1744f4910..d1744f4910 100755..100644 --- a/indra/newview/llviewerstatsrecorder.h +++ b/indra/newview/llviewerstatsrecorder.h diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp index 66e5742911..66e5742911 100755..100644 --- a/indra/newview/llviewertexlayer.cpp +++ b/indra/newview/llviewertexlayer.cpp diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h index 027ae255ec..027ae255ec 100755..100644 --- a/indra/newview/llviewertexlayer.h +++ b/indra/newview/llviewertexlayer.h diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 85ae64aeff..85ae64aeff 100755..100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp diff --git a/indra/newview/llviewertexteditor.h b/indra/newview/llviewertexteditor.h index 477119d4f2..477119d4f2 100755..100644 --- a/indra/newview/llviewertexteditor.h +++ b/indra/newview/llviewertexteditor.h diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index a957367f61..a957367f61 100755..100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index aed7e94945..aed7e94945 100755..100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h diff --git a/indra/newview/llviewertextureanim.cpp b/indra/newview/llviewertextureanim.cpp index 9af92d7377..9af92d7377 100755..100644 --- a/indra/newview/llviewertextureanim.cpp +++ b/indra/newview/llviewertextureanim.cpp diff --git a/indra/newview/llviewertextureanim.h b/indra/newview/llviewertextureanim.h index abbfabceb9..abbfabceb9 100755..100644 --- a/indra/newview/llviewertextureanim.h +++ b/indra/newview/llviewertextureanim.h diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 926c40307b..926c40307b 100755..100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index fbbfe9a7d4..fbbfe9a7d4 100755..100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp index 22de7e150b..22de7e150b 100755..100644 --- a/indra/newview/llviewerthrottle.cpp +++ b/indra/newview/llviewerthrottle.cpp diff --git a/indra/newview/llviewerthrottle.h b/indra/newview/llviewerthrottle.h index fe54b06662..fe54b06662 100755..100644 --- a/indra/newview/llviewerthrottle.h +++ b/indra/newview/llviewerthrottle.h diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index 0f73515b5d..0f73515b5d 100755..100644 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h index 62cd5e21ad..62cd5e21ad 100755..100644 --- a/indra/newview/llviewerwearable.h +++ b/indra/newview/llviewerwearable.h diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index e317989f04..f96c4b7bf0 100755..100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1137,7 +1137,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi if (prim_media_dnd_enabled) { - LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/ ); + LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY, TRUE /*BOOL pick_transparent*/, FALSE ); LLUUID object_id = pick_info.getObjectID(); S32 object_face = pick_info.mObjectFace; @@ -1381,7 +1381,11 @@ BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated) // it's all entered/processed. if (key == KEY_RETURN && mask == MASK_NONE) { - return FALSE; + // RIDER: although, at times some of the controlls (in particular the CEF viewer + // would like to know about the KEYDOWN for an enter key... so ask and pass it along. + LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); + if (keyboard_focus && !keyboard_focus->wantsReturnKey()) + return FALSE; } return gViewerKeyboard.handleKey(key, mask, repeated); @@ -1399,10 +1403,9 @@ BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask) tool_inspectp->keyUp(key, mask); } - return FALSE; + return gViewerKeyboard.handleKeyUp(key, mask); } - void LLViewerWindow::handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level) { LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true); @@ -2019,6 +2022,7 @@ void LLViewerWindow::initWorldUI() } gHUDView = new LLHUDView(hud_rect); getRootView()->addChild(gHUDView); + getRootView()->sendChildToBack(gHUDView); } LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("state_management_buttons_container"); @@ -2336,12 +2340,6 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) LLSD args; LLColor4 new_bg_color; - // no l10n problem because channel is always an english string - std::string channel = LLVersionInfo::getChannel(); - static const boost::regex is_beta_channel("\\bBeta\\b"); - static const boost::regex is_project_channel("\\bProject\\b"); - static const boost::regex is_test_channel("\\bTest$"); - // god more important than project, proj more important than grid if ( god_mode ) { @@ -2354,27 +2352,35 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionGodBgColor" ); } } - else if (boost::regex_search(channel, is_beta_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); - } - else if (boost::regex_search(channel, is_project_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); - } - else if (boost::regex_search(channel, is_test_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); - } - else if(!LLGridManager::getInstance()->isInProductionGrid()) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); - } - else - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); - } - + else + { + switch (LLVersionInfo::getViewerMaturity()) + { + case LLVersionInfo::TEST_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); + break; + + case LLVersionInfo::PROJECT_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); + break; + + case LLVersionInfo::BETA_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); + break; + + case LLVersionInfo::RELEASE_VIEWER: + if(!LLGridManager::getInstance()->isInProductionGrid()) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); + } + else + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); + } + break; + } + } + if(gMenuBarView) { gMenuBarView->setBackgroundColor( new_bg_color ); @@ -2542,21 +2548,67 @@ void LLViewerWindow::draw() //#endif } +// Takes a single keyup event, usually when UI is visible +BOOL LLViewerWindow::handleKeyUp(KEY key, MASK mask) +{ + LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); + + if (keyboard_focus + && !(mask & (MASK_CONTROL | MASK_ALT)) + && !gFocusMgr.getKeystrokesOnly()) + { + // We have keyboard focus, and it's not an accelerator + if (keyboard_focus && keyboard_focus->wantsKeyUpKeyDown()) + { + return keyboard_focus->handleKeyUp(key, mask, FALSE); + } + else if (key < 0x80) + { + // Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first. + return (gFocusMgr.getKeyboardFocus() != NULL); + } + } + + if (keyboard_focus) + { + if (keyboard_focus->handleKeyUp(key, mask, FALSE)) + { + LL_DEBUGS() << "LLviewerWindow::handleKeyUp - in 'traverse up' - no loops seen... just called keyboard_focus->handleKeyUp an it returned true" << LL_ENDL; + LLViewerEventRecorder::instance().logKeyEvent(key, mask); + return TRUE; + } + else { + LL_DEBUGS() << "LLviewerWindow::handleKeyUp - in 'traverse up' - no loops seen... just called keyboard_focus->handleKeyUp an it returned FALSE" << LL_ENDL; + } + } + + // don't pass keys on to world when something in ui has focus + return gFocusMgr.childHasKeyboardFocus(mRootView) + || LLMenuGL::getKeyboardMode() + || (gMenuBarView && gMenuBarView->getHighlightedItem() && gMenuBarView->getHighlightedItem()->isActive()); +} + // Takes a single keydown event, usually when UI is visible BOOL LLViewerWindow::handleKey(KEY key, MASK mask) { // hide tooltips on keypress LLToolTipMgr::instance().blockToolTips(); - if (gFocusMgr.getKeyboardFocus() + LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); + + if (keyboard_focus && !(mask & (MASK_CONTROL | MASK_ALT)) && !gFocusMgr.getKeystrokesOnly()) { // We have keyboard focus, and it's not an accelerator - if (key < 0x80) + if (keyboard_focus && keyboard_focus->wantsKeyUpKeyDown()) + { + return keyboard_focus->handleKey(key, mask, FALSE ); + } + else if (key < 0x80) { // Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first. - return (gFocusMgr.getKeyboardFocus() != NULL); + return (keyboard_focus != NULL); } } @@ -2570,7 +2622,6 @@ 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 @@ -2596,7 +2647,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // give floaters first chance to handle TAB key // so frontmost floater gets focus // if nothing has focus, go to first or last UI element as appropriate - if (key == KEY_TAB && (mask & MASK_CONTROL || gFocusMgr.getKeyboardFocus() == NULL)) + if (key == KEY_TAB && (mask & MASK_CONTROL || keyboard_focus == NULL)) { LL_WARNS() << "LLviewerWindow::handleKey give floaters first chance at tab key " << LL_ENDL; if (gMenuHolder) gMenuHolder->hideMenus(); @@ -2934,7 +2985,7 @@ void LLViewerWindow::updateUI() if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_RAYCAST)) { gDebugRaycastFaceHit = -1; - gDebugRaycastObject = cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, + gDebugRaycastObject = cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, FALSE, &gDebugRaycastFaceHit, &gDebugRaycastIntersection, &gDebugRaycastTexCoord, @@ -3762,6 +3813,7 @@ void LLViewerWindow::pickAsync( S32 x, MASK mask, void (*callback)(const LLPickInfo& info), BOOL pick_transparent, + BOOL pick_rigged, BOOL pick_unselectable) { BOOL in_build_mode = LLFloaterReg::instanceVisible("build"); @@ -3772,7 +3824,7 @@ void LLViewerWindow::pickAsync( S32 x, pick_transparent = TRUE; } - LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, FALSE, TRUE, pick_unselectable, callback); + LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, pick_rigged, FALSE, TRUE, pick_unselectable, callback); schedulePick(pick_info); } @@ -3828,7 +3880,7 @@ void LLViewerWindow::returnEmptyPicks() } // Performs the GL object/land pick. -LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent, BOOL pick_particle) +LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent, BOOL pick_rigged, BOOL pick_particle) { BOOL in_build_mode = LLFloaterReg::instanceVisible("build"); if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha) @@ -3840,7 +3892,7 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans // shortcut queueing in mPicks and just update mLastPick in place MASK key_mask = gKeyboard->currentMask(TRUE); - mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_particle, TRUE, FALSE, NULL); + mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_rigged, pick_particle, TRUE, FALSE, NULL); mLastPick.fetchResults(); return mLastPick; @@ -3876,6 +3928,7 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de LLViewerObject *this_object, S32 this_face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a *intersection, LLVector2 *uv, @@ -3946,7 +3999,7 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de { if (this_object->isHUDAttachment()) // is a HUD object? { - if (this_object->lineSegmentIntersect(mh_start, mh_end, this_face, pick_transparent, + if (this_object->lineSegmentIntersect(mh_start, mh_end, this_face, pick_transparent, pick_rigged, face_hit, intersection, uv, normal, tangent)) { found = this_object; @@ -3954,7 +4007,7 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de } else // is a world object { - if (this_object->lineSegmentIntersect(mw_start, mw_end, this_face, pick_transparent, + if (this_object->lineSegmentIntersect(mw_start, mw_end, this_face, pick_transparent, pick_rigged, face_hit, intersection, uv, normal, tangent)) { found = this_object; @@ -3968,7 +4021,7 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de if (!found) // if not found in HUD, look in world: { - found = gPipeline.lineSegmentIntersectInWorld(mw_start, mw_end, pick_transparent, + found = gPipeline.lineSegmentIntersectInWorld(mw_start, mw_end, pick_transparent, pick_rigged, face_hit, intersection, uv, normal, tangent); if (found && !pick_transparent) { @@ -5244,6 +5297,7 @@ LLPickInfo::LLPickInfo() mBinormal(), mHUDIcon(NULL), mPickTransparent(FALSE), + mPickRigged(FALSE), mPickParticle(FALSE) { } @@ -5251,6 +5305,7 @@ LLPickInfo::LLPickInfo() LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, MASK keyboard_mask, BOOL pick_transparent, + BOOL pick_rigged, BOOL pick_particle, BOOL pick_uv_coords, BOOL pick_unselectable, @@ -5269,6 +5324,7 @@ LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, mBinormal(), mHUDIcon(NULL), mPickTransparent(pick_transparent), + mPickRigged(pick_rigged), mPickParticle(pick_particle), mPickUnselectable(pick_unselectable) { @@ -5300,7 +5356,7 @@ void LLPickInfo::fetchResults() } LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f, - NULL, -1, mPickTransparent, &face_hit, + NULL, -1, mPickTransparent, mPickRigged, &face_hit, &intersection, &uv, &normal, &tangent, &start, &end); mPickPt = mMousePt; @@ -5445,7 +5501,7 @@ void LLPickInfo::getSurfaceInfo() if (objectp) { if (gViewerWindow->cursorIntersect(ll_round((F32)mMousePt.mX), ll_round((F32)mMousePt.mY), 1024.f, - objectp, -1, mPickTransparent, + objectp, -1, mPickTransparent, mPickRigged, &mObjectFace, &intersection, &mSTCoords, diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 7fde52d4e1..d34e76f6f6 100755..100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -89,6 +89,7 @@ public: LLPickInfo(const LLCoordGL& mouse_pos, MASK keyboard_mask, BOOL pick_transparent, + BOOL pick_rigged, BOOL pick_particle, BOOL pick_surface_info, BOOL pick_unselectable, @@ -123,6 +124,7 @@ public: LLVector4 mTangent; LLVector3 mBinormal; BOOL mPickTransparent; + BOOL mPickRigged; BOOL mPickParticle; BOOL mPickUnselectable; void getSurfaceInfo(); @@ -314,6 +316,7 @@ public: LLView* getHintHolder() { return mHintHolder.get(); } LLView* getLoginPanelHolder() { return mLoginPanelHolder.get(); } BOOL handleKey(KEY key, MASK mask); + BOOL handleKeyUp(KEY key, MASK mask); void handleScrollWheel (S32 clicks); // add and remove views from "popup" layer @@ -367,8 +370,9 @@ public: MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, BOOL pick_unselectable = FALSE); - LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent, BOOL pick_particle = FALSE); + LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent, BOOL pick_rigged = FALSE, BOOL pick_particle = FALSE); LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth, LLVector4a* intersection); @@ -376,6 +380,7 @@ public: LLViewerObject *this_object = NULL, S32 this_face = -1, BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, LLVector4a *intersection = NULL, LLVector2 *uv = NULL, diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp index 1fe5fc9800..1fe5fc9800 100755..100644 --- a/indra/newview/llviewerwindowlistener.cpp +++ b/indra/newview/llviewerwindowlistener.cpp diff --git a/indra/newview/llviewerwindowlistener.h b/indra/newview/llviewerwindowlistener.h index d627aad266..d627aad266 100755..100644 --- a/indra/newview/llviewerwindowlistener.h +++ b/indra/newview/llviewerwindowlistener.h diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp index c4430f4308..c4430f4308 100755..100644 --- a/indra/newview/llvlcomposition.cpp +++ b/indra/newview/llvlcomposition.cpp diff --git a/indra/newview/llvlcomposition.h b/indra/newview/llvlcomposition.h index 2dd04ac5a5..2dd04ac5a5 100755..100644 --- a/indra/newview/llvlcomposition.h +++ b/indra/newview/llvlcomposition.h diff --git a/indra/newview/llvlmanager.cpp b/indra/newview/llvlmanager.cpp index 895ceed880..895ceed880 100755..100644 --- a/indra/newview/llvlmanager.cpp +++ b/indra/newview/llvlmanager.cpp diff --git a/indra/newview/llvlmanager.h b/indra/newview/llvlmanager.h index 5e7fadc522..5e7fadc522 100755..100644 --- a/indra/newview/llvlmanager.h +++ b/indra/newview/llvlmanager.h diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 6e0d77b10a..6f7b23ba01 100755..100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -43,6 +43,7 @@ #include "llanimationstates.h" #include "llavatarnamecache.h" #include "llavatarpropertiesprocessor.h" +#include "llexperiencecache.h" #include "llphysicsmotion.h" #include "llviewercontrol.h" #include "llcallingcard.h" // IDEVO for LLAvatarTracker @@ -159,6 +160,9 @@ const F32 HEAD_MOVEMENT_AVG_TIME = 0.9f; const S32 MORPH_MASK_REQUESTED_DISCARD = 0; +const F32 MAX_STANDOFF_FROM_ORIGIN = 3; +const F32 MAX_STANDOFF_DISTANCE_CHANGE = 32; + // Discard level at which to switch to baked textures // Should probably be 4 or 3, but didn't want to change it while change other logic - SJB const S32 SWITCH_TO_BAKED_DISCARD = 5; @@ -721,7 +725,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, const BOOL needsSendToSim = false; // currently, this HUD effect doesn't need to pack and unpack data to do its job mVoiceVisualizer = ( LLVoiceVisualizer *)LLHUDManager::getInstance()->createViewerEffect( LLHUDObject::LL_HUD_EFFECT_VOICE_VISUALIZER, needsSendToSim ); - LL_DEBUGS("Avatar") << "LLVOAvatar Constructor (0x" << this << ") id:" << mID << LL_ENDL; + LL_DEBUGS("Avatar","Message") << "LLVOAvatar Constructor (0x" << this << ") id:" << mID << LL_ENDL; mPelvisp = NULL; @@ -1507,6 +1511,7 @@ void LLVOAvatar::renderJoints() BOOL LLVOAvatar::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, @@ -1606,6 +1611,7 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, @@ -1636,7 +1642,7 @@ LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector { LLViewerObject* attached_object = (*attachment_iter); - if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, face_hit, &local_intersection, tex_coord, normal, tangent)) + if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, pick_rigged, face_hit, &local_intersection, tex_coord, normal, tangent)) { local_end = local_intersection; if (intersection) @@ -2131,7 +2137,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time) // animate the character // store off last frame's root position to be consistent with camera position - LLVector3 root_pos_last = mRoot->getWorldPosition(); + mLastRootPos = mRoot->getWorldPosition(); BOOL detailed_update = updateCharacter(agent); static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false); @@ -2148,8 +2154,8 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time) idleUpdateBelowWater(); // wind effect uses this idleUpdateWindEffect(); } - - idleUpdateNameTag( root_pos_last ); + + idleUpdateNameTag( mLastRootPos ); idleUpdateRenderCost(); } @@ -5733,12 +5739,20 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent) void LLVOAvatar::addChild(LLViewerObject *childp) { childp->extractAttachmentItemID(); // find the inventory item this object is associated with. + if (isSelf()) + { + const LLUUID& item_id = childp->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT attachment child added " << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + + } + LLViewerObject::addChild(childp); if (childp->mDrawable) { if (!attachObject(childp)) { - LL_WARNS() << "addChild() failed for " + LL_WARNS() << "ATT addChild() failed for " << childp->getID() << " item " << childp->getAttachmentItemID() << LL_ENDL; @@ -5808,10 +5822,21 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi //----------------------------------------------------------------------------- const LLViewerJointAttachment *LLVOAvatar::attachObject(LLViewerObject *viewer_object) { + if (isSelf()) + { + const LLUUID& item_id = viewer_object->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT attaching object " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + } LLViewerJointAttachment* attachment = getTargetAttachmentPoint(viewer_object); if (!attachment || !attachment->addObject(viewer_object)) { + const LLUUID& item_id = viewer_object->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_WARNS("Avatar") << "ATT attach failed " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; return 0; } @@ -5871,6 +5896,13 @@ void LLVOAvatar::lazyAttach() LLPointer<LLViewerObject> cur_attachment = mPendingAttachment[i]; if (cur_attachment->mDrawable) { + if (isSelf()) + { + const LLUUID& item_id = cur_attachment->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT attaching object " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + } if (!attachObject(cur_attachment)) { // Drop it LL_WARNS() << "attachObject() failed for " @@ -6053,10 +6085,10 @@ void LLVOAvatar::getOffObject() { return; } - + LLViewerObject* sit_object = (LLViewerObject*)getParent(); - if (sit_object) + if (sit_object) { stopMotionFromSource(sit_object->getID()); LLFollowCamMgr::setCameraActive(sit_object->getID(), FALSE); @@ -6073,9 +6105,19 @@ void LLVOAvatar::getOffObject() } // assumes that transform will not be updated with drawable still having a parent + // or that drawable had no parent from the start LLVector3 cur_position_world = mDrawable->getWorldPosition(); LLQuaternion cur_rotation_world = mDrawable->getWorldRotation(); + if (mLastRootPos.length() >= MAX_STANDOFF_FROM_ORIGIN + && (cur_position_world.length() < MAX_STANDOFF_FROM_ORIGIN + || dist_vec(cur_position_world, mLastRootPos) > MAX_STANDOFF_DISTANCE_CHANGE)) + { + // Most likely drawable got updated too early or some updates were missed - we got relative position to non-existing parent + // restore coordinates from cache + cur_position_world = mLastRootPos; + } + // set *local* position based on last *world* position, since we're unparenting the avatar mDrawable->mXform.setPosition(cur_position_world); mDrawable->mXform.setRotation(cur_rotation_world); @@ -6251,6 +6293,7 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color) BOOL LLVOAvatar::isVisible() const { return mDrawable.notNull() + && (!mOrphaned || isSelf()) && (mDrawable->isVisible() || mIsDummy); } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 1c3f4f2aa7..09d8662034 100755..100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -165,6 +165,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point @@ -173,6 +174,7 @@ public: LLViewerObject* lineSegmentIntersectRiggedAttachments(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point @@ -869,6 +871,8 @@ public: private: // set this property only with LLVOAvatar::sitDown method BOOL mIsSitting; + // position backup in case of missing data + LLVector3 mLastRootPos; /** Hierarchy ** ** diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 1e9945b514..c1ca0aed69 100755..100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -38,6 +38,7 @@ #include "pipeline.h" #include "llagent.h" // Get state values from here +#include "llattachmentsmgr.h" #include "llagentcamera.h" #include "llagentwearables.h" #include "llhudeffecttrail.h" @@ -1118,44 +1119,6 @@ BOOL LLVOAvatarSelf::isWearingAttachment(const LLUUID& inv_item_id) const } //----------------------------------------------------------------------------- -BOOL LLVOAvatarSelf::attachmentWasRequested(const LLUUID& inv_item_id) const -{ - const F32 REQUEST_EXPIRATION_SECONDS = 5.0; // any request older than this is ignored/removed. - std::map<LLUUID,LLTimer>::iterator it = mAttachmentRequests.find(inv_item_id); - if (it != mAttachmentRequests.end()) - { - const LLTimer& request_time = it->second; - F32 request_time_elapsed = request_time.getElapsedTimeF32(); - if (request_time_elapsed > REQUEST_EXPIRATION_SECONDS) - { - mAttachmentRequests.erase(it); - return FALSE; - } - else - { - return TRUE; - } - } - else - { - return FALSE; - } -} - -//----------------------------------------------------------------------------- -void LLVOAvatarSelf::addAttachmentRequest(const LLUUID& inv_item_id) -{ - LLTimer current_time; - mAttachmentRequests[inv_item_id] = current_time; -} - -//----------------------------------------------------------------------------- -void LLVOAvatarSelf::removeAttachmentRequest(const LLUUID& inv_item_id) -{ - mAttachmentRequests.erase(inv_item_id); -} - -//----------------------------------------------------------------------------- // getWornAttachment() //----------------------------------------------------------------------------- LLViewerObject* LLVOAvatarSelf::getWornAttachment(const LLUUID& inv_item_id) @@ -1221,8 +1184,6 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view { const LLUUID& attachment_id = viewer_object->getAttachmentItemID(); LLAppearanceMgr::instance().registerAttachment(attachment_id); - // Clear any pending requests once the attachment arrives. - removeAttachmentRequest(attachment_id); updateLODRiggedAttachments(); } @@ -1570,8 +1531,16 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex t return LLVOAvatar::isTextureVisible(type); } - U32 index = gAgentWearables.getWearableIndex(wearable); - return isTextureVisible(type,index); + U32 index; + if (gAgentWearables.getWearableIndex(wearable,index)) + { + return isTextureVisible(type,index); + } + else + { + LL_WARNS() << "Wearable not found" << LL_ENDL; + return FALSE; + } } bool LLVOAvatarSelf::areTexturesCurrent() const diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index dc5e64d547..257a760eeb 100755..100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -109,6 +109,7 @@ private: private: LLUUID mInitialBakeIDs[6]; + //bool mInitialBakesLoaded; /******************************************************************************** @@ -291,19 +292,12 @@ protected: public: void updateAttachmentVisibility(U32 camera_mode); BOOL isWearingAttachment(const LLUUID& inv_item_id) const; - BOOL attachmentWasRequested(const LLUUID& inv_item_id) const; - void addAttachmentRequest(const LLUUID& inv_item_id); - void removeAttachmentRequest(const LLUUID& inv_item_id); LLViewerObject* getWornAttachment(const LLUUID& inv_item_id); bool getAttachedPointName(const LLUUID& inv_item_id, std::string& name) const; /*virtual*/ const LLViewerJointAttachment *attachObject(LLViewerObject *viewer_object); /*virtual*/ BOOL detachObject(LLViewerObject *viewer_object); static BOOL detachAttachmentIntoInventory(const LLUUID& item_id); -private: - // Track attachments that have been requested but have not arrived yet. - mutable std::map<LLUUID,LLTimer> mAttachmentRequests; - //-------------------------------------------------------------------- // HUDs //-------------------------------------------------------------------- diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index fd1d57a9d0..fd1d57a9d0 100755..100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index 082f5f0b1d..082f5f0b1d 100755..100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index 8d8f33b601..de63a3963c 100755..100644 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -770,7 +770,7 @@ void LLVOGrass::updateDrawable(BOOL force_damped) } // virtual -BOOL LLVOGrass::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, S32 *face_hitp, +BOOL LLVOGrass::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp, LLVector4a* intersection,LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent) { diff --git a/indra/newview/llvograss.h b/indra/newview/llvograss.h index 71d358362d..5634e048eb 100755..100644 --- a/indra/newview/llvograss.h +++ b/indra/newview/llvograss.h @@ -78,6 +78,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point diff --git a/indra/newview/llvoground.cpp b/indra/newview/llvoground.cpp index c1273e684c..c1273e684c 100755..100644 --- a/indra/newview/llvoground.cpp +++ b/indra/newview/llvoground.cpp diff --git a/indra/newview/llvoground.h b/indra/newview/llvoground.h index a53f309e46..a53f309e46 100755..100644 --- a/indra/newview/llvoground.h +++ b/indra/newview/llvoground.h diff --git a/indra/newview/llvoicecallhandler.cpp b/indra/newview/llvoicecallhandler.cpp index 2050dab689..2050dab689 100755..100644 --- a/indra/newview/llvoicecallhandler.cpp +++ b/indra/newview/llvoicecallhandler.cpp diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 426ca332e4..426ca332e4 100755..100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h index fed44974fd..fed44974fd 100755..100644 --- a/indra/newview/llvoicechannel.h +++ b/indra/newview/llvoicechannel.h diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index e24884fe81..e24884fe81 100755..100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index fb387301be..fb387301be 100755..100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp index cb83cf8fdf..cb83cf8fdf 100755..100644 --- a/indra/newview/llvoicevisualizer.cpp +++ b/indra/newview/llvoicevisualizer.cpp diff --git a/indra/newview/llvoicevisualizer.h b/indra/newview/llvoicevisualizer.h index 36c78252d1..36c78252d1 100755..100644 --- a/indra/newview/llvoicevisualizer.h +++ b/indra/newview/llvoicevisualizer.h diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index a6a7a35b03..a6a7a35b03 100755..100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index a4ec9f2a69..a4ec9f2a69 100755..100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h diff --git a/indra/newview/llvoinventorylistener.cpp b/indra/newview/llvoinventorylistener.cpp index 1ea90c6a98..1ea90c6a98 100755..100644 --- a/indra/newview/llvoinventorylistener.cpp +++ b/indra/newview/llvoinventorylistener.cpp diff --git a/indra/newview/llvoinventorylistener.h b/indra/newview/llvoinventorylistener.h index c50c475478..c50c475478 100755..100644 --- a/indra/newview/llvoinventorylistener.h +++ b/indra/newview/llvoinventorylistener.h diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 1ba0868544..6e5db526b0 100755..100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -469,6 +469,7 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable) BOOL LLVOPartGroup::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h index a94a2291ed..2ef8b1c848 100755..100644 --- a/indra/newview/llvopartgroup.h +++ b/indra/newview/llvopartgroup.h @@ -72,6 +72,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, LLVector2* tex_coord, diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 4dab213fa0..4dab213fa0 100755..100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index ee8e91fb71..ee8e91fb71 100755..100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index 79e1921f1b..897bace4e1 100755..100644 --- a/indra/newview/llvosurfacepatch.cpp +++ b/indra/newview/llvosurfacepatch.cpp @@ -936,7 +936,7 @@ void LLVOSurfacePatch::getGeomSizesEast(const S32 stride, const S32 east_stride, } } -BOOL LLVOSurfacePatch::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, S32 *face_hitp, +BOOL LLVOSurfacePatch::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp, LLVector4a* intersection,LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent) { diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h index 3383b16dd9..884dbb3be3 100755..100644 --- a/indra/newview/llvosurfacepatch.h +++ b/indra/newview/llvosurfacepatch.h @@ -84,6 +84,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 367fa21b91..4dcc267e96 100755..100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -1110,7 +1110,7 @@ void LLVOTree::updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax) mDrawable->setPositionGroup(pos); } -BOOL LLVOTree::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, S32 *face_hitp, +BOOL LLVOTree::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp, LLVector4a* intersection,LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent) { diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h index c862de8230..c16ed70bb4 100755..100644 --- a/indra/newview/llvotree.h +++ b/indra/newview/llvotree.h @@ -108,6 +108,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 0432f6f27c..b0eb60cc76 100755..100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1624,6 +1624,66 @@ static LLTrace::BlockTimerStatHandle FTM_GEN_FLEX("Generate Flexies"); static LLTrace::BlockTimerStatHandle FTM_UPDATE_PRIMITIVES("Update Primitives"); static LLTrace::BlockTimerStatHandle FTM_UPDATE_RIGGED_VOLUME("Update Rigged"); +bool LLVOVolume::lodOrSculptChanged(LLDrawable *drawable, BOOL &compiled) +{ + bool regen_faces = false; + + LLVolume *old_volumep, *new_volumep; + F32 old_lod, new_lod; + S32 old_num_faces, new_num_faces; + + old_volumep = getVolume(); + old_lod = old_volumep->getDetail(); + old_num_faces = old_volumep->getNumFaces(); + old_volumep = NULL; + + { + LL_RECORD_BLOCK_TIME(FTM_GEN_VOLUME); + const LLVolumeParams &volume_params = getVolume()->getParams(); + setVolume(volume_params, 0); + } + + new_volumep = getVolume(); + new_lod = new_volumep->getDetail(); + new_num_faces = new_volumep->getNumFaces(); + new_volumep = NULL; + + if ((new_lod != old_lod) || mSculptChanged) + { + compiled = TRUE; + sNumLODChanges += new_num_faces; + + if ((S32)getNumTEs() != getVolume()->getNumFaces()) + { + setNumTEs(getVolume()->getNumFaces()); //mesh loading may change number of faces. + } + + drawable->setState(LLDrawable::REBUILD_VOLUME); // for face->genVolumeTriangles() + + { + LL_RECORD_BLOCK_TIME(FTM_GEN_TRIANGLES); + regen_faces = new_num_faces != old_num_faces || mNumFaces != (S32)getNumTEs(); + if (regen_faces) + { + regenFaces(); + } + + if (mSculptChanged) + { //changes in sculpt maps can thrash an object bounding box without + //triggering a spatial group bounding box update -- force spatial group + //to update bounding boxes + LLSpatialGroup* group = mDrawable->getSpatialGroup(); + if (group) + { + group->unbound(); + } + } + } + } + + return regen_faces; +} + BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) { LL_RECORD_BLOCK_TIME(FTM_UPDATE_PRIMITIVES); @@ -1664,83 +1724,35 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) return TRUE; // No update to complete } - if (mVolumeChanged || mFaceMappingChanged ) + if (mVolumeChanged || mFaceMappingChanged) { dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); - compiled = TRUE; + bool was_regen_faces = false; if (mVolumeChanged) { - LL_RECORD_BLOCK_TIME(FTM_GEN_VOLUME); - LLVolumeParams volume_params = getVolume()->getParams(); - setVolume(volume_params, 0); + was_regen_faces = lodOrSculptChanged(drawable, compiled); drawable->setState(LLDrawable::REBUILD_VOLUME); } - + else if (mSculptChanged || mLODChanged) { + compiled = TRUE; + was_regen_faces = lodOrSculptChanged(drawable, compiled); + } + + if (!was_regen_faces) { LL_RECORD_BLOCK_TIME(FTM_GEN_TRIANGLES); regenFaces(); - genBBoxes(FALSE); } + + genBBoxes(FALSE); } - else if ((mLODChanged) || (mSculptChanged)) + else if (mLODChanged || mSculptChanged) { dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); - - LLVolume *old_volumep, *new_volumep; - F32 old_lod, new_lod; - S32 old_num_faces, new_num_faces ; - - old_volumep = getVolume(); - old_lod = old_volumep->getDetail(); - old_num_faces = old_volumep->getNumFaces() ; - old_volumep = NULL ; - - { - LL_RECORD_BLOCK_TIME(FTM_GEN_VOLUME); - LLVolumeParams volume_params = getVolume()->getParams(); - setVolume(volume_params, 0); - } - - new_volumep = getVolume(); - new_lod = new_volumep->getDetail(); - new_num_faces = new_volumep->getNumFaces() ; - new_volumep = NULL ; - - if ((new_lod != old_lod) || mSculptChanged) - { - compiled = TRUE; - sNumLODChanges += new_num_faces ; - - if((S32)getNumTEs() != getVolume()->getNumFaces()) - { - setNumTEs(getVolume()->getNumFaces()); //mesh loading may change number of faces. - } - - drawable->setState(LLDrawable::REBUILD_VOLUME); // for face->genVolumeTriangles() - - { - LL_RECORD_BLOCK_TIME(FTM_GEN_TRIANGLES); - if (new_num_faces != old_num_faces || mNumFaces != (S32)getNumTEs()) - { - regenFaces(); - } - genBBoxes(FALSE); - - if (mSculptChanged) - { //changes in sculpt maps can thrash an object bounding box without - //triggering a spatial group bounding box update -- force spatial group - //to update bounding boxes - LLSpatialGroup* group = mDrawable->getSpatialGroup(); - if (group) - { - group->unbound(); - } - } - } - } - + compiled = TRUE; + lodOrSculptChanged(drawable, compiled); genBBoxes(FALSE); } // it has its own drawable (it's moved) or it has changed UVs or it has changed xforms from global<->local @@ -3871,7 +3883,7 @@ LLVector3 LLVOVolume::volumeDirectionToAgent(const LLVector3& dir) const } -BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, S32 *face_hitp, +BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face, BOOL pick_transparent, BOOL pick_rigged, S32 *face_hitp, LLVector4a* intersection,LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent) { @@ -3890,9 +3902,9 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& if (mDrawable->isState(LLDrawable::RIGGED)) { - if (LLFloater::isVisible(gFloaterTools) && getAvatar()->isSelf()) + if ((pick_rigged) || ((getAvatar()->isSelf()) && (LLFloater::isVisible(gFloaterTools)))) { - updateRiggedVolume(); + updateRiggedVolume(true); volume = mRiggedVolume; transform = false; } @@ -4071,10 +4083,8 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& bool LLVOVolume::treatAsRigged() { - return LLFloater::isVisible(gFloaterTools) && - isAttachment() && - getAvatar() && - getAvatar()->isSelf() && + return isSelected() && + isAttachment() && mDrawable.notNull() && mDrawable->isState(LLDrawable::RIGGED); } @@ -4093,12 +4103,12 @@ void LLVOVolume::clearRiggedVolume() } } -void LLVOVolume::updateRiggedVolume() +void LLVOVolume::updateRiggedVolume(bool force_update) { //Update mRiggedVolume to match current animation frame of avatar. //Also update position/size in octree. - if (!treatAsRigged()) + if ((!force_update) && (!treatAsRigged())) { clearRiggedVolume(); @@ -4163,7 +4173,7 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons } //build matrix palette - static const size_t kMaxJoints = 64; + static const size_t kMaxJoints = 52; LLMatrix4a mp[kMaxJoints]; LLMatrix4* mat = (LLMatrix4*) mp; @@ -4172,6 +4182,12 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons for (U32 j = 0; j < maxJoints; ++j) { LLJoint* joint = avatar->getJoint(skin->mJointNames[j]); + if (!joint) + { + // Fall back to a point inside the avatar if mesh is + // rigged to an unknown joint. + joint = avatar->getJoint("mPelvis"); + } if (joint) { mat[j] = skin->mInvBindMatrix[j]; @@ -4216,8 +4232,9 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons wght[k] = w - floorf(w); scale += wght[k]; } - - wght *= 1.f/scale; + // This is enforced in unpackVolumeFaces() + llassert(scale>0.f); + wght *= 1.f / scale; for (U32 k = 0; k < 4; k++) { @@ -4225,9 +4242,9 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons LLMatrix4a src; // Insure ref'd bone is in our clamped array of mats - llassert(idx[k] < kMaxJoints); - // clamp k to kMaxJoints to avoid reading garbage off stack in release - src.setMul(mp[idx[(k < kMaxJoints) ? k : 0]], w); + // clamp idx to maxJoints to avoid reading garbage off stack in release + S32 index = llclamp((S32)idx[k],(S32)0,(S32)kMaxJoints-1); + src.setMul(mp[index], w); final_mat.add(src); } diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index bbaca316b0..a331908320 100755..100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -140,6 +140,7 @@ public: /*virtual*/ BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, S32 face = -1, // which face to check, -1 = ALL_SIDES BOOL pick_transparent = FALSE, + BOOL pick_rigged = FALSE, S32* face_hit = NULL, // which face was hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point @@ -312,7 +313,7 @@ public: //rigged volume update (for raycasting) - void updateRiggedVolume(); + void updateRiggedVolume(bool force_update = false); LLRiggedVolume* getRiggedVolume(); //returns true if volume should be treated as a rigged volume @@ -339,6 +340,10 @@ protected: void cleanUpMediaImpls(); void addMediaImpl(LLViewerMediaImpl* media_impl, S32 texture_index) ; void removeMediaImpl(S32 texture_index) ; + +private: + bool lodOrSculptChanged(LLDrawable *drawable, BOOL &compiled); + public: static S32 getRenderComplexityMax() {return mRenderComplexity_last;} diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp index 9ce16a1674..9ce16a1674 100755..100644 --- a/indra/newview/llvowater.cpp +++ b/indra/newview/llvowater.cpp diff --git a/indra/newview/llvowater.h b/indra/newview/llvowater.h index 7a8d819215..7a8d819215 100755..100644 --- a/indra/newview/llvowater.h +++ b/indra/newview/llvowater.h diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index 90bc6509a6..90bc6509a6 100755..100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp diff --git a/indra/newview/llvowlsky.h b/indra/newview/llvowlsky.h index 1d419b5fea..1d419b5fea 100755..100644 --- a/indra/newview/llvowlsky.h +++ b/indra/newview/llvowlsky.h diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp index 7b5bcf4db0..7b5bcf4db0 100755..100644 --- a/indra/newview/llwatchdog.cpp +++ b/indra/newview/llwatchdog.cpp diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h index fee3ec6f20..fee3ec6f20 100755..100644 --- a/indra/newview/llwatchdog.h +++ b/indra/newview/llwatchdog.h diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index 374792193c..374792193c 100755..100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h index dc7d41be2a..dc7d41be2a 100755..100644 --- a/indra/newview/llwaterparammanager.h +++ b/indra/newview/llwaterparammanager.h diff --git a/indra/newview/llwaterparamset.cpp b/indra/newview/llwaterparamset.cpp index 9cc91d2246..9cc91d2246 100755..100644 --- a/indra/newview/llwaterparamset.cpp +++ b/indra/newview/llwaterparamset.cpp diff --git a/indra/newview/llwaterparamset.h b/indra/newview/llwaterparamset.h index 368cb0ccba..368cb0ccba 100755..100644 --- a/indra/newview/llwaterparamset.h +++ b/indra/newview/llwaterparamset.h diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index fac0fd63ee..f8981d0c51 100755..100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -35,6 +35,7 @@ #include "llappearancemgr.h" #include "llinventoryfunctions.h" #include "llinventoryicon.h" +#include "llgesturemgr.h" #include "lltransutil.h" #include "llviewerattachmenu.h" #include "llvoavatarself.h" @@ -55,7 +56,8 @@ bool LLFindOutfitItems::operator()(LLInventoryCategory* cat, { if((item->getType() == LLAssetType::AT_CLOTHING) || (item->getType() == LLAssetType::AT_BODYPART) - || (item->getType() == LLAssetType::AT_OBJECT)) + || (item->getType() == LLAssetType::AT_OBJECT) + || (item->getType() == LLAssetType::AT_GESTURE)) { return TRUE; } @@ -124,7 +126,7 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name, // We don't use get_is_item_worn() here because this update is triggered by // an inventory observer upon link in COF beind added or removed so actual // worn status of a linked item may still remain unchanged. - if (mWornIndicationEnabled && LLAppearanceMgr::instance().isLinkInCOF(mInventoryItemUUID)) + if (mWornIndicationEnabled && LLAppearanceMgr::instance().isLinkedInCOF(mInventoryItemUUID)) { search_label += LLTrans::getString("worn"); item_state = IS_WORN; @@ -491,6 +493,7 @@ LLWearableItemTypeNameComparator::LLWearableItemTypeNameComparator() mWearableOrder[LLAssetType::AT_CLOTHING] = LLWearableTypeOrder(ORDER_RANK_1, false, false); mWearableOrder[LLAssetType::AT_OBJECT] = LLWearableTypeOrder(ORDER_RANK_2, true, true); mWearableOrder[LLAssetType::AT_BODYPART] = LLWearableTypeOrder(ORDER_RANK_3, false, true); + mWearableOrder[LLAssetType::AT_GESTURE] = LLWearableTypeOrder(ORDER_RANK_4, true, false); } void LLWearableItemTypeNameComparator::setOrder(LLAssetType::EType items_of_type, LLWearableItemTypeNameComparator::ETypeListOrder order_priority, bool sort_asset_items_by_name, bool sort_wearable_items_by_name) @@ -894,13 +897,13 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu setMenuItemVisible(menu, "wear_wear", n_already_worn == 0 && n_worn == 0 && can_be_worn); setMenuItemEnabled(menu, "wear_wear", n_already_worn == 0 && n_worn == 0); setMenuItemVisible(menu, "wear_add", wear_add_visible); - setMenuItemEnabled(menu, "wear_add", canAddWearables(ids)); + setMenuItemEnabled(menu, "wear_add", LLAppearanceMgr::instance().canAddWearables(ids)); setMenuItemVisible(menu, "wear_replace", n_worn == 0 && n_already_worn != 0 && can_be_worn); //visible only when one item selected and this item is worn setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1); setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1); setMenuItemVisible(menu, "create_new", mask & (MASK_CLOTHING|MASK_BODYPART) && n_items == 1); - setMenuItemEnabled(menu, "create_new", canAddWearables(ids)); + setMenuItemEnabled(menu, "create_new", LLAppearanceMgr::instance().canAddWearables(ids)); setMenuItemVisible(menu, "show_original", !standalone); setMenuItemEnabled(menu, "show_original", n_items == 1 && n_links == n_items); setMenuItemVisible(menu, "take_off", mask == MASK_CLOTHING && n_worn == n_items); @@ -989,6 +992,10 @@ void LLWearableItemsList::ContextMenu::updateMask(U32& mask, LLAssetType::EType { mask |= MASK_ATTACHMENT; } + else if (at == LLAssetType::AT_GESTURE) + { + mask |= MASK_GESTURE; + } else { mask |= MASK_UNKNOWN; @@ -1004,65 +1011,4 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id) LLAgentWearables::createWearable(item->getWearableType(), true); } -// Returns true if all the given objects and clothes can be added. -// static -bool LLWearableItemsList::ContextMenu::canAddWearables(const uuid_vec_t& item_ids) -{ - // TODO: investigate wearables may not be loaded at this point EXT-8231 - - U32 n_objects = 0; - boost::unordered_map<LLWearableType::EType, U32> clothes_by_type; - - // Count given clothes (by wearable type) and objects. - for (uuid_vec_t::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it) - { - LLViewerInventoryItem* item = gInventory.getItem(*it); - if (!item) - { - return false; - } - - if (item->getType() == LLAssetType::AT_OBJECT) - { - ++n_objects; - } - else if (item->getType() == LLAssetType::AT_CLOTHING) - { - ++clothes_by_type[item->getWearableType()]; - } - else - { - LL_WARNS() << "Unexpected wearable type" << LL_ENDL; - return false; - } - } - - // Check whether we can add all the objects. - if (!isAgentAvatarValid() || !gAgentAvatarp->canAttachMoreObjects(n_objects)) - { - return false; - } - - // Check whether we can add all the clothes. - boost::unordered_map<LLWearableType::EType, U32>::const_iterator m_it; - for (m_it = clothes_by_type.begin(); m_it != clothes_by_type.end(); ++m_it) - { - LLWearableType::EType w_type = m_it->first; - U32 n_clothes = m_it->second; - - U32 wearable_count = gAgentWearables.getWearableCount(w_type); - if ((wearable_count > 0) && !LLWearableType::getAllowMultiwear(w_type)) - { - return false; - } - if ((wearable_count + n_clothes) > LLAgentWearables::MAX_CLOTHING_PER_TYPE) - { - return false; - } - - } - - return true; -} - // EOF diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index c731a7d6cf..df4b1a8a50 100755..100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -310,6 +310,7 @@ public: ORDER_RANK_1 = 1, ORDER_RANK_2, ORDER_RANK_3, + ORDER_RANK_4, ORDER_RANK_UNKNOWN }; @@ -419,7 +420,8 @@ public: MASK_CLOTHING = 0x01, MASK_BODYPART = 0x02, MASK_ATTACHMENT = 0x04, - MASK_UNKNOWN = 0x08, + MASK_GESTURE = 0x08, + MASK_UNKNOWN = 0x16, }; /* virtual */ LLContextMenu* createMenu(); @@ -429,7 +431,6 @@ public: static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val); static void updateMask(U32& mask, LLAssetType::EType at); static void createNewWearable(const LLUUID& item_id); - static bool canAddWearables(const uuid_vec_t& item_ids); LLWearableItemsList* mParent; }; diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index b61fbbd073..b61fbbd073 100755..100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h index d6f0fd09a6..d6f0fd09a6 100755..100644 --- a/indra/newview/llwearablelist.h +++ b/indra/newview/llwearablelist.h diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 0be6e49834..b37e41fb85 100755..100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -234,6 +234,9 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, //static bool LLWeb::useExternalBrowser(const std::string &url) { +#ifdef EXTERNAL_TOS + return true; +#else if (gSavedSettings.getU32("PreferredBrowserBehavior") == BROWSER_EXTERNAL_ONLY) { return true; @@ -250,4 +253,5 @@ bool LLWeb::useExternalBrowser(const std::string &url) return !(boost::regex_search(uri_string, matches, pattern)); } return false; +#endif } diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index 7c90badbfe..7c90badbfe 100755..100644 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp index ddb7f7bfce..ddb7f7bfce 100755..100644 --- a/indra/newview/llwebprofile.cpp +++ b/indra/newview/llwebprofile.cpp diff --git a/indra/newview/llwebprofile.h b/indra/newview/llwebprofile.h index 10279bffac..10279bffac 100755..100644 --- a/indra/newview/llwebprofile.h +++ b/indra/newview/llwebprofile.h diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp index 4c39fb5b74..4c39fb5b74 100755..100644 --- a/indra/newview/llwind.cpp +++ b/indra/newview/llwind.cpp diff --git a/indra/newview/llwind.h b/indra/newview/llwind.h index e73d1baa58..e73d1baa58 100755..100644 --- a/indra/newview/llwind.h +++ b/indra/newview/llwind.h diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp index eff70ca0b2..eff70ca0b2 100755..100644 --- a/indra/newview/llwindebug.cpp +++ b/indra/newview/llwindebug.cpp diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h index a3cbf6dc03..a3cbf6dc03 100755..100644 --- a/indra/newview/llwindebug.h +++ b/indra/newview/llwindebug.h diff --git a/indra/newview/llwindowlistener.cpp b/indra/newview/llwindowlistener.cpp index 734018cfc2..5367262bb6 100755..100644 --- a/indra/newview/llwindowlistener.cpp +++ b/indra/newview/llwindowlistener.cpp @@ -55,7 +55,7 @@ LLWindowListener::LLWindowListener(LLViewerWindow *window, const KeyboardGetter& "Given [\"keysym\"], [\"keycode\"] or [\"char\"], inject the specified "; std::string keyExplain = "(integer keycode values, or keysym string from any addKeyName() call in\n" - "http://hg.secondlife.com/viewer-development/src/tip/indra/llwindow/llkeyboard.cpp )\n"; + "http://bitbucket.org/lindenlab/viewer-release/src/tip/indra/llwindow/llkeyboard.cpp )\n"; std::string mask = "Specify optional [\"mask\"] as an array containing any of \"CTL\", \"ALT\",\n" "\"SHIFT\" or \"MAC_CONTROL\"; the corresponding modifier bits will be combined\n" @@ -70,7 +70,7 @@ LLWindowListener::LLWindowListener(LLViewerWindow *window, const KeyboardGetter& "(button values \"LEFT\", \"MIDDLE\", \"RIGHT\")\n"; std::string paramsExplain = "[\"path\"] is as for LLUI::resolvePath(), described in\n" - "http://hg.secondlife.com/viewer-development/src/tip/indra/llui/llui.h\n" + "http://bitbucket.org/lindenlab/viewer-release/src/tip/indra/llui/llui.h\n" "If you omit [\"path\"], you must specify both [\"x\"] and [\"y\"].\n" "If you specify [\"path\"] without both [\"x\"] and [\"y\"], will synthesize (x, y)\n" "in the center of the LLView selected by [\"path\"].\n" diff --git a/indra/newview/llwindowlistener.h b/indra/newview/llwindowlistener.h index 7af5ab3b9f..7af5ab3b9f 100755..100644 --- a/indra/newview/llwindowlistener.h +++ b/indra/newview/llwindowlistener.h diff --git a/indra/newview/llwlanimator.cpp b/indra/newview/llwlanimator.cpp index 2142885767..2142885767 100755..100644 --- a/indra/newview/llwlanimator.cpp +++ b/indra/newview/llwlanimator.cpp diff --git a/indra/newview/llwlanimator.h b/indra/newview/llwlanimator.h index 810f4cf7e5..810f4cf7e5 100755..100644 --- a/indra/newview/llwlanimator.h +++ b/indra/newview/llwlanimator.h diff --git a/indra/newview/llwldaycycle.cpp b/indra/newview/llwldaycycle.cpp index 88079c5d26..88079c5d26 100755..100644 --- a/indra/newview/llwldaycycle.cpp +++ b/indra/newview/llwldaycycle.cpp diff --git a/indra/newview/llwldaycycle.h b/indra/newview/llwldaycycle.h index c8585564ed..c8585564ed 100755..100644 --- a/indra/newview/llwldaycycle.h +++ b/indra/newview/llwldaycycle.h diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp index 3bedfbe502..3bedfbe502 100755..100644 --- a/indra/newview/llwlhandlers.cpp +++ b/indra/newview/llwlhandlers.cpp diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h index 089c799da7..089c799da7 100755..100644 --- a/indra/newview/llwlhandlers.h +++ b/indra/newview/llwlhandlers.h diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index 2b6d88efef..2b6d88efef 100755..100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h index e13aed98ed..e13aed98ed 100755..100644 --- a/indra/newview/llwlparammanager.h +++ b/indra/newview/llwlparammanager.h diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp index 066cb9a0ac..066cb9a0ac 100755..100644 --- a/indra/newview/llwlparamset.cpp +++ b/indra/newview/llwlparamset.cpp diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h index 6e5f1d3a4b..6e5f1d3a4b 100755..100644 --- a/indra/newview/llwlparamset.h +++ b/indra/newview/llwlparamset.h diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 5d657f7eef..5d657f7eef 100755..100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index b2d8418064..b2d8418064 100755..100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index bfae142812..837b30586b 100755..100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -383,6 +383,7 @@ void LLWorldMap::reloadItems(bool force) LLWorldMapMessage::getInstance()->sendItemRequest(MAP_ITEM_MATURE_EVENT); LLWorldMapMessage::getInstance()->sendItemRequest(MAP_ITEM_ADULT_EVENT); LLWorldMapMessage::getInstance()->sendItemRequest(MAP_ITEM_LAND_FOR_SALE); + LLWorldMapMessage::getInstance()->sendItemRequest(MAP_ITEM_LAND_FOR_SALE_ADULT); } } diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 1a168e4b4d..1a168e4b4d 100755..100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp index 865292fa90..865292fa90 100755..100644 --- a/indra/newview/llworldmapmessage.cpp +++ b/indra/newview/llworldmapmessage.cpp diff --git a/indra/newview/llworldmapmessage.h b/indra/newview/llworldmapmessage.h index ac1ea1607c..ac1ea1607c 100755..100644 --- a/indra/newview/llworldmapmessage.h +++ b/indra/newview/llworldmapmessage.h diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 62fad32246..62fad32246 100755..100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h index a2a6dc53fb..a2a6dc53fb 100755..100644 --- a/indra/newview/llworldmapview.h +++ b/indra/newview/llworldmapview.h diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp index 895ccaef5a..895ccaef5a 100755..100644 --- a/indra/newview/llworldmipmap.cpp +++ b/indra/newview/llworldmipmap.cpp diff --git a/indra/newview/llworldmipmap.h b/indra/newview/llworldmipmap.h index 963aac1403..963aac1403 100755..100644 --- a/indra/newview/llworldmipmap.h +++ b/indra/newview/llworldmipmap.h diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp index 97a9eb7f5f..97a9eb7f5f 100755..100644 --- a/indra/newview/llxmlrpclistener.cpp +++ b/indra/newview/llxmlrpclistener.cpp diff --git a/indra/newview/llxmlrpclistener.h b/indra/newview/llxmlrpclistener.h index 58b38ce1cf..58b38ce1cf 100755..100644 --- a/indra/newview/llxmlrpclistener.h +++ b/indra/newview/llxmlrpclistener.h diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index c12c2cc24c..c12c2cc24c 100755..100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp diff --git a/indra/newview/llxmlrpctransaction.h b/indra/newview/llxmlrpctransaction.h index f2589c7f41..f2589c7f41 100755..100644 --- a/indra/newview/llxmlrpctransaction.h +++ b/indra/newview/llxmlrpctransaction.h diff --git a/indra/newview/macmain.h b/indra/newview/macmain.h index 11c909a8c3..11c909a8c3 100755..100644 --- a/indra/newview/macmain.h +++ b/indra/newview/macmain.h diff --git a/indra/newview/macutil_Prefix.h b/indra/newview/macutil_Prefix.h index b8df961cac..b8df961cac 100755..100644 --- a/indra/newview/macutil_Prefix.h +++ b/indra/newview/macutil_Prefix.h diff --git a/indra/newview/macview_Prefix.h b/indra/newview/macview_Prefix.h index 5936197a85..5936197a85 100755..100644 --- a/indra/newview/macview_Prefix.h +++ b/indra/newview/macview_Prefix.h diff --git a/indra/newview/nl.lproj/language.txt b/indra/newview/nl.lproj/language.txt index d5f5c2a19c..d5f5c2a19c 100755..100644 --- a/indra/newview/nl.lproj/language.txt +++ b/indra/newview/nl.lproj/language.txt diff --git a/indra/newview/noise.cpp b/indra/newview/noise.cpp index 5f2c718b49..5f2c718b49 100755..100644 --- a/indra/newview/noise.cpp +++ b/indra/newview/noise.cpp diff --git a/indra/newview/noise.h b/indra/newview/noise.h index b3efad73c5..b3efad73c5 100755..100644 --- a/indra/newview/noise.h +++ b/indra/newview/noise.h diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 03712c1065..3c58ce0c09 100755..100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7059,7 +7059,7 @@ LLVOPartGroup* LLPipeline::lineSegmentIntersectParticle(const LLVector4a& start, LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_PARTICLE); if (part && hasRenderType(part->mDrawableType)) { - LLDrawable* hit = part->lineSegmentIntersect(start, local_end, TRUE, face_hit, &position, NULL, NULL, NULL); + LLDrawable* hit = part->lineSegmentIntersect(start, local_end, TRUE, FALSE, face_hit, &position, NULL, NULL, NULL); if (hit) { drawable = hit; @@ -7085,7 +7085,8 @@ LLVOPartGroup* LLPipeline::lineSegmentIntersectParticle(const LLVector4a& start, } LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector4a& start, const LLVector4a& end, - BOOL pick_transparent, + BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, LLVector4a* intersection, // return the intersection point LLVector2* tex_coord, // return the texture coordinates of the intersection point @@ -7117,7 +7118,7 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector4a& start, LLSpatialPartition* part = region->getSpatialPartition(j); if (part && hasRenderType(part->mDrawableType)) { - LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, tangent); + LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, pick_rigged, face_hit, &position, tex_coord, normal, tangent); if (hit) { drawable = hit; @@ -7174,7 +7175,7 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector4a& start, LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_BRIDGE); if (part && hasRenderType(part->mDrawableType)) { - LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, tangent); + LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, pick_rigged, face_hit, &position, tex_coord, normal, tangent); if (hit) { LLVector4a delta; @@ -7262,7 +7263,7 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInHUD(const LLVector4a& start, c LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_HUD); if (part) { - LLDrawable* hit = part->lineSegmentIntersect(start, end, pick_transparent, face_hit, intersection, tex_coord, normal, tangent); + LLDrawable* hit = part->lineSegmentIntersect(start, end, pick_transparent, FALSE, face_hit, intersection, tex_coord, normal, tangent); if (hit) { drawable = hit; @@ -7709,7 +7710,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) LLVector4a result; result.clear(); - gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, + gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE, FALSE, NULL, &result); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index ce2f4b17b1..97e11a151f 100755..100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -183,6 +183,7 @@ public: //get the object between start and end that's closest to start. LLViewerObject* lineSegmentIntersectInWorld(const LLVector4a& start, const LLVector4a& end, BOOL pick_transparent, + BOOL pick_rigged, S32* face_hit, // return the face hit LLVector4a* intersection = NULL, // return the intersection point LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point diff --git a/indra/newview/pl.lproj/language.txt b/indra/newview/pl.lproj/language.txt index 55239f3c18..55239f3c18 100755..100644 --- a/indra/newview/pl.lproj/language.txt +++ b/indra/newview/pl.lproj/language.txt diff --git a/indra/newview/pt.lproj/language.txt b/indra/newview/pt.lproj/language.txt index 9e3340eca2..9e3340eca2 100755..100644 --- a/indra/newview/pt.lproj/language.txt +++ b/indra/newview/pt.lproj/language.txt diff --git a/indra/newview/res-sdl/arrow.BMP b/indra/newview/res-sdl/arrow.BMP Binary files differindex a8f6da64b5..a8f6da64b5 100755..100644 --- a/indra/newview/res-sdl/arrow.BMP +++ b/indra/newview/res-sdl/arrow.BMP diff --git a/indra/newview/res-sdl/arrowcop.BMP b/indra/newview/res-sdl/arrowcop.BMP Binary files differindex 1a26a0df34..1a26a0df34 100755..100644 --- a/indra/newview/res-sdl/arrowcop.BMP +++ b/indra/newview/res-sdl/arrowcop.BMP diff --git a/indra/newview/res-sdl/arrowcopmulti.BMP b/indra/newview/res-sdl/arrowcopmulti.BMP Binary files differindex 48f153cef6..48f153cef6 100755..100644 --- a/indra/newview/res-sdl/arrowcopmulti.BMP +++ b/indra/newview/res-sdl/arrowcopmulti.BMP diff --git a/indra/newview/res-sdl/arrowdrag.BMP b/indra/newview/res-sdl/arrowdrag.BMP Binary files differindex cd868eec20..cd868eec20 100755..100644 --- a/indra/newview/res-sdl/arrowdrag.BMP +++ b/indra/newview/res-sdl/arrowdrag.BMP diff --git a/indra/newview/res-sdl/circleandline.BMP b/indra/newview/res-sdl/circleandline.BMP Binary files differindex 284ae8b7d5..284ae8b7d5 100755..100644 --- a/indra/newview/res-sdl/circleandline.BMP +++ b/indra/newview/res-sdl/circleandline.BMP diff --git a/indra/newview/res-sdl/cross.BMP b/indra/newview/res-sdl/cross.BMP Binary files differindex 0b4672d4d6..0b4672d4d6 100755..100644 --- a/indra/newview/res-sdl/cross.BMP +++ b/indra/newview/res-sdl/cross.BMP diff --git a/indra/newview/res-sdl/hand.BMP b/indra/newview/res-sdl/hand.BMP Binary files differindex 2a092fbb7f..2a092fbb7f 100755..100644 --- a/indra/newview/res-sdl/hand.BMP +++ b/indra/newview/res-sdl/hand.BMP diff --git a/indra/newview/res-sdl/ibeam.BMP b/indra/newview/res-sdl/ibeam.BMP Binary files differindex 820904a228..820904a228 100755..100644 --- a/indra/newview/res-sdl/ibeam.BMP +++ b/indra/newview/res-sdl/ibeam.BMP diff --git a/indra/newview/res-sdl/llarrow.BMP b/indra/newview/res-sdl/llarrow.BMP Binary files differindex a8f6da64b5..a8f6da64b5 100755..100644 --- a/indra/newview/res-sdl/llarrow.BMP +++ b/indra/newview/res-sdl/llarrow.BMP diff --git a/indra/newview/res-sdl/llarrowdrag.BMP b/indra/newview/res-sdl/llarrowdrag.BMP Binary files differindex cd868eec20..cd868eec20 100755..100644 --- a/indra/newview/res-sdl/llarrowdrag.BMP +++ b/indra/newview/res-sdl/llarrowdrag.BMP diff --git a/indra/newview/res-sdl/llarrowdragmulti.BMP b/indra/newview/res-sdl/llarrowdragmulti.BMP Binary files differindex fb528bc92d..fb528bc92d 100755..100644 --- a/indra/newview/res-sdl/llarrowdragmulti.BMP +++ b/indra/newview/res-sdl/llarrowdragmulti.BMP diff --git a/indra/newview/res-sdl/llarrowlocked.BMP b/indra/newview/res-sdl/llarrowlocked.BMP Binary files differindex 0aaa441ab1..0aaa441ab1 100755..100644 --- a/indra/newview/res-sdl/llarrowlocked.BMP +++ b/indra/newview/res-sdl/llarrowlocked.BMP diff --git a/indra/newview/res-sdl/llgrablocked.BMP b/indra/newview/res-sdl/llgrablocked.BMP Binary files differindex 847439670f..847439670f 100755..100644 --- a/indra/newview/res-sdl/llgrablocked.BMP +++ b/indra/newview/res-sdl/llgrablocked.BMP diff --git a/indra/newview/res-sdl/llno.BMP b/indra/newview/res-sdl/llno.BMP Binary files differindex 284ae8b7d5..284ae8b7d5 100755..100644 --- a/indra/newview/res-sdl/llno.BMP +++ b/indra/newview/res-sdl/llno.BMP diff --git a/indra/newview/res-sdl/llnolocked.BMP b/indra/newview/res-sdl/llnolocked.BMP Binary files differindex 61f0170cb3..61f0170cb3 100755..100644 --- a/indra/newview/res-sdl/llnolocked.BMP +++ b/indra/newview/res-sdl/llnolocked.BMP diff --git a/indra/newview/res-sdl/lltoolcamera.BMP b/indra/newview/res-sdl/lltoolcamera.BMP Binary files differindex c961d7a49c..c961d7a49c 100755..100644 --- a/indra/newview/res-sdl/lltoolcamera.BMP +++ b/indra/newview/res-sdl/lltoolcamera.BMP diff --git a/indra/newview/res-sdl/lltoolcreate.BMP b/indra/newview/res-sdl/lltoolcreate.BMP Binary files differindex 08a4a9322d..08a4a9322d 100755..100644 --- a/indra/newview/res-sdl/lltoolcreate.BMP +++ b/indra/newview/res-sdl/lltoolcreate.BMP diff --git a/indra/newview/res-sdl/lltoolfocus.BMP b/indra/newview/res-sdl/lltoolfocus.BMP Binary files differindex afb90a95e3..afb90a95e3 100755..100644 --- a/indra/newview/res-sdl/lltoolfocus.BMP +++ b/indra/newview/res-sdl/lltoolfocus.BMP diff --git a/indra/newview/res-sdl/lltoolgrab.BMP b/indra/newview/res-sdl/lltoolgrab.BMP Binary files differindex f2ac68bf3c..f2ac68bf3c 100755..100644 --- a/indra/newview/res-sdl/lltoolgrab.BMP +++ b/indra/newview/res-sdl/lltoolgrab.BMP diff --git a/indra/newview/res-sdl/lltoolland.BMP b/indra/newview/res-sdl/lltoolland.BMP Binary files differindex 64e6365625..64e6365625 100755..100644 --- a/indra/newview/res-sdl/lltoolland.BMP +++ b/indra/newview/res-sdl/lltoolland.BMP diff --git a/indra/newview/res-sdl/lltoolpan.BMP b/indra/newview/res-sdl/lltoolpan.BMP Binary files differindex ffbef21ec7..ffbef21ec7 100755..100644 --- a/indra/newview/res-sdl/lltoolpan.BMP +++ b/indra/newview/res-sdl/lltoolpan.BMP diff --git a/indra/newview/res-sdl/lltoolpathfinding.BMP b/indra/newview/res-sdl/lltoolpathfinding.BMP Binary files differindex a567951b7a..a567951b7a 100755..100644 --- a/indra/newview/res-sdl/lltoolpathfinding.BMP +++ b/indra/newview/res-sdl/lltoolpathfinding.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathend.BMP b/indra/newview/res-sdl/lltoolpathfindingpathend.BMP Binary files differindex aacea8237f..aacea8237f 100755..100644 --- a/indra/newview/res-sdl/lltoolpathfindingpathend.BMP +++ b/indra/newview/res-sdl/lltoolpathfindingpathend.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP Binary files differindex fa19f3f105..fa19f3f105 100755..100644 --- a/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP +++ b/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP Binary files differindex 912b7f931a..912b7f931a 100755..100644 --- a/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP +++ b/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP Binary files differindex 4e8999ae0b..4e8999ae0b 100755..100644 --- a/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP +++ b/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP diff --git a/indra/newview/res-sdl/lltoolpipette.BMP b/indra/newview/res-sdl/lltoolpipette.BMP Binary files differindex 2d27118289..2d27118289 100755..100644 --- a/indra/newview/res-sdl/lltoolpipette.BMP +++ b/indra/newview/res-sdl/lltoolpipette.BMP diff --git a/indra/newview/res-sdl/lltoolrotate.BMP b/indra/newview/res-sdl/lltoolrotate.BMP Binary files differindex dd84673018..dd84673018 100755..100644 --- a/indra/newview/res-sdl/lltoolrotate.BMP +++ b/indra/newview/res-sdl/lltoolrotate.BMP diff --git a/indra/newview/res-sdl/lltoolscale.BMP b/indra/newview/res-sdl/lltoolscale.BMP Binary files differindex 882515e5e3..882515e5e3 100755..100644 --- a/indra/newview/res-sdl/lltoolscale.BMP +++ b/indra/newview/res-sdl/lltoolscale.BMP diff --git a/indra/newview/res-sdl/lltooltranslate.BMP b/indra/newview/res-sdl/lltooltranslate.BMP Binary files differindex d084f6a026..d084f6a026 100755..100644 --- a/indra/newview/res-sdl/lltooltranslate.BMP +++ b/indra/newview/res-sdl/lltooltranslate.BMP diff --git a/indra/newview/res-sdl/lltoolzoomin.BMP b/indra/newview/res-sdl/lltoolzoomin.BMP Binary files differindex e4e46cc702..e4e46cc702 100755..100644 --- a/indra/newview/res-sdl/lltoolzoomin.BMP +++ b/indra/newview/res-sdl/lltoolzoomin.BMP diff --git a/indra/newview/res-sdl/lltoolzoomout.BMP b/indra/newview/res-sdl/lltoolzoomout.BMP Binary files differindex 7f958383ab..7f958383ab 100755..100644 --- a/indra/newview/res-sdl/lltoolzoomout.BMP +++ b/indra/newview/res-sdl/lltoolzoomout.BMP diff --git a/indra/newview/res-sdl/sizenesw.BMP b/indra/newview/res-sdl/sizenesw.BMP Binary files differindex 559579f40e..559579f40e 100755..100644 --- a/indra/newview/res-sdl/sizenesw.BMP +++ b/indra/newview/res-sdl/sizenesw.BMP diff --git a/indra/newview/res-sdl/sizens.BMP b/indra/newview/res-sdl/sizens.BMP Binary files differindex 8373077dff..8373077dff 100755..100644 --- a/indra/newview/res-sdl/sizens.BMP +++ b/indra/newview/res-sdl/sizens.BMP diff --git a/indra/newview/res-sdl/sizenwse.BMP b/indra/newview/res-sdl/sizenwse.BMP Binary files differindex 6d069fa765..6d069fa765 100755..100644 --- a/indra/newview/res-sdl/sizenwse.BMP +++ b/indra/newview/res-sdl/sizenwse.BMP diff --git a/indra/newview/res-sdl/sizewe.BMP b/indra/newview/res-sdl/sizewe.BMP Binary files differindex 878df453a4..878df453a4 100755..100644 --- a/indra/newview/res-sdl/sizewe.BMP +++ b/indra/newview/res-sdl/sizewe.BMP diff --git a/indra/newview/res-sdl/toolbuy.BMP b/indra/newview/res-sdl/toolbuy.BMP Binary files differindex 07e9273721..07e9273721 100755..100644 --- a/indra/newview/res-sdl/toolbuy.BMP +++ b/indra/newview/res-sdl/toolbuy.BMP diff --git a/indra/newview/res-sdl/toolmediaopen.BMP b/indra/newview/res-sdl/toolmediaopen.BMP Binary files differindex ac4b231994..ac4b231994 100755..100644 --- a/indra/newview/res-sdl/toolmediaopen.BMP +++ b/indra/newview/res-sdl/toolmediaopen.BMP diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP Binary files differindex 5b87979304..5b87979304 100755..100644 --- a/indra/newview/res-sdl/toolopen.BMP +++ b/indra/newview/res-sdl/toolopen.BMP diff --git a/indra/newview/res-sdl/toolpause.BMP b/indra/newview/res-sdl/toolpause.BMP Binary files differindex dd2c6857d2..dd2c6857d2 100755..100644 --- a/indra/newview/res-sdl/toolpause.BMP +++ b/indra/newview/res-sdl/toolpause.BMP diff --git a/indra/newview/res-sdl/toolpickobject.BMP b/indra/newview/res-sdl/toolpickobject.BMP Binary files differindex 25469fc3a8..25469fc3a8 100755..100644 --- a/indra/newview/res-sdl/toolpickobject.BMP +++ b/indra/newview/res-sdl/toolpickobject.BMP diff --git a/indra/newview/res-sdl/toolpickobject2.BMP b/indra/newview/res-sdl/toolpickobject2.BMP Binary files differindex 09df69e675..09df69e675 100755..100644 --- a/indra/newview/res-sdl/toolpickobject2.BMP +++ b/indra/newview/res-sdl/toolpickobject2.BMP diff --git a/indra/newview/res-sdl/toolpickobject3.BMP b/indra/newview/res-sdl/toolpickobject3.BMP Binary files differindex fc28698050..fc28698050 100755..100644 --- a/indra/newview/res-sdl/toolpickobject3.BMP +++ b/indra/newview/res-sdl/toolpickobject3.BMP diff --git a/indra/newview/res-sdl/toolplay.BMP b/indra/newview/res-sdl/toolplay.BMP Binary files differindex 9c40d7dbec..9c40d7dbec 100755..100644 --- a/indra/newview/res-sdl/toolplay.BMP +++ b/indra/newview/res-sdl/toolplay.BMP diff --git a/indra/newview/res-sdl/toolsit.BMP b/indra/newview/res-sdl/toolsit.BMP Binary files differindex 8ce59ae97a..8ce59ae97a 100755..100644 --- a/indra/newview/res-sdl/toolsit.BMP +++ b/indra/newview/res-sdl/toolsit.BMP diff --git a/indra/newview/res-sdl/wait.BMP b/indra/newview/res-sdl/wait.BMP Binary files differindex 26dec59afe..26dec59afe 100755..100644 --- a/indra/newview/res-sdl/wait.BMP +++ b/indra/newview/res-sdl/wait.BMP diff --git a/indra/newview/res-sdl/working.BMP b/indra/newview/res-sdl/working.BMP Binary files differindex 26dec59afe..26dec59afe 100755..100644 --- a/indra/newview/res-sdl/working.BMP +++ b/indra/newview/res-sdl/working.BMP diff --git a/indra/newview/res/arrow.cur b/indra/newview/res/arrow.cur Binary files differindex d11b68867f..d11b68867f 100755..100644 --- a/indra/newview/res/arrow.cur +++ b/indra/newview/res/arrow.cur diff --git a/indra/newview/res/arrowcop.cur b/indra/newview/res/arrowcop.cur Binary files differindex 8b5902c13d..8b5902c13d 100755..100644 --- a/indra/newview/res/arrowcop.cur +++ b/indra/newview/res/arrowcop.cur diff --git a/indra/newview/res/arrowcopmulti.cur b/indra/newview/res/arrowcopmulti.cur Binary files differindex 2620522616..2620522616 100755..100644 --- a/indra/newview/res/arrowcopmulti.cur +++ b/indra/newview/res/arrowcopmulti.cur diff --git a/indra/newview/res/arrowdrag.cur b/indra/newview/res/arrowdrag.cur Binary files differindex 77b2d1a0fb..77b2d1a0fb 100755..100644 --- a/indra/newview/res/arrowdrag.cur +++ b/indra/newview/res/arrowdrag.cur diff --git a/indra/newview/res/bitmap2.bmp b/indra/newview/res/bitmap2.bmp Binary files differindex 770b07558c..770b07558c 100755..100644 --- a/indra/newview/res/bitmap2.bmp +++ b/indra/newview/res/bitmap2.bmp diff --git a/indra/newview/res/circleandline.cur b/indra/newview/res/circleandline.cur Binary files differindex 00050f5501..00050f5501 100755..100644 --- a/indra/newview/res/circleandline.cur +++ b/indra/newview/res/circleandline.cur diff --git a/indra/newview/res/icon1.ico b/indra/newview/res/icon1.ico Binary files differindex ad607598fa..ad607598fa 100755..100644 --- a/indra/newview/res/icon1.ico +++ b/indra/newview/res/icon1.ico diff --git a/indra/newview/res/install_icon.BMP b/indra/newview/res/install_icon.BMP Binary files differindex 09df573870..09df573870 100755..100644 --- a/indra/newview/res/install_icon.BMP +++ b/indra/newview/res/install_icon.BMP diff --git a/indra/newview/res/llarrow.cur b/indra/newview/res/llarrow.cur Binary files differindex 8a922d7f3f..8a922d7f3f 100755..100644 --- a/indra/newview/res/llarrow.cur +++ b/indra/newview/res/llarrow.cur diff --git a/indra/newview/res/llarrowdrag.cur b/indra/newview/res/llarrowdrag.cur Binary files differindex 77b2d1a0fb..77b2d1a0fb 100755..100644 --- a/indra/newview/res/llarrowdrag.cur +++ b/indra/newview/res/llarrowdrag.cur diff --git a/indra/newview/res/llarrowdragmulti.cur b/indra/newview/res/llarrowdragmulti.cur Binary files differindex f0853b899c..f0853b899c 100755..100644 --- a/indra/newview/res/llarrowdragmulti.cur +++ b/indra/newview/res/llarrowdragmulti.cur diff --git a/indra/newview/res/llarrowlocked.cur b/indra/newview/res/llarrowlocked.cur Binary files differindex 5b81f147ef..5b81f147ef 100755..100644 --- a/indra/newview/res/llarrowlocked.cur +++ b/indra/newview/res/llarrowlocked.cur diff --git a/indra/newview/res/llgrablocked.cur b/indra/newview/res/llgrablocked.cur Binary files differindex 73dea154e6..73dea154e6 100755..100644 --- a/indra/newview/res/llgrablocked.cur +++ b/indra/newview/res/llgrablocked.cur diff --git a/indra/newview/res/llno.cur b/indra/newview/res/llno.cur Binary files differindex 00050f5501..00050f5501 100755..100644 --- a/indra/newview/res/llno.cur +++ b/indra/newview/res/llno.cur diff --git a/indra/newview/res/llnolocked.cur b/indra/newview/res/llnolocked.cur Binary files differindex dfa4a05509..dfa4a05509 100755..100644 --- a/indra/newview/res/llnolocked.cur +++ b/indra/newview/res/llnolocked.cur diff --git a/indra/newview/res/lltoolcamera.cur b/indra/newview/res/lltoolcamera.cur Binary files differindex e0f19461c7..e0f19461c7 100755..100644 --- a/indra/newview/res/lltoolcamera.cur +++ b/indra/newview/res/lltoolcamera.cur diff --git a/indra/newview/res/lltoolcreate.cur b/indra/newview/res/lltoolcreate.cur Binary files differindex 716f328211..716f328211 100755..100644 --- a/indra/newview/res/lltoolcreate.cur +++ b/indra/newview/res/lltoolcreate.cur diff --git a/indra/newview/res/lltoolfocus.cur b/indra/newview/res/lltoolfocus.cur Binary files differindex 7b38ad3af9..7b38ad3af9 100755..100644 --- a/indra/newview/res/lltoolfocus.cur +++ b/indra/newview/res/lltoolfocus.cur diff --git a/indra/newview/res/lltoolgrab.cur b/indra/newview/res/lltoolgrab.cur Binary files differindex 4484001357..4484001357 100755..100644 --- a/indra/newview/res/lltoolgrab.cur +++ b/indra/newview/res/lltoolgrab.cur diff --git a/indra/newview/res/lltoolland.cur b/indra/newview/res/lltoolland.cur Binary files differindex e22ef6c73d..e22ef6c73d 100755..100644 --- a/indra/newview/res/lltoolland.cur +++ b/indra/newview/res/lltoolland.cur diff --git a/indra/newview/res/lltoolpan.cur b/indra/newview/res/lltoolpan.cur Binary files differindex 0a348669b6..0a348669b6 100755..100644 --- a/indra/newview/res/lltoolpan.cur +++ b/indra/newview/res/lltoolpan.cur diff --git a/indra/newview/res/lltoolpathfinding.cur b/indra/newview/res/lltoolpathfinding.cur Binary files differindex 2aba2daa45..2aba2daa45 100755..100644 --- a/indra/newview/res/lltoolpathfinding.cur +++ b/indra/newview/res/lltoolpathfinding.cur diff --git a/indra/newview/res/lltoolpathfindingpathend.cur b/indra/newview/res/lltoolpathfindingpathend.cur Binary files differindex e951a6956b..e951a6956b 100755..100644 --- a/indra/newview/res/lltoolpathfindingpathend.cur +++ b/indra/newview/res/lltoolpathfindingpathend.cur diff --git a/indra/newview/res/lltoolpathfindingpathendadd.cur b/indra/newview/res/lltoolpathfindingpathendadd.cur Binary files differindex 0bf3201b23..0bf3201b23 100755..100644 --- a/indra/newview/res/lltoolpathfindingpathendadd.cur +++ b/indra/newview/res/lltoolpathfindingpathendadd.cur diff --git a/indra/newview/res/lltoolpathfindingpathstart.cur b/indra/newview/res/lltoolpathfindingpathstart.cur Binary files differindex fecc716990..fecc716990 100755..100644 --- a/indra/newview/res/lltoolpathfindingpathstart.cur +++ b/indra/newview/res/lltoolpathfindingpathstart.cur diff --git a/indra/newview/res/lltoolpathfindingpathstartadd.cur b/indra/newview/res/lltoolpathfindingpathstartadd.cur Binary files differindex 45e23e5161..45e23e5161 100755..100644 --- a/indra/newview/res/lltoolpathfindingpathstartadd.cur +++ b/indra/newview/res/lltoolpathfindingpathstartadd.cur diff --git a/indra/newview/res/lltoolpipette.cur b/indra/newview/res/lltoolpipette.cur Binary files differindex b4780967f9..b4780967f9 100755..100644 --- a/indra/newview/res/lltoolpipette.cur +++ b/indra/newview/res/lltoolpipette.cur diff --git a/indra/newview/res/lltoolrotate.cur b/indra/newview/res/lltoolrotate.cur Binary files differindex adbadaee84..adbadaee84 100755..100644 --- a/indra/newview/res/lltoolrotate.cur +++ b/indra/newview/res/lltoolrotate.cur diff --git a/indra/newview/res/lltoolscale.cur b/indra/newview/res/lltoolscale.cur Binary files differindex 4b6d20bfad..4b6d20bfad 100755..100644 --- a/indra/newview/res/lltoolscale.cur +++ b/indra/newview/res/lltoolscale.cur diff --git a/indra/newview/res/lltooltranslate.cur b/indra/newview/res/lltooltranslate.cur Binary files differindex 2df80de0a6..2df80de0a6 100755..100644 --- a/indra/newview/res/lltooltranslate.cur +++ b/indra/newview/res/lltooltranslate.cur diff --git a/indra/newview/res/lltoolzoomin.cur b/indra/newview/res/lltoolzoomin.cur Binary files differindex 0b5d80101e..0b5d80101e 100755..100644 --- a/indra/newview/res/lltoolzoomin.cur +++ b/indra/newview/res/lltoolzoomin.cur diff --git a/indra/newview/res/lltoolzoomout.cur b/indra/newview/res/lltoolzoomout.cur Binary files differindex b33e68d1a6..b33e68d1a6 100755..100644 --- a/indra/newview/res/lltoolzoomout.cur +++ b/indra/newview/res/lltoolzoomout.cur diff --git a/indra/newview/res/loginbackground.bmp b/indra/newview/res/loginbackground.bmp Binary files differindex 288a0b0398..288a0b0398 100755..100644 --- a/indra/newview/res/loginbackground.bmp +++ b/indra/newview/res/loginbackground.bmp diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h index 01d90da971..01d90da971 100755..100644 --- a/indra/newview/res/resource.h +++ b/indra/newview/res/resource.h diff --git a/indra/newview/res/toolbuy.cur b/indra/newview/res/toolbuy.cur Binary files differindex 65bbf01d45..65bbf01d45 100755..100644 --- a/indra/newview/res/toolbuy.cur +++ b/indra/newview/res/toolbuy.cur diff --git a/indra/newview/res/toolmediaopen.cur b/indra/newview/res/toolmediaopen.cur Binary files differindex 7609989ba7..7609989ba7 100755..100644 --- a/indra/newview/res/toolmediaopen.cur +++ b/indra/newview/res/toolmediaopen.cur diff --git a/indra/newview/res/toolopen.cur b/indra/newview/res/toolopen.cur Binary files differindex 22ecbd5228..22ecbd5228 100755..100644 --- a/indra/newview/res/toolopen.cur +++ b/indra/newview/res/toolopen.cur diff --git a/indra/newview/res/toolpause.cur b/indra/newview/res/toolpause.cur Binary files differindex 7a6e85566b..7a6e85566b 100755..100644 --- a/indra/newview/res/toolpause.cur +++ b/indra/newview/res/toolpause.cur diff --git a/indra/newview/res/toolpickobject.cur b/indra/newview/res/toolpickobject.cur Binary files differindex ba482b5445..ba482b5445 100755..100644 --- a/indra/newview/res/toolpickobject.cur +++ b/indra/newview/res/toolpickobject.cur diff --git a/indra/newview/res/toolpickobject2.cur b/indra/newview/res/toolpickobject2.cur Binary files differindex b168f8d691..b168f8d691 100755..100644 --- a/indra/newview/res/toolpickobject2.cur +++ b/indra/newview/res/toolpickobject2.cur diff --git a/indra/newview/res/toolpickobject3.cur b/indra/newview/res/toolpickobject3.cur Binary files differindex 457c3a6555..457c3a6555 100755..100644 --- a/indra/newview/res/toolpickobject3.cur +++ b/indra/newview/res/toolpickobject3.cur diff --git a/indra/newview/res/toolpipette.cur b/indra/newview/res/toolpipette.cur Binary files differindex b4780967f9..b4780967f9 100755..100644 --- a/indra/newview/res/toolpipette.cur +++ b/indra/newview/res/toolpipette.cur diff --git a/indra/newview/res/toolplay.cur b/indra/newview/res/toolplay.cur Binary files differindex 0776a17bbc..0776a17bbc 100755..100644 --- a/indra/newview/res/toolplay.cur +++ b/indra/newview/res/toolplay.cur diff --git a/indra/newview/res/toolsit.cur b/indra/newview/res/toolsit.cur Binary files differindex d26b6f8638..d26b6f8638 100755..100644 --- a/indra/newview/res/toolsit.cur +++ b/indra/newview/res/toolsit.cur diff --git a/indra/newview/res/uninstall_icon.BMP b/indra/newview/res/uninstall_icon.BMP Binary files differindex 562b56676a..562b56676a 100755..100644 --- a/indra/newview/res/uninstall_icon.BMP +++ b/indra/newview/res/uninstall_icon.BMP diff --git a/indra/newview/roles_constants.h b/indra/newview/roles_constants.h index 8fd7978fa1..24792dd731 100644 --- a/indra/newview/roles_constants.h +++ b/indra/newview/roles_constants.h @@ -145,6 +145,9 @@ const U64 GP_SESSION_JOIN = 0x1LL << 16; //can join session const U64 GP_SESSION_VOICE = 0x1LL << 27; //can hear/talk const U64 GP_SESSION_MODERATOR = 0x1LL << 37; //can mute people's session +const U64 GP_EXPERIENCE_ADMIN = 0x1LL << 49; // has admin rights to any experiences owned by this group +const U64 GP_EXPERIENCE_CREATOR = 0x1LL << 50; // can sign scripts for experiences owned by this group + // Group Banning const U64 GP_GROUP_BAN_ACCESS = 0x1LL << 51; // Allows access to ban / un-ban agents from a group. diff --git a/indra/newview/ru.lproj/language.txt b/indra/newview/ru.lproj/language.txt index adc719b423..adc719b423 100755..100644 --- a/indra/newview/ru.lproj/language.txt +++ b/indra/newview/ru.lproj/language.txt diff --git a/indra/newview/secondlife.icns b/indra/newview/secondlife.icns Binary files differindex 4560d4bb24..4560d4bb24 100755..100644 --- a/indra/newview/secondlife.icns +++ b/indra/newview/secondlife.icns diff --git a/indra/newview/secondlife_firstlook.icns b/indra/newview/secondlife_firstlook.icns Binary files differindex 30497915c8..30497915c8 100755..100644 --- a/indra/newview/secondlife_firstlook.icns +++ b/indra/newview/secondlife_firstlook.icns diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index bdc884885f..8533625e50 100755..100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -873,8 +873,11 @@ <color name="ToolbarDropZoneColor" value=".48 .69 1 .5" /> - - <!-- Generic color names (legacy) --> + <color + name="PanelNotificationListItem" + value="0.3 0.3 0.3 .3" /> + + <!-- Generic color names (legacy) --> <color name="white" value="1 1 1 1"/> diff --git a/indra/newview/skins/default/html/btn_purplepill_bg.png b/indra/newview/skins/default/html/btn_purplepill_bg.png Binary files differindex b78127ae30..b78127ae30 100755..100644 --- a/indra/newview/skins/default/html/btn_purplepill_bg.png +++ b/indra/newview/skins/default/html/btn_purplepill_bg.png diff --git a/indra/newview/skins/default/html/da/loading/loading.html b/indra/newview/skins/default/html/da/loading/loading.html index 5f3426eb60..5f3426eb60 100755..100644 --- a/indra/newview/skins/default/html/da/loading/loading.html +++ b/indra/newview/skins/default/html/da/loading/loading.html diff --git a/indra/newview/skins/default/html/de/loading-error/index.html b/indra/newview/skins/default/html/de/loading-error/index.html index fbde825b4a..fbde825b4a 100755..100644 --- a/indra/newview/skins/default/html/de/loading-error/index.html +++ b/indra/newview/skins/default/html/de/loading-error/index.html diff --git a/indra/newview/skins/default/html/de/loading/loading.html b/indra/newview/skins/default/html/de/loading/loading.html index 44a621b216..44a621b216 100755..100644 --- a/indra/newview/skins/default/html/de/loading/loading.html +++ b/indra/newview/skins/default/html/de/loading/loading.html diff --git a/indra/newview/skins/default/html/en-us/help-offline/index.html b/indra/newview/skins/default/html/en-us/help-offline/index.html index bf3677603e..bf3677603e 100755..100644 --- a/indra/newview/skins/default/html/en-us/help-offline/index.html +++ b/indra/newview/skins/default/html/en-us/help-offline/index.html diff --git a/indra/newview/skins/default/html/en-us/loading-error/index.html b/indra/newview/skins/default/html/en-us/loading-error/index.html index 71f9c86f76..71f9c86f76 100755..100644 --- a/indra/newview/skins/default/html/en-us/loading-error/index.html +++ b/indra/newview/skins/default/html/en-us/loading-error/index.html diff --git a/indra/newview/skins/default/html/en-us/loading/loading.html b/indra/newview/skins/default/html/en-us/loading/loading.html index 1c62d2f73e..1c62d2f73e 100755..100644 --- a/indra/newview/skins/default/html/en-us/loading/loading.html +++ b/indra/newview/skins/default/html/en-us/loading/loading.html diff --git a/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif b/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif Binary files differindex e3ccc7c769..e3ccc7c769 100755..100644 --- a/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif +++ b/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif diff --git a/indra/newview/skins/default/html/es/loading-error/index.html b/indra/newview/skins/default/html/es/loading-error/index.html index c1e75bc475..c1e75bc475 100755..100644 --- a/indra/newview/skins/default/html/es/loading-error/index.html +++ b/indra/newview/skins/default/html/es/loading-error/index.html diff --git a/indra/newview/skins/default/html/es/loading/loading.html b/indra/newview/skins/default/html/es/loading/loading.html index c4260b34c0..c4260b34c0 100755..100644 --- a/indra/newview/skins/default/html/es/loading/loading.html +++ b/indra/newview/skins/default/html/es/loading/loading.html diff --git a/indra/newview/skins/default/html/fr/loading-error/index.html b/indra/newview/skins/default/html/fr/loading-error/index.html index 69c796cb55..69c796cb55 100755..100644 --- a/indra/newview/skins/default/html/fr/loading-error/index.html +++ b/indra/newview/skins/default/html/fr/loading-error/index.html diff --git a/indra/newview/skins/default/html/fr/loading/loading.html b/indra/newview/skins/default/html/fr/loading/loading.html index b3953448e9..b3953448e9 100755..100644 --- a/indra/newview/skins/default/html/fr/loading/loading.html +++ b/indra/newview/skins/default/html/fr/loading/loading.html diff --git a/indra/newview/skins/default/html/hu/loading/loading.html b/indra/newview/skins/default/html/hu/loading/loading.html index ab15a073ba..ab15a073ba 100755..100644 --- a/indra/newview/skins/default/html/hu/loading/loading.html +++ b/indra/newview/skins/default/html/hu/loading/loading.html diff --git a/indra/newview/skins/default/html/it/loading/loading.html b/indra/newview/skins/default/html/it/loading/loading.html index ab37e41f04..ab37e41f04 100755..100644 --- a/indra/newview/skins/default/html/it/loading/loading.html +++ b/indra/newview/skins/default/html/it/loading/loading.html diff --git a/indra/newview/skins/default/html/ja/loading-error/index.html b/indra/newview/skins/default/html/ja/loading-error/index.html index d969c03098..d969c03098 100755..100644 --- a/indra/newview/skins/default/html/ja/loading-error/index.html +++ b/indra/newview/skins/default/html/ja/loading-error/index.html diff --git a/indra/newview/skins/default/html/ja/loading/loading.html b/indra/newview/skins/default/html/ja/loading/loading.html index 35cf74a35f..35cf74a35f 100755..100644 --- a/indra/newview/skins/default/html/ja/loading/loading.html +++ b/indra/newview/skins/default/html/ja/loading/loading.html diff --git a/indra/newview/skins/default/html/ko/loading-error/index.html b/indra/newview/skins/default/html/ko/loading-error/index.html index 02b87132b9..02b87132b9 100755..100644 --- a/indra/newview/skins/default/html/ko/loading-error/index.html +++ b/indra/newview/skins/default/html/ko/loading-error/index.html diff --git a/indra/newview/skins/default/html/nl/loading/loading.html b/indra/newview/skins/default/html/nl/loading/loading.html index 0215bd7e47..0215bd7e47 100755..100644 --- a/indra/newview/skins/default/html/nl/loading/loading.html +++ b/indra/newview/skins/default/html/nl/loading/loading.html diff --git a/indra/newview/skins/default/html/pl/loading/loading.html b/indra/newview/skins/default/html/pl/loading/loading.html index 50f3dfb0c5..50f3dfb0c5 100755..100644 --- a/indra/newview/skins/default/html/pl/loading/loading.html +++ b/indra/newview/skins/default/html/pl/loading/loading.html diff --git a/indra/newview/skins/default/html/pt/loading-error/index.html b/indra/newview/skins/default/html/pt/loading-error/index.html index 7f17b3a7bf..7f17b3a7bf 100755..100644 --- a/indra/newview/skins/default/html/pt/loading-error/index.html +++ b/indra/newview/skins/default/html/pt/loading-error/index.html diff --git a/indra/newview/skins/default/html/pt/loading/loading.html b/indra/newview/skins/default/html/pt/loading/loading.html index a83e1123d0..a83e1123d0 100755..100644 --- a/indra/newview/skins/default/html/pt/loading/loading.html +++ b/indra/newview/skins/default/html/pt/loading/loading.html diff --git a/indra/newview/skins/default/html/ru/loading/loading.html b/indra/newview/skins/default/html/ru/loading/loading.html index 892c0b9f7f..892c0b9f7f 100755..100644 --- a/indra/newview/skins/default/html/ru/loading/loading.html +++ b/indra/newview/skins/default/html/ru/loading/loading.html diff --git a/indra/newview/skins/default/html/tr/loading/loading.html b/indra/newview/skins/default/html/tr/loading/loading.html index 1ac07bff34..1ac07bff34 100755..100644 --- a/indra/newview/skins/default/html/tr/loading/loading.html +++ b/indra/newview/skins/default/html/tr/loading/loading.html diff --git a/indra/newview/skins/default/html/uk/loading/loading.html b/indra/newview/skins/default/html/uk/loading/loading.html index 3b5b8679b4..3b5b8679b4 100755..100644 --- a/indra/newview/skins/default/html/uk/loading/loading.html +++ b/indra/newview/skins/default/html/uk/loading/loading.html diff --git a/indra/newview/skins/default/html/unabletoconnect.png b/indra/newview/skins/default/html/unabletoconnect.png Binary files differindex 1383516509..1383516509 100755..100644 --- a/indra/newview/skins/default/html/unabletoconnect.png +++ b/indra/newview/skins/default/html/unabletoconnect.png diff --git a/indra/newview/skins/default/html/zh/loading-error/index.html b/indra/newview/skins/default/html/zh/loading-error/index.html index 97201318ff..97201318ff 100755..100644 --- a/indra/newview/skins/default/html/zh/loading-error/index.html +++ b/indra/newview/skins/default/html/zh/loading-error/index.html diff --git a/indra/newview/skins/default/html/zh/loading/loading.html b/indra/newview/skins/default/html/zh/loading/loading.html index d1d5d25c92..d1d5d25c92 100755..100644 --- a/indra/newview/skins/default/html/zh/loading/loading.html +++ b/indra/newview/skins/default/html/zh/loading/loading.html diff --git a/indra/newview/skins/default/textures/Blank.png b/indra/newview/skins/default/textures/Blank.png Binary files differindex f38e9f9100..f38e9f9100 100755..100644 --- a/indra/newview/skins/default/textures/Blank.png +++ b/indra/newview/skins/default/textures/Blank.png diff --git a/indra/newview/skins/default/textures/Rounded_Rect.png b/indra/newview/skins/default/textures/Rounded_Rect.png Binary files differindex c270c28039..c270c28039 100755..100644 --- a/indra/newview/skins/default/textures/Rounded_Rect.png +++ b/indra/newview/skins/default/textures/Rounded_Rect.png diff --git a/indra/newview/skins/default/textures/alpha_gradient.tga b/indra/newview/skins/default/textures/alpha_gradient.tga Binary files differindex 6fdba25d4e..6fdba25d4e 100755..100644 --- a/indra/newview/skins/default/textures/alpha_gradient.tga +++ b/indra/newview/skins/default/textures/alpha_gradient.tga diff --git a/indra/newview/skins/default/textures/alpha_gradient_2d.j2c b/indra/newview/skins/default/textures/alpha_gradient_2d.j2c Binary files differindex 5de5a80a65..5de5a80a65 100755..100644 --- a/indra/newview/skins/default/textures/alpha_gradient_2d.j2c +++ b/indra/newview/skins/default/textures/alpha_gradient_2d.j2c diff --git a/indra/newview/skins/default/textures/arrow_down.tga b/indra/newview/skins/default/textures/arrow_down.tga Binary files differindex 81dc9d3b6c..81dc9d3b6c 100755..100644 --- a/indra/newview/skins/default/textures/arrow_down.tga +++ b/indra/newview/skins/default/textures/arrow_down.tga diff --git a/indra/newview/skins/default/textures/arrow_up.tga b/indra/newview/skins/default/textures/arrow_up.tga Binary files differindex 22195cf7fb..22195cf7fb 100755..100644 --- a/indra/newview/skins/default/textures/arrow_up.tga +++ b/indra/newview/skins/default/textures/arrow_up.tga diff --git a/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png b/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png Binary files differindex 84cc2159c1..84cc2159c1 100755..100644 --- a/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png +++ b/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png diff --git a/indra/newview/skins/default/textures/badge_note.j2c b/indra/newview/skins/default/textures/badge_note.j2c Binary files differindex 1ab5233faf..1ab5233faf 100755..100644 --- a/indra/newview/skins/default/textures/badge_note.j2c +++ b/indra/newview/skins/default/textures/badge_note.j2c diff --git a/indra/newview/skins/default/textures/badge_ok.j2c b/indra/newview/skins/default/textures/badge_ok.j2c Binary files differindex f85b880f1d..f85b880f1d 100755..100644 --- a/indra/newview/skins/default/textures/badge_ok.j2c +++ b/indra/newview/skins/default/textures/badge_ok.j2c diff --git a/indra/newview/skins/default/textures/badge_warn.j2c b/indra/newview/skins/default/textures/badge_warn.j2c Binary files differindex 26437ca426..26437ca426 100755..100644 --- a/indra/newview/skins/default/textures/badge_warn.j2c +++ b/indra/newview/skins/default/textures/badge_warn.j2c diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png Binary files differindex 6b725e153a..6b725e153a 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png Binary files differindex 9f22080d13..9f22080d13 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png Binary files differindex 5b2a8eb339..5b2a8eb339 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png Binary files differindex 9acf7053d5..9acf7053d5 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png Binary files differindex 00158a7bc2..00158a7bc2 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png Binary files differindex 3748f5e190..3748f5e190 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png Binary files differindex 2b50986780..2b50986780 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png Binary files differindex c49b8f9a27..c49b8f9a27 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png Binary files differindex bc8c4db04d..bc8c4db04d 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png Binary files differindex b919a0a152..b919a0a152 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png Binary files differindex de9da359a0..de9da359a0 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png Binary files differindex c8560c0869..c8560c0869 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png Binary files differindex b09f7c64d3..b09f7c64d3 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png Binary files differindex ae2c57c207..ae2c57c207 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png Binary files differindex c5cd8cca92..c5cd8cca92 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png diff --git a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png Binary files differindex 50239c8af8..50239c8af8 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png +++ b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png diff --git a/indra/newview/skins/default/textures/bottomtray/DownArrow.png b/indra/newview/skins/default/textures/bottomtray/DownArrow.png Binary files differindex 82f58b22b9..82f58b22b9 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/DownArrow.png +++ b/indra/newview/skins/default/textures/bottomtray/DownArrow.png diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png Binary files differindex 8d32cad95f..8d32cad95f 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png Binary files differindex 4c98e35868..4c98e35868 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png Binary files differindex fade065ce7..fade065ce7 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png Binary files differindex e2eb38e12d..e2eb38e12d 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png Binary files differindex f314d4e001..f314d4e001 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png Binary files differindex 4dddc2b391..4dddc2b391 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png Binary files differindex 9f31d461b5..9f31d461b5 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png Binary files differindex 2893c9a9f1..2893c9a9f1 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png Binary files differindex f7ed4c25fb..f7ed4c25fb 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png Binary files differindex 80d227b6a7..80d227b6a7 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png Binary files differindex d0a825a682..d0a825a682 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png Binary files differindex 3602efa9d9..3602efa9d9 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png Binary files differindex 2f81fb1588..2f81fb1588 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png Binary files differindex 9c3fc37dfe..9c3fc37dfe 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png Binary files differindex 4f86e81a15..4f86e81a15 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png Binary files differindex 282e8d62de..282e8d62de 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png Binary files differindex b211371e64..b211371e64 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png Binary files differindex 5039e57c32..5039e57c32 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png Binary files differindex e937c3f012..e937c3f012 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png Binary files differindex a49c43c2cf..a49c43c2cf 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png Binary files differindex ed4902f3ee..ed4902f3ee 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png Binary files differindex eb2f3dbaa4..eb2f3dbaa4 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png +++ b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png Binary files differindex e9dea7e17e..e9dea7e17e 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_On.png b/indra/newview/skins/default/textures/bottomtray/Object_View_On.png Binary files differindex 7a348ba22e..7a348ba22e 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Object_View_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Object_View_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png Binary files differindex 53efa3a9a9..53efa3a9a9 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png Binary files differindex 4ab4bbe4af..4ab4bbe4af 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png Binary files differindex e8fe243dc7..e8fe243dc7 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png +++ b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png Binary files differindex cd18ae310d..cd18ae310d 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png +++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png Binary files differindex b0ed6ee8eb..b0ed6ee8eb 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png +++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png Binary files differindex 14ec77b99a..14ec77b99a 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png +++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png Binary files differindex 48be51e9af..48be51e9af 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png Binary files differindex be4881b64c..be4881b64c 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png +++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png Binary files differindex 6cb33efb93..6cb33efb93 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png Binary files differindex 6cb33efb93..6cb33efb93 100755..100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cone.png b/indra/newview/skins/default/textures/build/Object_Cone.png Binary files differindex 5167f1a820..5167f1a820 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cone.png +++ b/indra/newview/skins/default/textures/build/Object_Cone.png diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png Binary files differindex d50dc69ffe..d50dc69ffe 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cube.png b/indra/newview/skins/default/textures/build/Object_Cube.png Binary files differindex e82af1ca82..e82af1ca82 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cube.png +++ b/indra/newview/skins/default/textures/build/Object_Cube.png diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png Binary files differindex 3d6964530d..3d6964530d 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder.png b/indra/newview/skins/default/textures/build/Object_Cylinder.png Binary files differindex fe1041d4c7..fe1041d4c7 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cylinder.png +++ b/indra/newview/skins/default/textures/build/Object_Cylinder.png diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png Binary files differindex 3ed0389961..3ed0389961 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Grass.png b/indra/newview/skins/default/textures/build/Object_Grass.png Binary files differindex a88efd5f3e..a88efd5f3e 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Grass.png +++ b/indra/newview/skins/default/textures/build/Object_Grass.png diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png Binary files differindex 3ebd5ea7a1..3ebd5ea7a1 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png Binary files differindex 595f64d480..595f64d480 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png Binary files differindex 3bdc4d1fd5..3bdc4d1fd5 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png Binary files differindex dd41d56fb3..dd41d56fb3 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png Binary files differindex 0912442e29..0912442e29 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png Binary files differindex 1489630624..1489630624 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png Binary files differindex 33db4a2de8..33db4a2de8 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Prism.png b/indra/newview/skins/default/textures/build/Object_Prism.png Binary files differindex 51c6c161a0..51c6c161a0 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Prism.png +++ b/indra/newview/skins/default/textures/build/Object_Prism.png diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png Binary files differindex 9e80fe2b84..9e80fe2b84 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid.png b/indra/newview/skins/default/textures/build/Object_Pyramid.png Binary files differindex a147b59553..a147b59553 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Pyramid.png +++ b/indra/newview/skins/default/textures/build/Object_Pyramid.png diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png Binary files differindex d36bfa55d4..d36bfa55d4 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Ring.png b/indra/newview/skins/default/textures/build/Object_Ring.png Binary files differindex a9790fd60c..a9790fd60c 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Ring.png +++ b/indra/newview/skins/default/textures/build/Object_Ring.png diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png Binary files differindex 962f6efb93..962f6efb93 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Sphere.png b/indra/newview/skins/default/textures/build/Object_Sphere.png Binary files differindex 8e2dd92a82..8e2dd92a82 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Sphere.png +++ b/indra/newview/skins/default/textures/build/Object_Sphere.png diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png Binary files differindex 715d597144..715d597144 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron.png Binary files differindex 23e22b1796..23e22b1796 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tetrahedron.png +++ b/indra/newview/skins/default/textures/build/Object_Tetrahedron.png diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png Binary files differindex b2ea680f23..b2ea680f23 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Torus.png b/indra/newview/skins/default/textures/build/Object_Torus.png Binary files differindex 15c62423a9..15c62423a9 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Torus.png +++ b/indra/newview/skins/default/textures/build/Object_Torus.png diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png Binary files differindex 1fc22686eb..1fc22686eb 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tree.png b/indra/newview/skins/default/textures/build/Object_Tree.png Binary files differindex 82c422419b..82c422419b 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tree.png +++ b/indra/newview/skins/default/textures/build/Object_Tree.png diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png Binary files differindex 5bd87f8a2f..5bd87f8a2f 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tube.png b/indra/newview/skins/default/textures/build/Object_Tube.png Binary files differindex e47fce7511..e47fce7511 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tube.png +++ b/indra/newview/skins/default/textures/build/Object_Tube.png diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png Binary files differindex a4c3f39e14..a4c3f39e14 100755..100644 --- a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png +++ b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png diff --git a/indra/newview/skins/default/textures/build/Tool_Create.png b/indra/newview/skins/default/textures/build/Tool_Create.png Binary files differindex 1f1097def5..1f1097def5 100755..100644 --- a/indra/newview/skins/default/textures/build/Tool_Create.png +++ b/indra/newview/skins/default/textures/build/Tool_Create.png diff --git a/indra/newview/skins/default/textures/build/Tool_Dozer.png b/indra/newview/skins/default/textures/build/Tool_Dozer.png Binary files differindex 61744666f4..61744666f4 100755..100644 --- a/indra/newview/skins/default/textures/build/Tool_Dozer.png +++ b/indra/newview/skins/default/textures/build/Tool_Dozer.png diff --git a/indra/newview/skins/default/textures/build/Tool_Face.png b/indra/newview/skins/default/textures/build/Tool_Face.png Binary files differindex 5ab42a4ad6..5ab42a4ad6 100755..100644 --- a/indra/newview/skins/default/textures/build/Tool_Face.png +++ b/indra/newview/skins/default/textures/build/Tool_Face.png diff --git a/indra/newview/skins/default/textures/build/Tool_Grab.png b/indra/newview/skins/default/textures/build/Tool_Grab.png Binary files differindex 5c58288d5e..5c58288d5e 100755..100644 --- a/indra/newview/skins/default/textures/build/Tool_Grab.png +++ b/indra/newview/skins/default/textures/build/Tool_Grab.png diff --git a/indra/newview/skins/default/textures/build/Tool_Zoom.png b/indra/newview/skins/default/textures/build/Tool_Zoom.png Binary files differindex ad493b0d66..ad493b0d66 100755..100644 --- a/indra/newview/skins/default/textures/build/Tool_Zoom.png +++ b/indra/newview/skins/default/textures/build/Tool_Zoom.png diff --git a/indra/newview/skins/default/textures/button_anim_pause.tga b/indra/newview/skins/default/textures/button_anim_pause.tga Binary files differindex 577f9195d0..577f9195d0 100755..100644 --- a/indra/newview/skins/default/textures/button_anim_pause.tga +++ b/indra/newview/skins/default/textures/button_anim_pause.tga diff --git a/indra/newview/skins/default/textures/button_anim_pause_selected.tga b/indra/newview/skins/default/textures/button_anim_pause_selected.tga Binary files differindex 21384316a8..21384316a8 100755..100644 --- a/indra/newview/skins/default/textures/button_anim_pause_selected.tga +++ b/indra/newview/skins/default/textures/button_anim_pause_selected.tga diff --git a/indra/newview/skins/default/textures/button_anim_play.tga b/indra/newview/skins/default/textures/button_anim_play.tga Binary files differindex 9ed55f829d..9ed55f829d 100755..100644 --- a/indra/newview/skins/default/textures/button_anim_play.tga +++ b/indra/newview/skins/default/textures/button_anim_play.tga diff --git a/indra/newview/skins/default/textures/button_anim_play_selected.tga b/indra/newview/skins/default/textures/button_anim_play_selected.tga Binary files differindex b166a4178d..b166a4178d 100755..100644 --- a/indra/newview/skins/default/textures/button_anim_play_selected.tga +++ b/indra/newview/skins/default/textures/button_anim_play_selected.tga diff --git a/indra/newview/skins/default/textures/checker.png b/indra/newview/skins/default/textures/checker.png Binary files differindex 1ab87e3f02..1ab87e3f02 100755..100644 --- a/indra/newview/skins/default/textures/checker.png +++ b/indra/newview/skins/default/textures/checker.png diff --git a/indra/newview/skins/default/textures/cloud-particle.j2c b/indra/newview/skins/default/textures/cloud-particle.j2c Binary files differindex 6c03bf6d05..6c03bf6d05 100755..100644 --- a/indra/newview/skins/default/textures/cloud-particle.j2c +++ b/indra/newview/skins/default/textures/cloud-particle.j2c diff --git a/indra/newview/skins/default/textures/color_swatch_alpha.tga b/indra/newview/skins/default/textures/color_swatch_alpha.tga Binary files differindex 814a004e62..814a004e62 100755..100644 --- a/indra/newview/skins/default/textures/color_swatch_alpha.tga +++ b/indra/newview/skins/default/textures/color_swatch_alpha.tga diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png Binary files differindex 19c842b816..19c842b816 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png +++ b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png Binary files differindex b9879dcc8a..b9879dcc8a 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png +++ b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png Binary files differindex d506cda5c9..d506cda5c9 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png +++ b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png Binary files differindex 08f7493a02..08f7493a02 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png +++ b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_Off.png b/indra/newview/skins/default/textures/containers/Accordion_Off.png Binary files differindex 414f4509c6..414f4509c6 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_Off.png +++ b/indra/newview/skins/default/textures/containers/Accordion_Off.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_Over.png b/indra/newview/skins/default/textures/containers/Accordion_Over.png Binary files differindex 5416d73310..5416d73310 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_Over.png +++ b/indra/newview/skins/default/textures/containers/Accordion_Over.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_Press.png b/indra/newview/skins/default/textures/containers/Accordion_Press.png Binary files differindex 1578e0dfc5..1578e0dfc5 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_Press.png +++ b/indra/newview/skins/default/textures/containers/Accordion_Press.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_Selected.png b/indra/newview/skins/default/textures/containers/Accordion_Selected.png Binary files differindex 0616dea6a3..0616dea6a3 100755..100644 --- a/indra/newview/skins/default/textures/containers/Accordion_Selected.png +++ b/indra/newview/skins/default/textures/containers/Accordion_Selected.png diff --git a/indra/newview/skins/default/textures/containers/Container.png b/indra/newview/skins/default/textures/containers/Container.png Binary files differindex 511eb94386..511eb94386 100755..100644 --- a/indra/newview/skins/default/textures/containers/Container.png +++ b/indra/newview/skins/default/textures/containers/Container.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png Binary files differindex 1951413f8d..1951413f8d 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png Binary files differindex 8364716e02..8364716e02 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png Binary files differindex 21f1c2d8a8..21f1c2d8a8 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png Binary files differindex 3946917c7c..3946917c7c 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png Binary files differindex eeef28e5a5..eeef28e5a5 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png Binary files differindex b0f1f16398..b0f1f16398 100755..100644 --- a/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png +++ b/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png Binary files differindex 9f1e2a469d..9f1e2a469d 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png Binary files differindex 41b5d24d87..41b5d24d87 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png Binary files differindex 083acc0156..083acc0156 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png Binary files differindex ee4649a8f9..ee4649a8f9 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png Binary files differindex dd73d655e9..dd73d655e9 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png Binary files differindex 55c02160e3..55c02160e3 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png Binary files differindex 2f6ea90196..2f6ea90196 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png Binary files differindex 642113b135..642113b135 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png Binary files differindex f6b775c2a0..f6b775c2a0 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png Binary files differindex 01fd765c3d..01fd765c3d 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png Binary files differindex 74e00635f1..74e00635f1 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png Binary files differindex 8a0d98a780..8a0d98a780 100755..100644 --- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png +++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png diff --git a/indra/newview/skins/default/textures/crosshairs.tga b/indra/newview/skins/default/textures/crosshairs.tga Binary files differindex ac4d63dc59..ac4d63dc59 100755..100644 --- a/indra/newview/skins/default/textures/crosshairs.tga +++ b/indra/newview/skins/default/textures/crosshairs.tga diff --git a/indra/newview/skins/default/textures/default_land_picture.j2c b/indra/newview/skins/default/textures/default_land_picture.j2c Binary files differindex 34df0291ae..34df0291ae 100755..100644 --- a/indra/newview/skins/default/textures/default_land_picture.j2c +++ b/indra/newview/skins/default/textures/default_land_picture.j2c diff --git a/indra/newview/skins/default/textures/default_profile_picture.j2c b/indra/newview/skins/default/textures/default_profile_picture.j2c Binary files differindex f21742cf09..f21742cf09 100755..100644 --- a/indra/newview/skins/default/textures/default_profile_picture.j2c +++ b/indra/newview/skins/default/textures/default_profile_picture.j2c diff --git a/indra/newview/skins/default/textures/direction_arrow.tga b/indra/newview/skins/default/textures/direction_arrow.tga Binary files differindex f3ef1068c4..f3ef1068c4 100755..100644 --- a/indra/newview/skins/default/textures/direction_arrow.tga +++ b/indra/newview/skins/default/textures/direction_arrow.tga diff --git a/indra/newview/skins/default/textures/down_arrow.png b/indra/newview/skins/default/textures/down_arrow.png Binary files differindex 21a0fc5ec0..21a0fc5ec0 100755..100644 --- a/indra/newview/skins/default/textures/down_arrow.png +++ b/indra/newview/skins/default/textures/down_arrow.png diff --git a/indra/newview/skins/default/textures/eye_button_active.tga b/indra/newview/skins/default/textures/eye_button_active.tga Binary files differindex 014f785a7b..014f785a7b 100755..100644 --- a/indra/newview/skins/default/textures/eye_button_active.tga +++ b/indra/newview/skins/default/textures/eye_button_active.tga diff --git a/indra/newview/skins/default/textures/eye_button_inactive.tga b/indra/newview/skins/default/textures/eye_button_inactive.tga Binary files differindex 8666f0bbe6..8666f0bbe6 100755..100644 --- a/indra/newview/skins/default/textures/eye_button_inactive.tga +++ b/indra/newview/skins/default/textures/eye_button_inactive.tga diff --git a/indra/newview/skins/default/textures/folder_arrow.tga b/indra/newview/skins/default/textures/folder_arrow.tga Binary files differindex 77d470731b..77d470731b 100755..100644 --- a/indra/newview/skins/default/textures/folder_arrow.tga +++ b/indra/newview/skins/default/textures/folder_arrow.tga diff --git a/indra/newview/skins/default/textures/foot_shadow.j2c b/indra/newview/skins/default/textures/foot_shadow.j2c Binary files differindex f9ce9da7d1..f9ce9da7d1 100755..100644 --- a/indra/newview/skins/default/textures/foot_shadow.j2c +++ b/indra/newview/skins/default/textures/foot_shadow.j2c diff --git a/indra/newview/skins/default/textures/green_checkmark.png b/indra/newview/skins/default/textures/green_checkmark.png Binary files differindex d2a5b348dc..d2a5b348dc 100755..100644 --- a/indra/newview/skins/default/textures/green_checkmark.png +++ b/indra/newview/skins/default/textures/green_checkmark.png diff --git a/indra/newview/skins/default/textures/icn_media_movie.tga b/indra/newview/skins/default/textures/icn_media_movie.tga Binary files differindex 43dd342c9d..43dd342c9d 100755..100644 --- a/indra/newview/skins/default/textures/icn_media_movie.tga +++ b/indra/newview/skins/default/textures/icn_media_movie.tga diff --git a/indra/newview/skins/default/textures/icn_media_web.tga b/indra/newview/skins/default/textures/icn_media_web.tga Binary files differindex 7c9131dfff..7c9131dfff 100755..100644 --- a/indra/newview/skins/default/textures/icn_media_web.tga +++ b/indra/newview/skins/default/textures/icn_media_web.tga diff --git a/indra/newview/skins/default/textures/icon_avatar_offline.tga b/indra/newview/skins/default/textures/icon_avatar_offline.tga Binary files differindex cfa95eb00e..cfa95eb00e 100755..100644 --- a/indra/newview/skins/default/textures/icon_avatar_offline.tga +++ b/indra/newview/skins/default/textures/icon_avatar_offline.tga diff --git a/indra/newview/skins/default/textures/icon_avatar_online.tga b/indra/newview/skins/default/textures/icon_avatar_online.tga Binary files differindex 45221213eb..45221213eb 100755..100644 --- a/indra/newview/skins/default/textures/icon_avatar_online.tga +++ b/indra/newview/skins/default/textures/icon_avatar_online.tga diff --git a/indra/newview/skins/default/textures/icon_diurnal.tga b/indra/newview/skins/default/textures/icon_diurnal.tga Binary files differindex fc720c8269..fc720c8269 100755..100644 --- a/indra/newview/skins/default/textures/icon_diurnal.tga +++ b/indra/newview/skins/default/textures/icon_diurnal.tga diff --git a/indra/newview/skins/default/textures/icon_for_sale_adult.tga b/indra/newview/skins/default/textures/icon_for_sale_adult.tga Binary files differindex 6a99188f87..6a99188f87 100755..100644 --- a/indra/newview/skins/default/textures/icon_for_sale_adult.tga +++ b/indra/newview/skins/default/textures/icon_for_sale_adult.tga diff --git a/indra/newview/skins/default/textures/icon_top_pick.tga b/indra/newview/skins/default/textures/icon_top_pick.tga Binary files differindex 0b34882d2f..0b34882d2f 100755..100644 --- a/indra/newview/skins/default/textures/icon_top_pick.tga +++ b/indra/newview/skins/default/textures/icon_top_pick.tga diff --git a/indra/newview/skins/default/textures/icons/AddItem_Disabled.png b/indra/newview/skins/default/textures/icons/AddItem_Disabled.png Binary files differindex cf88c89ae5..cf88c89ae5 100755..100644 --- a/indra/newview/skins/default/textures/icons/AddItem_Disabled.png +++ b/indra/newview/skins/default/textures/icons/AddItem_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/AddItem_Off.png b/indra/newview/skins/default/textures/icons/AddItem_Off.png Binary files differindex 52d4f9bc80..52d4f9bc80 100755..100644 --- a/indra/newview/skins/default/textures/icons/AddItem_Off.png +++ b/indra/newview/skins/default/textures/icons/AddItem_Off.png diff --git a/indra/newview/skins/default/textures/icons/AddItem_Press.png b/indra/newview/skins/default/textures/icons/AddItem_Press.png Binary files differindex acc898e5f4..acc898e5f4 100755..100644 --- a/indra/newview/skins/default/textures/icons/AddItem_Press.png +++ b/indra/newview/skins/default/textures/icons/AddItem_Press.png diff --git a/indra/newview/skins/default/textures/icons/AudioMute_Off.png b/indra/newview/skins/default/textures/icons/AudioMute_Off.png Binary files differindex 938aaef491..938aaef491 100755..100644 --- a/indra/newview/skins/default/textures/icons/AudioMute_Off.png +++ b/indra/newview/skins/default/textures/icons/AudioMute_Off.png diff --git a/indra/newview/skins/default/textures/icons/AudioMute_Over.png b/indra/newview/skins/default/textures/icons/AudioMute_Over.png Binary files differindex 7bd1b12aae..7bd1b12aae 100755..100644 --- a/indra/newview/skins/default/textures/icons/AudioMute_Over.png +++ b/indra/newview/skins/default/textures/icons/AudioMute_Over.png diff --git a/indra/newview/skins/default/textures/icons/Audio_Off.png b/indra/newview/skins/default/textures/icons/Audio_Off.png Binary files differindex ef746aab92..ef746aab92 100755..100644 --- a/indra/newview/skins/default/textures/icons/Audio_Off.png +++ b/indra/newview/skins/default/textures/icons/Audio_Off.png diff --git a/indra/newview/skins/default/textures/icons/Audio_Press.png b/indra/newview/skins/default/textures/icons/Audio_Press.png Binary files differindex 25a669224a..25a669224a 100755..100644 --- a/indra/newview/skins/default/textures/icons/Audio_Press.png +++ b/indra/newview/skins/default/textures/icons/Audio_Press.png diff --git a/indra/newview/skins/default/textures/icons/BackArrow_Off.png b/indra/newview/skins/default/textures/icons/BackArrow_Off.png Binary files differindex ff32192856..ff32192856 100755..100644 --- a/indra/newview/skins/default/textures/icons/BackArrow_Off.png +++ b/indra/newview/skins/default/textures/icons/BackArrow_Off.png diff --git a/indra/newview/skins/default/textures/icons/Conv_log_inbox.png b/indra/newview/skins/default/textures/icons/Conv_log_inbox.png Binary files differindex bb6ca28147..bb6ca28147 100755..100644 --- a/indra/newview/skins/default/textures/icons/Conv_log_inbox.png +++ b/indra/newview/skins/default/textures/icons/Conv_log_inbox.png diff --git a/indra/newview/skins/default/textures/icons/Copy.png b/indra/newview/skins/default/textures/icons/Copy.png Binary files differindex d45134e9dd..d45134e9dd 100755..100644 --- a/indra/newview/skins/default/textures/icons/Copy.png +++ b/indra/newview/skins/default/textures/icons/Copy.png diff --git a/indra/newview/skins/default/textures/icons/DownArrow_Off.png b/indra/newview/skins/default/textures/icons/DownArrow_Off.png Binary files differindex 60f62eed4a..60f62eed4a 100755..100644 --- a/indra/newview/skins/default/textures/icons/DownArrow_Off.png +++ b/indra/newview/skins/default/textures/icons/DownArrow_Off.png diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.png Binary files differindex 42f8466969..42f8466969 100755..100644 --- a/indra/newview/skins/default/textures/icons/Edit_Wrench.png +++ b/indra/newview/skins/default/textures/icons/Edit_Wrench.png diff --git a/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png b/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png Binary files differindex 69646ce473..69646ce473 100755..100644 --- a/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png +++ b/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png diff --git a/indra/newview/skins/default/textures/icons/Female.png b/indra/newview/skins/default/textures/icons/Female.png Binary files differindex 67b5653a94..67b5653a94 100755..100644 --- a/indra/newview/skins/default/textures/icons/Female.png +++ b/indra/newview/skins/default/textures/icons/Female.png diff --git a/indra/newview/skins/default/textures/icons/ForSale_Badge.png b/indra/newview/skins/default/textures/icons/ForSale_Badge.png Binary files differindex 5bee570cee..5bee570cee 100755..100644 --- a/indra/newview/skins/default/textures/icons/ForSale_Badge.png +++ b/indra/newview/skins/default/textures/icons/ForSale_Badge.png diff --git a/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png b/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png Binary files differindex e9b72b0401..e9b72b0401 100755..100644 --- a/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png +++ b/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png diff --git a/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png b/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png Binary files differindex c7b2c769ae..c7b2c769ae 100755..100644 --- a/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png +++ b/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Group.png b/indra/newview/skins/default/textures/icons/Generic_Group.png Binary files differindex 9d76f75d0f..9d76f75d0f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Generic_Group.png +++ b/indra/newview/skins/default/textures/icons/Generic_Group.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png Binary files differindex 46ee6dfe2c..46ee6dfe2c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png +++ b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Object_Small.png b/indra/newview/skins/default/textures/icons/Generic_Object_Small.png Binary files differindex 223874e631..223874e631 100755..100644 --- a/indra/newview/skins/default/textures/icons/Generic_Object_Small.png +++ b/indra/newview/skins/default/textures/icons/Generic_Object_Small.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Person.png b/indra/newview/skins/default/textures/icons/Generic_Person.png Binary files differindex e1411354af..e1411354af 100755..100644 --- a/indra/newview/skins/default/textures/icons/Generic_Person.png +++ b/indra/newview/skins/default/textures/icons/Generic_Person.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Person_Large.png b/indra/newview/skins/default/textures/icons/Generic_Person_Large.png Binary files differindex 532288b430..532288b430 100755..100644 --- a/indra/newview/skins/default/textures/icons/Generic_Person_Large.png +++ b/indra/newview/skins/default/textures/icons/Generic_Person_Large.png diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png Binary files differindex fb370f98d5..fb370f98d5 100755..100644 --- a/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png +++ b/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png Binary files differindex ae8c8b4c1a..ae8c8b4c1a 100755..100644 --- a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png +++ b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png diff --git a/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png b/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png Binary files differnew file mode 100644 index 0000000000..0732a33d93 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png diff --git a/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png b/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png Binary files differnew file mode 100644 index 0000000000..8124554902 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png diff --git a/indra/newview/skins/default/textures/icons/Icon_For_Sale.png b/indra/newview/skins/default/textures/icons/Icon_For_Sale.png Binary files differindex 3dec6b989c..3dec6b989c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Icon_For_Sale.png +++ b/indra/newview/skins/default/textures/icons/Icon_For_Sale.png diff --git a/indra/newview/skins/default/textures/icons/Icon_Notification_Condense.png b/indra/newview/skins/default/textures/icons/Icon_Notification_Condense.png Binary files differnew file mode 100644 index 0000000000..4d245eb57a --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Notification_Condense.png diff --git a/indra/newview/skins/default/textures/icons/Icon_Notification_Expand.png b/indra/newview/skins/default/textures/icons/Icon_Notification_Expand.png Binary files differnew file mode 100644 index 0000000000..186822da43 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Notification_Expand.png diff --git a/indra/newview/skins/default/textures/icons/Info.png b/indra/newview/skins/default/textures/icons/Info.png Binary files differindex e52560281b..e52560281b 100755..100644 --- a/indra/newview/skins/default/textures/icons/Info.png +++ b/indra/newview/skins/default/textures/icons/Info.png diff --git a/indra/newview/skins/default/textures/icons/Info_Over.png b/indra/newview/skins/default/textures/icons/Info_Over.png Binary files differindex be1cd0706f..be1cd0706f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Info_Over.png +++ b/indra/newview/skins/default/textures/icons/Info_Over.png diff --git a/indra/newview/skins/default/textures/icons/Info_Small.png b/indra/newview/skins/default/textures/icons/Info_Small.png Binary files differindex 81078c32dc..81078c32dc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Info_Small.png +++ b/indra/newview/skins/default/textures/icons/Info_Small.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Alpha.png b/indra/newview/skins/default/textures/icons/Inv_Alpha.png Binary files differindex b65dc1929d..b65dc1929d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Alpha.png +++ b/indra/newview/skins/default/textures/icons/Inv_Alpha.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Animation.png b/indra/newview/skins/default/textures/icons/Inv_Animation.png Binary files differindex ab42c61a92..ab42c61a92 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Animation.png +++ b/indra/newview/skins/default/textures/icons/Inv_Animation.png diff --git a/indra/newview/skins/default/textures/icons/Inv_BodyShape.png b/indra/newview/skins/default/textures/icons/Inv_BodyShape.png Binary files differindex 97e874d70d..97e874d70d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_BodyShape.png +++ b/indra/newview/skins/default/textures/icons/Inv_BodyShape.png diff --git a/indra/newview/skins/default/textures/icons/Inv_CallingCard.png b/indra/newview/skins/default/textures/icons/Inv_CallingCard.png Binary files differindex 1de96475f7..1de96475f7 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_CallingCard.png +++ b/indra/newview/skins/default/textures/icons/Inv_CallingCard.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Clothing.png b/indra/newview/skins/default/textures/icons/Inv_Clothing.png Binary files differindex e8d246c6fa..e8d246c6fa 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Clothing.png +++ b/indra/newview/skins/default/textures/icons/Inv_Clothing.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Eye.png b/indra/newview/skins/default/textures/icons/Inv_Eye.png Binary files differindex e619f56c2b..e619f56c2b 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Eye.png +++ b/indra/newview/skins/default/textures/icons/Inv_Eye.png diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png Binary files differindex 342a973d00..342a973d00 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png Binary files differindex 0507c2cbaf..0507c2cbaf 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Gesture.png b/indra/newview/skins/default/textures/icons/Inv_Gesture.png Binary files differindex 52695ec19b..52695ec19b 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Gesture.png +++ b/indra/newview/skins/default/textures/icons/Inv_Gesture.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Gloves.png b/indra/newview/skins/default/textures/icons/Inv_Gloves.png Binary files differindex d6a2113aaf..d6a2113aaf 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Gloves.png +++ b/indra/newview/skins/default/textures/icons/Inv_Gloves.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Hair.png b/indra/newview/skins/default/textures/icons/Inv_Hair.png Binary files differindex ae941b0dd5..ae941b0dd5 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Hair.png +++ b/indra/newview/skins/default/textures/icons/Inv_Hair.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Invalid.png b/indra/newview/skins/default/textures/icons/Inv_Invalid.png Binary files differindex 328be104ee..328be104ee 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Invalid.png +++ b/indra/newview/skins/default/textures/icons/Inv_Invalid.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Jacket.png b/indra/newview/skins/default/textures/icons/Inv_Jacket.png Binary files differindex 3859666f7c..3859666f7c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Jacket.png +++ b/indra/newview/skins/default/textures/icons/Inv_Jacket.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Landmark.png b/indra/newview/skins/default/textures/icons/Inv_Landmark.png Binary files differindex 76df984596..76df984596 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Landmark.png +++ b/indra/newview/skins/default/textures/icons/Inv_Landmark.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Link.png b/indra/newview/skins/default/textures/icons/Inv_Link.png Binary files differindex 26bf4086fb..26bf4086fb 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Link.png +++ b/indra/newview/skins/default/textures/icons/Inv_Link.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png b/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png Binary files differindex 73a708782c..73a708782c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png +++ b/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LinkItem.png b/indra/newview/skins/default/textures/icons/Inv_LinkItem.png Binary files differindex 73a708782c..73a708782c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LinkItem.png +++ b/indra/newview/skins/default/textures/icons/Inv_LinkItem.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png Binary files differindex f2ae828efc..f2ae828efc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png Binary files differindex d454d4cd48..d454d4cd48 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LostClosed.png b/indra/newview/skins/default/textures/icons/Inv_LostClosed.png Binary files differindex 42b5c88fdd..42b5c88fdd 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LostClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_LostClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LostOpen.png b/indra/newview/skins/default/textures/icons/Inv_LostOpen.png Binary files differindex a52168d6c7..a52168d6c7 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_LostOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_LostOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Mesh.png b/indra/newview/skins/default/textures/icons/Inv_Mesh.png Binary files differindex 77e52264c3..77e52264c3 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Mesh.png +++ b/indra/newview/skins/default/textures/icons/Inv_Mesh.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Notecard.png b/indra/newview/skins/default/textures/icons/Inv_Notecard.png Binary files differindex 4645ab8e91..4645ab8e91 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Notecard.png +++ b/indra/newview/skins/default/textures/icons/Inv_Notecard.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Object.png b/indra/newview/skins/default/textures/icons/Inv_Object.png Binary files differindex f883696a82..f883696a82 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Object.png +++ b/indra/newview/skins/default/textures/icons/Inv_Object.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png b/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png Binary files differindex 11f4871ad8..11f4871ad8 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png +++ b/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Pants.png b/indra/newview/skins/default/textures/icons/Inv_Pants.png Binary files differindex fe2389f074..fe2389f074 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Pants.png +++ b/indra/newview/skins/default/textures/icons/Inv_Pants.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Physics.png b/indra/newview/skins/default/textures/icons/Inv_Physics.png Binary files differindex 360baec46d..360baec46d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Physics.png +++ b/indra/newview/skins/default/textures/icons/Inv_Physics.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Script.png b/indra/newview/skins/default/textures/icons/Inv_Script.png Binary files differindex 0fba27a7aa..0fba27a7aa 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Script.png +++ b/indra/newview/skins/default/textures/icons/Inv_Script.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Shirt.png b/indra/newview/skins/default/textures/icons/Inv_Shirt.png Binary files differindex 81c1538dd2..81c1538dd2 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Shirt.png +++ b/indra/newview/skins/default/textures/icons/Inv_Shirt.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Shoe.png b/indra/newview/skins/default/textures/icons/Inv_Shoe.png Binary files differindex 1f52b0a6b6..1f52b0a6b6 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Shoe.png +++ b/indra/newview/skins/default/textures/icons/Inv_Shoe.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Skin.png b/indra/newview/skins/default/textures/icons/Inv_Skin.png Binary files differindex b7da922046..b7da922046 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Skin.png +++ b/indra/newview/skins/default/textures/icons/Inv_Skin.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Skirt.png b/indra/newview/skins/default/textures/icons/Inv_Skirt.png Binary files differindex 246e9a87aa..246e9a87aa 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Skirt.png +++ b/indra/newview/skins/default/textures/icons/Inv_Skirt.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Snapshot.png b/indra/newview/skins/default/textures/icons/Inv_Snapshot.png Binary files differindex 39efd2be1b..39efd2be1b 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Snapshot.png +++ b/indra/newview/skins/default/textures/icons/Inv_Snapshot.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Socks.png b/indra/newview/skins/default/textures/icons/Inv_Socks.png Binary files differindex 30d7d7c239..30d7d7c239 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Socks.png +++ b/indra/newview/skins/default/textures/icons/Inv_Socks.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Sound.png b/indra/newview/skins/default/textures/icons/Inv_Sound.png Binary files differindex 44c271c868..44c271c868 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Sound.png +++ b/indra/newview/skins/default/textures/icons/Inv_Sound.png diff --git a/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png Binary files differnew file mode 100644 index 0000000000..4dc484dc22 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png Binary files differnew file mode 100644 index 0000000000..0d140b56a7 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png Binary files differindex 57eafc4047..57eafc4047 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png Binary files differindex b080688e55..b080688e55 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Tattoo.png b/indra/newview/skins/default/textures/icons/Inv_Tattoo.png Binary files differindex a632197eb5..a632197eb5 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Tattoo.png +++ b/indra/newview/skins/default/textures/icons/Inv_Tattoo.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Texture.png b/indra/newview/skins/default/textures/icons/Inv_Texture.png Binary files differindex dbc41c5e99..dbc41c5e99 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Texture.png +++ b/indra/newview/skins/default/textures/icons/Inv_Texture.png diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png b/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png Binary files differindex 7a958c1ec0..7a958c1ec0 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png b/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png Binary files differindex 11e6bf33bc..11e6bf33bc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Underpants.png b/indra/newview/skins/default/textures/icons/Inv_Underpants.png Binary files differindex b1e7c2a55f..b1e7c2a55f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Underpants.png +++ b/indra/newview/skins/default/textures/icons/Inv_Underpants.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Undershirt.png b/indra/newview/skins/default/textures/icons/Inv_Undershirt.png Binary files differindex 9340dbb975..9340dbb975 100755..100644 --- a/indra/newview/skins/default/textures/icons/Inv_Undershirt.png +++ b/indra/newview/skins/default/textures/icons/Inv_Undershirt.png diff --git a/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png Binary files differnew file mode 100644 index 0000000000..e89a4d7f31 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png Binary files differnew file mode 100644 index 0000000000..659d7d392f --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png diff --git a/indra/newview/skins/default/textures/icons/List_View_Disabled.png b/indra/newview/skins/default/textures/icons/List_View_Disabled.png Binary files differindex 155dee5047..155dee5047 100755..100644 --- a/indra/newview/skins/default/textures/icons/List_View_Disabled.png +++ b/indra/newview/skins/default/textures/icons/List_View_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/List_View_On.png b/indra/newview/skins/default/textures/icons/List_View_On.png Binary files differindex 9127c92c3b..9127c92c3b 100755..100644 --- a/indra/newview/skins/default/textures/icons/List_View_On.png +++ b/indra/newview/skins/default/textures/icons/List_View_On.png diff --git a/indra/newview/skins/default/textures/icons/Lock.png b/indra/newview/skins/default/textures/icons/Lock.png Binary files differindex eb5b5ae7a9..eb5b5ae7a9 100755..100644 --- a/indra/newview/skins/default/textures/icons/Lock.png +++ b/indra/newview/skins/default/textures/icons/Lock.png diff --git a/indra/newview/skins/default/textures/icons/Locked_Icon.png b/indra/newview/skins/default/textures/icons/Locked_Icon.png Binary files differindex 8ead280794..8ead280794 100755..100644 --- a/indra/newview/skins/default/textures/icons/Locked_Icon.png +++ b/indra/newview/skins/default/textures/icons/Locked_Icon.png diff --git a/indra/newview/skins/default/textures/icons/Male.png b/indra/newview/skins/default/textures/icons/Male.png Binary files differindex f3fad77fd0..f3fad77fd0 100755..100644 --- a/indra/newview/skins/default/textures/icons/Male.png +++ b/indra/newview/skins/default/textures/icons/Male.png diff --git a/indra/newview/skins/default/textures/icons/Microphone_On.png b/indra/newview/skins/default/textures/icons/Microphone_On.png Binary files differindex c96b500fa1..c96b500fa1 100755..100644 --- a/indra/newview/skins/default/textures/icons/Microphone_On.png +++ b/indra/newview/skins/default/textures/icons/Microphone_On.png diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png b/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png Binary files differindex 75bd73cef1..75bd73cef1 100755..100644 --- a/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png +++ b/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Off.png b/indra/newview/skins/default/textures/icons/MinusItem_Off.png Binary files differindex 6f285f3546..6f285f3546 100755..100644 --- a/indra/newview/skins/default/textures/icons/MinusItem_Off.png +++ b/indra/newview/skins/default/textures/icons/MinusItem_Off.png diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Press.png b/indra/newview/skins/default/textures/icons/MinusItem_Press.png Binary files differindex 50f65765d5..50f65765d5 100755..100644 --- a/indra/newview/skins/default/textures/icons/MinusItem_Press.png +++ b/indra/newview/skins/default/textures/icons/MinusItem_Press.png diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png Binary files differindex fb341e9c83..fb341e9c83 100755..100644 --- a/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png +++ b/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png Binary files differindex 25b055bfc0..25b055bfc0 100755..100644 --- a/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png +++ b/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png Binary files differindex 6e91dd7159..6e91dd7159 100755..100644 --- a/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png +++ b/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png Binary files differindex be58114aa1..be58114aa1 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Off.png b/indra/newview/skins/default/textures/icons/OutboxPush_Off.png Binary files differindex e6b9480ab1..e6b9480ab1 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Off.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Off.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On.png b/indra/newview/skins/default/textures/icons/OutboxPush_On.png Binary files differindex ffda2e92d4..ffda2e92d4 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_On.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_On.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png Binary files differindex 6b5911014f..6b5911014f 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Over.png Binary files differindex 9c26b92e73..9c26b92e73 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Over.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Over.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Press.png Binary files differindex 3b5d462975..3b5d462975 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Press.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Press.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png Binary files differindex f85be047b0..f85be047b0 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png Binary files differindex cd4e482216..cd4e482216 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png Binary files differindex d212a871ce..d212a871ce 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png Binary files differindex e5b6023e36..e5b6023e36 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png Binary files differindex e1911a092f..e1911a092f 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png Binary files differindex 9e59f7843a..9e59f7843a 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png Binary files differindex 51e8bff646..51e8bff646 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png Binary files differindex 300e2e69e1..300e2e69e1 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png Binary files differindex 32fb236381..32fb236381 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png Binary files differindex 827f343b1e..827f343b1e 100755..100644 --- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png +++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png Binary files differindex fb1f7d3a6d..fb1f7d3a6d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png Binary files differindex e6f614b844..e6f614b844 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png Binary files differindex 84a96a60cb..84a96a60cb 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png Binary files differindex d55ebd7c67..d55ebd7c67 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png Binary files differindex ae4077488b..ae4077488b 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png b/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png Binary files differindex 4813d37198..4813d37198 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png Binary files differindex af65873cb6..af65873cb6 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png Binary files differindex 6ceb9d3d8f..6ceb9d3d8f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png Binary files differindex 7084e2f591..7084e2f591 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png b/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png Binary files differindex d28e5357df..d28e5357df 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png Binary files differindex d72f02f708..d72f02f708 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png Binary files differindex 60e6a00a25..60e6a00a25 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png Binary files differindex 55f97f3b4e..55f97f3b4e 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png Binary files differindex 11ab1f1e60..11ab1f1e60 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png Binary files differindex b536762ddc..b536762ddc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png Binary files differindex 8f0fe6a04d..8f0fe6a04d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png Binary files differindex eba7070b4d..eba7070b4d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png Binary files differindex 08c2a18ac3..08c2a18ac3 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png Binary files differindex bf618752f6..bf618752f6 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png Binary files differindex a67bbd0cc5..a67bbd0cc5 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png Binary files differindex 8f9f37a1bf..8f9f37a1bf 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png Binary files differindex 8b1d6c5e14..8b1d6c5e14 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png Binary files differindex 60d056b573..60d056b573 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png Binary files differindex d004b0f750..d004b0f750 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png Binary files differindex eed28765f7..eed28765f7 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png Binary files differindex e35de3c2fa..e35de3c2fa 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png Binary files differindex eace54ae79..eace54ae79 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png Binary files differindex 0d07e552b1..0d07e552b1 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png Binary files differindex b36a9bd2f0..b36a9bd2f0 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png b/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png Binary files differindex 86ce19474a..86ce19474a 100755..100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png diff --git a/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png b/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png Binary files differindex cfa12cb7cc..cfa12cb7cc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png +++ b/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png diff --git a/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png b/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png Binary files differindex 0622141848..0622141848 100755..100644 --- a/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png +++ b/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/Pause_Off.png b/indra/newview/skins/default/textures/icons/Pause_Off.png Binary files differindex 77f6be569d..77f6be569d 100755..100644 --- a/indra/newview/skins/default/textures/icons/Pause_Off.png +++ b/indra/newview/skins/default/textures/icons/Pause_Off.png diff --git a/indra/newview/skins/default/textures/icons/Pause_Over.png b/indra/newview/skins/default/textures/icons/Pause_Over.png Binary files differindex 580808bf7e..580808bf7e 100755..100644 --- a/indra/newview/skins/default/textures/icons/Pause_Over.png +++ b/indra/newview/skins/default/textures/icons/Pause_Over.png diff --git a/indra/newview/skins/default/textures/icons/Pause_Press.png b/indra/newview/skins/default/textures/icons/Pause_Press.png Binary files differindex 859db34cae..859db34cae 100755..100644 --- a/indra/newview/skins/default/textures/icons/Pause_Press.png +++ b/indra/newview/skins/default/textures/icons/Pause_Press.png diff --git a/indra/newview/skins/default/textures/icons/Person_Check.png b/indra/newview/skins/default/textures/icons/Person_Check.png Binary files differindex d40eafe793..d40eafe793 100755..100644 --- a/indra/newview/skins/default/textures/icons/Person_Check.png +++ b/indra/newview/skins/default/textures/icons/Person_Check.png diff --git a/indra/newview/skins/default/textures/icons/Person_Star.png b/indra/newview/skins/default/textures/icons/Person_Star.png Binary files differindex e02935672f..e02935672f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Person_Star.png +++ b/indra/newview/skins/default/textures/icons/Person_Star.png diff --git a/indra/newview/skins/default/textures/icons/Play_Off.png b/indra/newview/skins/default/textures/icons/Play_Off.png Binary files differindex e594c1a4cb..e594c1a4cb 100755..100644 --- a/indra/newview/skins/default/textures/icons/Play_Off.png +++ b/indra/newview/skins/default/textures/icons/Play_Off.png diff --git a/indra/newview/skins/default/textures/icons/Play_Over.png b/indra/newview/skins/default/textures/icons/Play_Over.png Binary files differindex 70ab94e8c2..70ab94e8c2 100755..100644 --- a/indra/newview/skins/default/textures/icons/Play_Over.png +++ b/indra/newview/skins/default/textures/icons/Play_Over.png diff --git a/indra/newview/skins/default/textures/icons/Play_Press.png b/indra/newview/skins/default/textures/icons/Play_Press.png Binary files differindex b52742c6da..b52742c6da 100755..100644 --- a/indra/newview/skins/default/textures/icons/Play_Press.png +++ b/indra/newview/skins/default/textures/icons/Play_Press.png diff --git a/indra/newview/skins/default/textures/icons/Progress_1.png b/indra/newview/skins/default/textures/icons/Progress_1.png Binary files differindex 5d6efbfa2a..5d6efbfa2a 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_1.png +++ b/indra/newview/skins/default/textures/icons/Progress_1.png diff --git a/indra/newview/skins/default/textures/icons/Progress_10.png b/indra/newview/skins/default/textures/icons/Progress_10.png Binary files differindex 28203324f1..28203324f1 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_10.png +++ b/indra/newview/skins/default/textures/icons/Progress_10.png diff --git a/indra/newview/skins/default/textures/icons/Progress_11.png b/indra/newview/skins/default/textures/icons/Progress_11.png Binary files differindex 6b87be0c3f..6b87be0c3f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_11.png +++ b/indra/newview/skins/default/textures/icons/Progress_11.png diff --git a/indra/newview/skins/default/textures/icons/Progress_12.png b/indra/newview/skins/default/textures/icons/Progress_12.png Binary files differindex 089d58b090..089d58b090 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_12.png +++ b/indra/newview/skins/default/textures/icons/Progress_12.png diff --git a/indra/newview/skins/default/textures/icons/Progress_2.png b/indra/newview/skins/default/textures/icons/Progress_2.png Binary files differindex 94cb73b1f7..94cb73b1f7 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_2.png +++ b/indra/newview/skins/default/textures/icons/Progress_2.png diff --git a/indra/newview/skins/default/textures/icons/Progress_3.png b/indra/newview/skins/default/textures/icons/Progress_3.png Binary files differindex a04a5b5263..a04a5b5263 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_3.png +++ b/indra/newview/skins/default/textures/icons/Progress_3.png diff --git a/indra/newview/skins/default/textures/icons/Progress_4.png b/indra/newview/skins/default/textures/icons/Progress_4.png Binary files differindex a467098d82..a467098d82 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_4.png +++ b/indra/newview/skins/default/textures/icons/Progress_4.png diff --git a/indra/newview/skins/default/textures/icons/Progress_5.png b/indra/newview/skins/default/textures/icons/Progress_5.png Binary files differindex ea64f1d907..ea64f1d907 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_5.png +++ b/indra/newview/skins/default/textures/icons/Progress_5.png diff --git a/indra/newview/skins/default/textures/icons/Progress_6.png b/indra/newview/skins/default/textures/icons/Progress_6.png Binary files differindex fe4447935f..fe4447935f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_6.png +++ b/indra/newview/skins/default/textures/icons/Progress_6.png diff --git a/indra/newview/skins/default/textures/icons/Progress_7.png b/indra/newview/skins/default/textures/icons/Progress_7.png Binary files differindex 64fa294771..64fa294771 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_7.png +++ b/indra/newview/skins/default/textures/icons/Progress_7.png diff --git a/indra/newview/skins/default/textures/icons/Progress_8.png b/indra/newview/skins/default/textures/icons/Progress_8.png Binary files differindex a1c9a7f2eb..a1c9a7f2eb 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_8.png +++ b/indra/newview/skins/default/textures/icons/Progress_8.png diff --git a/indra/newview/skins/default/textures/icons/Progress_9.png b/indra/newview/skins/default/textures/icons/Progress_9.png Binary files differindex f3e9723184..f3e9723184 100755..100644 --- a/indra/newview/skins/default/textures/icons/Progress_9.png +++ b/indra/newview/skins/default/textures/icons/Progress_9.png diff --git a/indra/newview/skins/default/textures/icons/Refresh_Off.png b/indra/newview/skins/default/textures/icons/Refresh_Off.png Binary files differindex a8acfda741..a8acfda741 100755..100644 --- a/indra/newview/skins/default/textures/icons/Refresh_Off.png +++ b/indra/newview/skins/default/textures/icons/Refresh_Off.png diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.png Binary files differindex 5e376c72f9..5e376c72f9 100755..100644 --- a/indra/newview/skins/default/textures/icons/SL_Logo.png +++ b/indra/newview/skins/default/textures/icons/SL_Logo.png diff --git a/indra/newview/skins/default/textures/icons/Search_Icon.png b/indra/newview/skins/default/textures/icons/Search_Icon.png Binary files differindex 541aa8f52a..541aa8f52a 100755..100644 --- a/indra/newview/skins/default/textures/icons/Search_Icon.png +++ b/indra/newview/skins/default/textures/icons/Search_Icon.png diff --git a/indra/newview/skins/default/textures/icons/Shirt_Large.png b/indra/newview/skins/default/textures/icons/Shirt_Large.png Binary files differindex 0f3846bccc..0f3846bccc 100755..100644 --- a/indra/newview/skins/default/textures/icons/Shirt_Large.png +++ b/indra/newview/skins/default/textures/icons/Shirt_Large.png diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.png Binary files differindex 8977c49195..8977c49195 100755..100644 --- a/indra/newview/skins/default/textures/icons/Shop.png +++ b/indra/newview/skins/default/textures/icons/Shop.png diff --git a/indra/newview/skins/default/textures/icons/SkipBackward_Off.png b/indra/newview/skins/default/textures/icons/SkipBackward_Off.png Binary files differindex 8fc10e6583..8fc10e6583 100755..100644 --- a/indra/newview/skins/default/textures/icons/SkipBackward_Off.png +++ b/indra/newview/skins/default/textures/icons/SkipBackward_Off.png diff --git a/indra/newview/skins/default/textures/icons/SkipForward_Off.png b/indra/newview/skins/default/textures/icons/SkipForward_Off.png Binary files differindex 2892e3cfa9..2892e3cfa9 100755..100644 --- a/indra/newview/skins/default/textures/icons/SkipForward_Off.png +++ b/indra/newview/skins/default/textures/icons/SkipForward_Off.png diff --git a/indra/newview/skins/default/textures/icons/StopReload_Off.png b/indra/newview/skins/default/textures/icons/StopReload_Off.png Binary files differindex 698569a540..698569a540 100755..100644 --- a/indra/newview/skins/default/textures/icons/StopReload_Off.png +++ b/indra/newview/skins/default/textures/icons/StopReload_Off.png diff --git a/indra/newview/skins/default/textures/icons/StopReload_Over.png b/indra/newview/skins/default/textures/icons/StopReload_Over.png Binary files differindex 251b38630a..251b38630a 100755..100644 --- a/indra/newview/skins/default/textures/icons/StopReload_Over.png +++ b/indra/newview/skins/default/textures/icons/StopReload_Over.png diff --git a/indra/newview/skins/default/textures/icons/Stop_Off.png b/indra/newview/skins/default/textures/icons/Stop_Off.png Binary files differindex 3ee215d36f..3ee215d36f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Stop_Off.png +++ b/indra/newview/skins/default/textures/icons/Stop_Off.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Disabled.png b/indra/newview/skins/default/textures/icons/Sync_Disabled.png Binary files differindex ca2e8def97..ca2e8def97 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Disabled.png +++ b/indra/newview/skins/default/textures/icons/Sync_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Enabled.png b/indra/newview/skins/default/textures/icons/Sync_Enabled.png Binary files differindex bc236c8b98..bc236c8b98 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Enabled.png +++ b/indra/newview/skins/default/textures/icons/Sync_Enabled.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_1.png b/indra/newview/skins/default/textures/icons/Sync_Progress_1.png Binary files differindex 624e556376..624e556376 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_1.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_1.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_2.png b/indra/newview/skins/default/textures/icons/Sync_Progress_2.png Binary files differindex 5769803b3f..5769803b3f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_2.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_2.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_3.png b/indra/newview/skins/default/textures/icons/Sync_Progress_3.png Binary files differindex 92d4bfb020..92d4bfb020 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_3.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_3.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_4.png b/indra/newview/skins/default/textures/icons/Sync_Progress_4.png Binary files differindex 6d43eb3a9f..6d43eb3a9f 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_4.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_4.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_5.png b/indra/newview/skins/default/textures/icons/Sync_Progress_5.png Binary files differindex 766d063c99..766d063c99 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_5.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_5.png diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_6.png b/indra/newview/skins/default/textures/icons/Sync_Progress_6.png Binary files differindex dfe7f68b72..dfe7f68b72 100755..100644 --- a/indra/newview/skins/default/textures/icons/Sync_Progress_6.png +++ b/indra/newview/skins/default/textures/icons/Sync_Progress_6.png diff --git a/indra/newview/skins/default/textures/icons/System_Notification_Large.png b/indra/newview/skins/default/textures/icons/System_Notification_Large.png Binary files differnew file mode 100644 index 0000000000..434ce3e8b6 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/System_Notification_Large.png diff --git a/indra/newview/skins/default/textures/icons/System_Notification_Small.png b/indra/newview/skins/default/textures/icons/System_Notification_Small.png Binary files differnew file mode 100644 index 0000000000..027a8446d8 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/System_Notification_Small.png diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png b/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png Binary files differindex caaf45a99f..caaf45a99f 100755..100644 --- a/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png +++ b/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Off.png b/indra/newview/skins/default/textures/icons/TrashItem_Off.png Binary files differindex bb64920ec4..bb64920ec4 100755..100644 --- a/indra/newview/skins/default/textures/icons/TrashItem_Off.png +++ b/indra/newview/skins/default/textures/icons/TrashItem_Off.png diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Press.png b/indra/newview/skins/default/textures/icons/TrashItem_Press.png Binary files differindex c62f833d86..c62f833d86 100755..100644 --- a/indra/newview/skins/default/textures/icons/TrashItem_Press.png +++ b/indra/newview/skins/default/textures/icons/TrashItem_Press.png diff --git a/indra/newview/skins/default/textures/icons/UnZoom_Off.png b/indra/newview/skins/default/textures/icons/UnZoom_Off.png Binary files differindex c794113755..c794113755 100755..100644 --- a/indra/newview/skins/default/textures/icons/UnZoom_Off.png +++ b/indra/newview/skins/default/textures/icons/UnZoom_Off.png diff --git a/indra/newview/skins/default/textures/icons/UpArrow_Off.png b/indra/newview/skins/default/textures/icons/UpArrow_Off.png Binary files differindex 00015bce20..00015bce20 100755..100644 --- a/indra/newview/skins/default/textures/icons/UpArrow_Off.png +++ b/indra/newview/skins/default/textures/icons/UpArrow_Off.png diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png Binary files differindex cd18ae310d..cd18ae310d 100755..100644 --- a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png +++ b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png Binary files differindex b0ed6ee8eb..b0ed6ee8eb 100755..100644 --- a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png +++ b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png Binary files differindex 14ec77b99a..14ec77b99a 100755..100644 --- a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png +++ b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Off.png b/indra/newview/skins/default/textures/icons/VoicePTT_Off.png Binary files differindex 48be51e9af..48be51e9af 100755..100644 --- a/indra/newview/skins/default/textures/icons/VoicePTT_Off.png +++ b/indra/newview/skins/default/textures/icons/VoicePTT_Off.png diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_On.png b/indra/newview/skins/default/textures/icons/VoicePTT_On.png Binary files differindex be4881b64c..be4881b64c 100755..100644 --- a/indra/newview/skins/default/textures/icons/VoicePTT_On.png +++ b/indra/newview/skins/default/textures/icons/VoicePTT_On.png diff --git a/indra/newview/skins/default/textures/icons/Web_Profile_Off.png b/indra/newview/skins/default/textures/icons/Web_Profile_Off.png Binary files differindex 5716dd6d22..5716dd6d22 100755..100644 --- a/indra/newview/skins/default/textures/icons/Web_Profile_Off.png +++ b/indra/newview/skins/default/textures/icons/Web_Profile_Off.png diff --git a/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png b/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png Binary files differindex c057e9743d..c057e9743d 100755..100644 --- a/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png +++ b/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png diff --git a/indra/newview/skins/default/textures/icons/Zoom_Off.png b/indra/newview/skins/default/textures/icons/Zoom_Off.png Binary files differindex d096720c9c..d096720c9c 100755..100644 --- a/indra/newview/skins/default/textures/icons/Zoom_Off.png +++ b/indra/newview/skins/default/textures/icons/Zoom_Off.png diff --git a/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg b/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg Binary files differindex 3bb7f7183c..3bb7f7183c 100755..100644 --- a/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg +++ b/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg diff --git a/indra/newview/skins/default/textures/icons/back_arrow_off.png b/indra/newview/skins/default/textures/icons/back_arrow_off.png Binary files differindex e7cea49d73..e7cea49d73 100755..100644 --- a/indra/newview/skins/default/textures/icons/back_arrow_off.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_off.png diff --git a/indra/newview/skins/default/textures/icons/back_arrow_over.png b/indra/newview/skins/default/textures/icons/back_arrow_over.png Binary files differindex 4e5a93a25f..4e5a93a25f 100755..100644 --- a/indra/newview/skins/default/textures/icons/back_arrow_over.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_over.png diff --git a/indra/newview/skins/default/textures/icons/back_arrow_press.png b/indra/newview/skins/default/textures/icons/back_arrow_press.png Binary files differindex 289b8c20e6..289b8c20e6 100755..100644 --- a/indra/newview/skins/default/textures/icons/back_arrow_press.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_press.png diff --git a/indra/newview/skins/default/textures/icons/check_mark.png b/indra/newview/skins/default/textures/icons/check_mark.png Binary files differindex 4d927cb29e..4d927cb29e 100755..100644 --- a/indra/newview/skins/default/textures/icons/check_mark.png +++ b/indra/newview/skins/default/textures/icons/check_mark.png diff --git a/indra/newview/skins/default/textures/icons/collapse_to_one_line.png b/indra/newview/skins/default/textures/icons/collapse_to_one_line.png Binary files differindex d57144a645..d57144a645 100755..100644 --- a/indra/newview/skins/default/textures/icons/collapse_to_one_line.png +++ b/indra/newview/skins/default/textures/icons/collapse_to_one_line.png diff --git a/indra/newview/skins/default/textures/icons/edit_mine.png b/indra/newview/skins/default/textures/icons/edit_mine.png Binary files differindex a0bc7efd25..a0bc7efd25 100755..100644 --- a/indra/newview/skins/default/textures/icons/edit_mine.png +++ b/indra/newview/skins/default/textures/icons/edit_mine.png diff --git a/indra/newview/skins/default/textures/icons/edit_theirs.png b/indra/newview/skins/default/textures/icons/edit_theirs.png Binary files differindex ed36ad7cfc..ed36ad7cfc 100755..100644 --- a/indra/newview/skins/default/textures/icons/edit_theirs.png +++ b/indra/newview/skins/default/textures/icons/edit_theirs.png diff --git a/indra/newview/skins/default/textures/icons/expand_one_liner.png b/indra/newview/skins/default/textures/icons/expand_one_liner.png Binary files differindex 58b7d90131..58b7d90131 100755..100644 --- a/indra/newview/skins/default/textures/icons/expand_one_liner.png +++ b/indra/newview/skins/default/textures/icons/expand_one_liner.png diff --git a/indra/newview/skins/default/textures/icons/nearby_chat_icon.png b/indra/newview/skins/default/textures/icons/nearby_chat_icon.png Binary files differindex 5ac4258b9d..5ac4258b9d 100755..100644 --- a/indra/newview/skins/default/textures/icons/nearby_chat_icon.png +++ b/indra/newview/skins/default/textures/icons/nearby_chat_icon.png diff --git a/indra/newview/skins/default/textures/icons/object_icon.png b/indra/newview/skins/default/textures/icons/object_icon.png Binary files differindex 223874e631..223874e631 100755..100644 --- a/indra/newview/skins/default/textures/icons/object_icon.png +++ b/indra/newview/skins/default/textures/icons/object_icon.png diff --git a/indra/newview/skins/default/textures/icons/pop_up_caution.png b/indra/newview/skins/default/textures/icons/pop_up_caution.png Binary files differindex 8364bcc328..8364bcc328 100755..100644 --- a/indra/newview/skins/default/textures/icons/pop_up_caution.png +++ b/indra/newview/skins/default/textures/icons/pop_up_caution.png diff --git a/indra/newview/skins/default/textures/icons/see_me_online.png b/indra/newview/skins/default/textures/icons/see_me_online.png Binary files differindex 52dc2ae74f..52dc2ae74f 100755..100644 --- a/indra/newview/skins/default/textures/icons/see_me_online.png +++ b/indra/newview/skins/default/textures/icons/see_me_online.png diff --git a/indra/newview/skins/default/textures/icons/see_on_map.png b/indra/newview/skins/default/textures/icons/see_on_map.png Binary files differindex 200e649818..200e649818 100755..100644 --- a/indra/newview/skins/default/textures/icons/see_on_map.png +++ b/indra/newview/skins/default/textures/icons/see_on_map.png diff --git a/indra/newview/skins/default/textures/icons/unknown_icon.png b/indra/newview/skins/default/textures/icons/unknown_icon.png Binary files differindex 8441d86596..8441d86596 100755..100644 --- a/indra/newview/skins/default/textures/icons/unknown_icon.png +++ b/indra/newview/skins/default/textures/icons/unknown_icon.png diff --git a/indra/newview/skins/default/textures/jump_left_in.tga b/indra/newview/skins/default/textures/jump_left_in.tga Binary files differindex e0656c901d..e0656c901d 100755..100644 --- a/indra/newview/skins/default/textures/jump_left_in.tga +++ b/indra/newview/skins/default/textures/jump_left_in.tga diff --git a/indra/newview/skins/default/textures/jump_left_out.tga b/indra/newview/skins/default/textures/jump_left_out.tga Binary files differindex fb6dac0c3d..fb6dac0c3d 100755..100644 --- a/indra/newview/skins/default/textures/jump_left_out.tga +++ b/indra/newview/skins/default/textures/jump_left_out.tga diff --git a/indra/newview/skins/default/textures/jump_right_in.tga b/indra/newview/skins/default/textures/jump_right_in.tga Binary files differindex 010c748c2a..010c748c2a 100755..100644 --- a/indra/newview/skins/default/textures/jump_right_in.tga +++ b/indra/newview/skins/default/textures/jump_right_in.tga diff --git a/indra/newview/skins/default/textures/jump_right_out.tga b/indra/newview/skins/default/textures/jump_right_out.tga Binary files differindex 33355262d4..33355262d4 100755..100644 --- a/indra/newview/skins/default/textures/jump_right_out.tga +++ b/indra/newview/skins/default/textures/jump_right_out.tga diff --git a/indra/newview/skins/default/textures/lag_status_critical.tga b/indra/newview/skins/default/textures/lag_status_critical.tga Binary files differindex bbc71d9e77..bbc71d9e77 100755..100644 --- a/indra/newview/skins/default/textures/lag_status_critical.tga +++ b/indra/newview/skins/default/textures/lag_status_critical.tga diff --git a/indra/newview/skins/default/textures/lag_status_good.tga b/indra/newview/skins/default/textures/lag_status_good.tga Binary files differindex 680ba90f17..680ba90f17 100755..100644 --- a/indra/newview/skins/default/textures/lag_status_good.tga +++ b/indra/newview/skins/default/textures/lag_status_good.tga diff --git a/indra/newview/skins/default/textures/lag_status_warning.tga b/indra/newview/skins/default/textures/lag_status_warning.tga Binary files differindex 13ce3cc396..13ce3cc396 100755..100644 --- a/indra/newview/skins/default/textures/lag_status_warning.tga +++ b/indra/newview/skins/default/textures/lag_status_warning.tga diff --git a/indra/newview/skins/default/textures/legend.tga b/indra/newview/skins/default/textures/legend.tga Binary files differindex 0dbb8fda4f..0dbb8fda4f 100755..100644 --- a/indra/newview/skins/default/textures/legend.tga +++ b/indra/newview/skins/default/textures/legend.tga diff --git a/indra/newview/skins/default/textures/locked_image.j2c b/indra/newview/skins/default/textures/locked_image.j2c Binary files differindex 9e8998d675..9e8998d675 100755..100644 --- a/indra/newview/skins/default/textures/locked_image.j2c +++ b/indra/newview/skins/default/textures/locked_image.j2c diff --git a/indra/newview/skins/default/textures/map_avatar_16.tga b/indra/newview/skins/default/textures/map_avatar_16.tga Binary files differindex f59e9e9193..f59e9e9193 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_16.tga +++ b/indra/newview/skins/default/textures/map_avatar_16.tga diff --git a/indra/newview/skins/default/textures/map_avatar_32.tga b/indra/newview/skins/default/textures/map_avatar_32.tga Binary files differindex aebeab4093..aebeab4093 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_32.tga +++ b/indra/newview/skins/default/textures/map_avatar_32.tga diff --git a/indra/newview/skins/default/textures/map_avatar_8.tga b/indra/newview/skins/default/textures/map_avatar_8.tga Binary files differindex 8500eadeba..8500eadeba 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_8.tga +++ b/indra/newview/skins/default/textures/map_avatar_8.tga diff --git a/indra/newview/skins/default/textures/map_avatar_above_32.tga b/indra/newview/skins/default/textures/map_avatar_above_32.tga Binary files differindex 65bd0561a7..65bd0561a7 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_above_32.tga +++ b/indra/newview/skins/default/textures/map_avatar_above_32.tga diff --git a/indra/newview/skins/default/textures/map_avatar_below_32.tga b/indra/newview/skins/default/textures/map_avatar_below_32.tga Binary files differindex 496c44b369..496c44b369 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_below_32.tga +++ b/indra/newview/skins/default/textures/map_avatar_below_32.tga diff --git a/indra/newview/skins/default/textures/map_avatar_unknown_32.tga b/indra/newview/skins/default/textures/map_avatar_unknown_32.tga Binary files differindex d1192478c6..d1192478c6 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_unknown_32.tga +++ b/indra/newview/skins/default/textures/map_avatar_unknown_32.tga diff --git a/indra/newview/skins/default/textures/map_avatar_you_32.tga b/indra/newview/skins/default/textures/map_avatar_you_32.tga Binary files differindex 782207efd6..782207efd6 100755..100644 --- a/indra/newview/skins/default/textures/map_avatar_you_32.tga +++ b/indra/newview/skins/default/textures/map_avatar_you_32.tga diff --git a/indra/newview/skins/default/textures/map_event.tga b/indra/newview/skins/default/textures/map_event.tga Binary files differindex 2c06d08fd2..2c06d08fd2 100755..100644 --- a/indra/newview/skins/default/textures/map_event.tga +++ b/indra/newview/skins/default/textures/map_event.tga diff --git a/indra/newview/skins/default/textures/map_home.tga b/indra/newview/skins/default/textures/map_home.tga Binary files differindex acaaa3db44..acaaa3db44 100755..100644 --- a/indra/newview/skins/default/textures/map_home.tga +++ b/indra/newview/skins/default/textures/map_home.tga diff --git a/indra/newview/skins/default/textures/map_infohub.tga b/indra/newview/skins/default/textures/map_infohub.tga Binary files differindex d0134fa5fe..d0134fa5fe 100755..100644 --- a/indra/newview/skins/default/textures/map_infohub.tga +++ b/indra/newview/skins/default/textures/map_infohub.tga diff --git a/indra/newview/skins/default/textures/map_telehub.tga b/indra/newview/skins/default/textures/map_telehub.tga Binary files differindex 545b8e532c..545b8e532c 100755..100644 --- a/indra/newview/skins/default/textures/map_telehub.tga +++ b/indra/newview/skins/default/textures/map_telehub.tga diff --git a/indra/newview/skins/default/textures/map_track_16.tga b/indra/newview/skins/default/textures/map_track_16.tga Binary files differindex 451ce24cf0..451ce24cf0 100755..100644 --- a/indra/newview/skins/default/textures/map_track_16.tga +++ b/indra/newview/skins/default/textures/map_track_16.tga diff --git a/indra/newview/skins/default/textures/menu_separator.png b/indra/newview/skins/default/textures/menu_separator.png Binary files differindex 7bb27c499d..7bb27c499d 100755..100644 --- a/indra/newview/skins/default/textures/menu_separator.png +++ b/indra/newview/skins/default/textures/menu_separator.png diff --git a/indra/newview/skins/default/textures/missing_asset.tga b/indra/newview/skins/default/textures/missing_asset.tga Binary files differindex 9a43f4db5d..9a43f4db5d 100755..100644 --- a/indra/newview/skins/default/textures/missing_asset.tga +++ b/indra/newview/skins/default/textures/missing_asset.tga diff --git a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png Binary files differindex 7c6920205f..7c6920205f 100755..100644 --- a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png +++ b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.png Binary files differindex c8ab151c44..c8ab151c44 100755..100644 --- a/indra/newview/skins/default/textures/model_wizard/progress_light.png +++ b/indra/newview/skins/default/textures/model_wizard/progress_light.png diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png b/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png Binary files differindex 19569501fe..19569501fe 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png +++ b/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png b/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png Binary files differindex 3648c42656..3648c42656 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png +++ b/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png Binary files differindex 0b3f252ccf..0b3f252ccf 100755..100644 --- a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png +++ b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png Binary files differindex 5c4c150bed..5c4c150bed 100755..100644 --- a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png +++ b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png b/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png Binary files differindex d4f126f969..d4f126f969 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png +++ b/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png Binary files differindex e27dbe2cad..e27dbe2cad 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png +++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png Binary files differindex 82d044d817..82d044d817 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png +++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png Binary files differindex 7909d54f2b..7909d54f2b 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png +++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png Binary files differindex 6670667022..6670667022 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png +++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png diff --git a/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png b/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png Binary files differindex 5ab4abc5b8..5ab4abc5b8 100755..100644 --- a/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png +++ b/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png diff --git a/indra/newview/skins/default/textures/navbar/Flag.png b/indra/newview/skins/default/textures/navbar/Flag.png Binary files differindex df53c89224..df53c89224 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Flag.png +++ b/indra/newview/skins/default/textures/navbar/Flag.png diff --git a/indra/newview/skins/default/textures/navbar/Help_Press.png b/indra/newview/skins/default/textures/navbar/Help_Press.png Binary files differindex ed3695f9d5..ed3695f9d5 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Help_Press.png +++ b/indra/newview/skins/default/textures/navbar/Help_Press.png diff --git a/indra/newview/skins/default/textures/navbar/Home_Off.png b/indra/newview/skins/default/textures/navbar/Home_Off.png Binary files differindex fe3bc63b77..fe3bc63b77 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Home_Off.png +++ b/indra/newview/skins/default/textures/navbar/Home_Off.png diff --git a/indra/newview/skins/default/textures/navbar/Info_Off.png b/indra/newview/skins/default/textures/navbar/Info_Off.png Binary files differindex 64722255a3..64722255a3 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Info_Off.png +++ b/indra/newview/skins/default/textures/navbar/Info_Off.png diff --git a/indra/newview/skins/default/textures/navbar/Info_Over.png b/indra/newview/skins/default/textures/navbar/Info_Over.png Binary files differindex 84f1d03129..84f1d03129 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Info_Over.png +++ b/indra/newview/skins/default/textures/navbar/Info_Over.png diff --git a/indra/newview/skins/default/textures/navbar/Info_Press.png b/indra/newview/skins/default/textures/navbar/Info_Press.png Binary files differindex 169105829e..169105829e 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Info_Press.png +++ b/indra/newview/skins/default/textures/navbar/Info_Press.png diff --git a/indra/newview/skins/default/textures/navbar/Lock.png b/indra/newview/skins/default/textures/navbar/Lock.png Binary files differindex cf569d6ad2..cf569d6ad2 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Lock.png +++ b/indra/newview/skins/default/textures/navbar/Lock.png diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG.png b/indra/newview/skins/default/textures/navbar/NavBar_BG.png Binary files differindex 38eea783e6..38eea783e6 100755..100644 --- a/indra/newview/skins/default/textures/navbar/NavBar_BG.png +++ b/indra/newview/skins/default/textures/navbar/NavBar_BG.png diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png Binary files differindex a79d999932..a79d999932 100755..100644 --- a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png +++ b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png Binary files differindex b692ed92da..b692ed92da 100755..100644 --- a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png +++ b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png diff --git a/indra/newview/skins/default/textures/navbar/Row_Selection.png b/indra/newview/skins/default/textures/navbar/Row_Selection.png Binary files differindex fc4f0c07ef..fc4f0c07ef 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Row_Selection.png +++ b/indra/newview/skins/default/textures/navbar/Row_Selection.png diff --git a/indra/newview/skins/default/textures/navbar/Search.png b/indra/newview/skins/default/textures/navbar/Search.png Binary files differindex 4c29e57f7b..4c29e57f7b 100755..100644 --- a/indra/newview/skins/default/textures/navbar/Search.png +++ b/indra/newview/skins/default/textures/navbar/Search.png diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png Binary files differindex c1d74e5a64..c1d74e5a64 100755..100644 --- a/indra/newview/skins/default/textures/navbar/separator.png +++ b/indra/newview/skins/default/textures/navbar/separator.png diff --git a/indra/newview/skins/default/textures/notify_caution_icon.tga b/indra/newview/skins/default/textures/notify_caution_icon.tga Binary files differindex abc23d1d7a..abc23d1d7a 100755..100644 --- a/indra/newview/skins/default/textures/notify_caution_icon.tga +++ b/indra/newview/skins/default/textures/notify_caution_icon.tga diff --git a/indra/newview/skins/default/textures/pixiesmall.j2c b/indra/newview/skins/default/textures/pixiesmall.j2c Binary files differindex a1ff64014b..a1ff64014b 100755..100644 --- a/indra/newview/skins/default/textures/pixiesmall.j2c +++ b/indra/newview/skins/default/textures/pixiesmall.j2c diff --git a/indra/newview/skins/default/textures/red_x.png b/indra/newview/skins/default/textures/red_x.png Binary files differindex a61202f09b..a61202f09b 100755..100644 --- a/indra/newview/skins/default/textures/red_x.png +++ b/indra/newview/skins/default/textures/red_x.png diff --git a/indra/newview/skins/default/textures/rounded_square.j2c b/indra/newview/skins/default/textures/rounded_square.j2c Binary files differindex c8bb572fa9..c8bb572fa9 100755..100644 --- a/indra/newview/skins/default/textures/rounded_square.j2c +++ b/indra/newview/skins/default/textures/rounded_square.j2c diff --git a/indra/newview/skins/default/textures/script_error.j2c b/indra/newview/skins/default/textures/script_error.j2c Binary files differindex 893cb642e7..893cb642e7 100755..100644 --- a/indra/newview/skins/default/textures/script_error.j2c +++ b/indra/newview/skins/default/textures/script_error.j2c diff --git a/indra/newview/skins/default/textures/silhouette.j2c b/indra/newview/skins/default/textures/silhouette.j2c Binary files differindex 3859d4cb34..3859d4cb34 100755..100644 --- a/indra/newview/skins/default/textures/silhouette.j2c +++ b/indra/newview/skins/default/textures/silhouette.j2c diff --git a/indra/newview/skins/default/textures/slim_icon_16_viewer.tga b/indra/newview/skins/default/textures/slim_icon_16_viewer.tga Binary files differindex 552181d36a..552181d36a 100755..100644 --- a/indra/newview/skins/default/textures/slim_icon_16_viewer.tga +++ b/indra/newview/skins/default/textures/slim_icon_16_viewer.tga diff --git a/indra/newview/skins/default/textures/snapshot_download.png b/indra/newview/skins/default/textures/snapshot_download.png Binary files differindex 6aa1abded5..6aa1abded5 100755..100644 --- a/indra/newview/skins/default/textures/snapshot_download.png +++ b/indra/newview/skins/default/textures/snapshot_download.png diff --git a/indra/newview/skins/default/textures/snapshot_email.png b/indra/newview/skins/default/textures/snapshot_email.png Binary files differindex dee784a9bf..dee784a9bf 100755..100644 --- a/indra/newview/skins/default/textures/snapshot_email.png +++ b/indra/newview/skins/default/textures/snapshot_email.png diff --git a/indra/newview/skins/default/textures/spacer24.tga b/indra/newview/skins/default/textures/spacer24.tga Binary files differindex c7cab6b38c..c7cab6b38c 100755..100644 --- a/indra/newview/skins/default/textures/spacer24.tga +++ b/indra/newview/skins/default/textures/spacer24.tga diff --git a/indra/newview/skins/default/textures/tabarea.tga b/indra/newview/skins/default/textures/tabarea.tga Binary files differindex 5517aebfc8..5517aebfc8 100755..100644 --- a/indra/newview/skins/default/textures/tabarea.tga +++ b/indra/newview/skins/default/textures/tabarea.tga diff --git a/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png b/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png Binary files differindex 213acbe87b..213acbe87b 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png +++ b/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png Binary files differindex 4e59042e33..4e59042e33 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png Binary files differindex be7b298bb8..be7b298bb8 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png Binary files differindex 1e234ff09b..1e234ff09b 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png Binary files differindex 48c78b453d..48c78b453d 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png Binary files differindex bc4e00c646..bc4e00c646 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png Binary files differindex 293aeef5e6..293aeef5e6 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png Binary files differindex 760db9360d..760db9360d 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png Binary files differindex 4556602f58..4556602f58 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png Binary files differindex 691b600510..691b600510 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png Binary files differindex f5a5f7a846..f5a5f7a846 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png Binary files differindex e56eda9802..e56eda9802 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png Binary files differindex 4ed7a2b183..4ed7a2b183 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png Binary files differindex b3316386b9..b3316386b9 100755..100644 --- a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png +++ b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png diff --git a/indra/newview/skins/default/textures/tearoff_pressed.tga b/indra/newview/skins/default/textures/tearoff_pressed.tga Binary files differindex 620d109de0..620d109de0 100755..100644 --- a/indra/newview/skins/default/textures/tearoff_pressed.tga +++ b/indra/newview/skins/default/textures/tearoff_pressed.tga diff --git a/indra/newview/skins/default/textures/tearoffbox.tga b/indra/newview/skins/default/textures/tearoffbox.tga Binary files differindex 0670d2e91b..0670d2e91b 100755..100644 --- a/indra/newview/skins/default/textures/tearoffbox.tga +++ b/indra/newview/skins/default/textures/tearoffbox.tga diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 9c2d55e7b4..e453d94883 100755..100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -140,6 +140,7 @@ with the same filename but different name <texture name="Command_Inventory_Icon" file_name="toolbar_icons/inventory.png" preload="true" /> <texture name="Command_Map_Icon" file_name="toolbar_icons/map.png" preload="true" /> <texture name="Command_Marketplace_Icon" file_name="toolbar_icons/marketplace.png" preload="true" /> + <texture name="Command_MktListings_Icon" file_name="toolbar_icons/mktlistings.png" preload="true" /> <texture name="Command_MiniCart_Icon" file_name="toolbar_icons/mini_cart.png" preload="true" /> <texture name="Command_MiniMap_Icon" file_name="toolbar_icons/mini_map.png" preload="true" /> <texture name="Command_Move_Icon" file_name="toolbar_icons/move.png" preload="true" /> @@ -222,6 +223,7 @@ with the same filename but different name <texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" /> <texture name="ForwardArrow_Press" file_name="icons/ForwardArrow_Press.png" preload="false" /> + <texture name="Generic_Experience" file_name="Blank.png" preload="false" /> <texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" /> <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" /> <texture name="icon_group.tga" file_name="icons/Generic_Group.png" preload="false" /> @@ -305,6 +307,8 @@ with the same filename but different name <texture name="Inv_Snapshot" file_name="icons/Inv_Snapshot.png" preload="false" /> <texture name="Inv_Socks" file_name="icons/Inv_Socks.png" preload="false" /> <texture name="Inv_Sound" file_name="icons/Inv_Sound.png" preload="false" /> + <texture name="Inv_StockFolderClosed" file_name="icons/Inv_StockFolderClosed.png" preload="false" /> + <texture name="Inv_StockFolderOpen" file_name="icons/Inv_StockFolderOpen.png" preload="false" /> <texture name="Inv_SysClosed" file_name="icons/Inv_SysClosed.png" preload="false" /> <texture name="Inv_SysOpen" file_name="icons/Inv_SysOpen.png" preload="false" /> <texture name="Inv_Tattoo" file_name="icons/Inv_Tattoo.png" preload="false" /> @@ -316,6 +320,8 @@ with the same filename but different name <texture name="Inv_Undershirt" file_name="icons/Inv_Undershirt.png" preload="false" /> <texture name="Inv_Link" file_name="icons/Inv_Link.png" preload="false" /> <texture name="Inv_Invalid" file_name="icons/Inv_Invalid.png" preload="false" /> + <texture name="Inv_VersionFolderClosed" file_name="icons/Inv_VersionFolderClosed.png" preload="false" /> + <texture name="Inv_VersionFolderOpen" file_name="icons/Inv_VersionFolderOpen.png" preload="false" /> <texture name="Linden_Dollar_Alert" file_name="widgets/Linden_Dollar_Alert.png"/> <texture name="Linden_Dollar_Background" file_name="widgets/Linden_Dollar_Background.png"/> @@ -333,6 +339,7 @@ with the same filename but different name <texture name="Map_Placeholder_Icon" file_name="icons/map_placeholder.png" preload="true" /> + <texture name="Marketplace_Dropzone_Background" file_name="widgets/Marketplace_Dropzone_Background.png" preload="true" /> <texture name="MarketplaceBtn_Off" file_name="widgets/MarketplaceBtn_Off.png" preload="true" scale.left="30" scale.top="19" scale.right="35" scale.bottom="4" /> <texture name="MarketplaceBtn_Selected" file_name="widgets/MarketplaceBtn_Selected.png" preload="true" scale.left="30" scale.top="19" scale.right="35" scale.bottom="4" /> @@ -797,4 +804,9 @@ with the same filename but different name <texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/> <texture name="NavBar Separator" file_name="navbar/separator.png"/> + <texture name="Notification_Condense" file_name="icons/Icon_Notification_Condense.png" preload="true"/> + <texture name="Notification_Expand" file_name="icons/Icon_Notification_Expand.png" preload="true"/> + <texture name="System_Notification" file_name="icons/SL_Logo.png" preload="true"/> + <texture name="Icon_Attachment_Small" file_name="icons/Icon_Attachment_Small.png" preload="true"/> + <texture name="Icon_Attachment_Large" file_name="icons/Icon_Attachment_Large.png" preload="true"/> </textures> diff --git a/indra/newview/skins/default/textures/toolbar_icons/appearance.png b/indra/newview/skins/default/textures/toolbar_icons/appearance.png Binary files differindex e6b1365388..e6b1365388 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/appearance.png +++ b/indra/newview/skins/default/textures/toolbar_icons/appearance.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/avatars.png b/indra/newview/skins/default/textures/toolbar_icons/avatars.png Binary files differindex 8fa0600cee..8fa0600cee 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/avatars.png +++ b/indra/newview/skins/default/textures/toolbar_icons/avatars.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/build.png b/indra/newview/skins/default/textures/toolbar_icons/build.png Binary files differindex e21ab3f0e4..e21ab3f0e4 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/build.png +++ b/indra/newview/skins/default/textures/toolbar_icons/build.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png Binary files differindex 5f6a01eaa1..5f6a01eaa1 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png +++ b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png Binary files differindex 0b8090314c..0b8090314c 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png +++ b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png Binary files differindex 044751560f..044751560f 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png +++ b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/chat.png b/indra/newview/skins/default/textures/toolbar_icons/chat.png Binary files differindex e0dbac495f..e0dbac495f 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/chat.png +++ b/indra/newview/skins/default/textures/toolbar_icons/chat.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/destinations.png b/indra/newview/skins/default/textures/toolbar_icons/destinations.png Binary files differindex e2325f083a..e2325f083a 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/destinations.png +++ b/indra/newview/skins/default/textures/toolbar_icons/destinations.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/gestures.png b/indra/newview/skins/default/textures/toolbar_icons/gestures.png Binary files differindex 2404bb4e25..2404bb4e25 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/gestures.png +++ b/indra/newview/skins/default/textures/toolbar_icons/gestures.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/howto.png b/indra/newview/skins/default/textures/toolbar_icons/howto.png Binary files differindex 8594d71113..8594d71113 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/howto.png +++ b/indra/newview/skins/default/textures/toolbar_icons/howto.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/inventory.png b/indra/newview/skins/default/textures/toolbar_icons/inventory.png Binary files differindex ab3191255e..ab3191255e 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/inventory.png +++ b/indra/newview/skins/default/textures/toolbar_icons/inventory.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/land.png b/indra/newview/skins/default/textures/toolbar_icons/land.png Binary files differindex 89ea7604a4..89ea7604a4 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/land.png +++ b/indra/newview/skins/default/textures/toolbar_icons/land.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/map.png b/indra/newview/skins/default/textures/toolbar_icons/map.png Binary files differindex ed1049b7db..ed1049b7db 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/map.png +++ b/indra/newview/skins/default/textures/toolbar_icons/map.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png Binary files differindex 62bad20be6..62bad20be6 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png +++ b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png Binary files differindex 9eeb1d4e09..9eeb1d4e09 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png +++ b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png Binary files differindex ab0a654056..ab0a654056 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png +++ b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png b/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png Binary files differnew file mode 100644 index 0000000000..a6f90461d7 --- /dev/null +++ b/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/move.png b/indra/newview/skins/default/textures/toolbar_icons/move.png Binary files differindex 5c2ced7375..5c2ced7375 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/move.png +++ b/indra/newview/skins/default/textures/toolbar_icons/move.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png Binary files differindex 77a7cd5f44..77a7cd5f44 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png +++ b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/outbox.png b/indra/newview/skins/default/textures/toolbar_icons/outbox.png Binary files differindex 0f3db1c47c..0f3db1c47c 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/outbox.png +++ b/indra/newview/skins/default/textures/toolbar_icons/outbox.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/people.png b/indra/newview/skins/default/textures/toolbar_icons/people.png Binary files differindex 7228ae8e2f..7228ae8e2f 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/people.png +++ b/indra/newview/skins/default/textures/toolbar_icons/people.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/picks.png b/indra/newview/skins/default/textures/toolbar_icons/picks.png Binary files differindex befda04b42..befda04b42 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/picks.png +++ b/indra/newview/skins/default/textures/toolbar_icons/picks.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/places.png b/indra/newview/skins/default/textures/toolbar_icons/places.png Binary files differindex 97d9fa066c..97d9fa066c 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/places.png +++ b/indra/newview/skins/default/textures/toolbar_icons/places.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/preferences.png b/indra/newview/skins/default/textures/toolbar_icons/preferences.png Binary files differindex 4ccd7b8ae1..4ccd7b8ae1 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/preferences.png +++ b/indra/newview/skins/default/textures/toolbar_icons/preferences.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/profile.png b/indra/newview/skins/default/textures/toolbar_icons/profile.png Binary files differindex 32fe2bf8ac..32fe2bf8ac 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/profile.png +++ b/indra/newview/skins/default/textures/toolbar_icons/profile.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/search.png b/indra/newview/skins/default/textures/toolbar_icons/search.png Binary files differindex bcb11e950d..bcb11e950d 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/search.png +++ b/indra/newview/skins/default/textures/toolbar_icons/search.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png Binary files differindex d26da9b1d2..d26da9b1d2 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png +++ b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/speak.png b/indra/newview/skins/default/textures/toolbar_icons/speak.png Binary files differindex 10cd354c5c..10cd354c5c 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/speak.png +++ b/indra/newview/skins/default/textures/toolbar_icons/speak.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/view.png b/indra/newview/skins/default/textures/toolbar_icons/view.png Binary files differindex ddf0df7c26..ddf0df7c26 100755..100644 --- a/indra/newview/skins/default/textures/toolbar_icons/view.png +++ b/indra/newview/skins/default/textures/toolbar_icons/view.png diff --git a/indra/newview/skins/default/textures/transparent.j2c b/indra/newview/skins/default/textures/transparent.j2c Binary files differindex 1068e940b9..1068e940b9 100755..100644 --- a/indra/newview/skins/default/textures/transparent.j2c +++ b/indra/newview/skins/default/textures/transparent.j2c diff --git a/indra/newview/skins/default/textures/up_arrow.png b/indra/newview/skins/default/textures/up_arrow.png Binary files differindex 76f839510e..76f839510e 100755..100644 --- a/indra/newview/skins/default/textures/up_arrow.png +++ b/indra/newview/skins/default/textures/up_arrow.png diff --git a/indra/newview/skins/default/textures/uv_test1.j2c b/indra/newview/skins/default/textures/uv_test1.j2c Binary files differindex 3d5b541796..3d5b541796 100755..100644 --- a/indra/newview/skins/default/textures/uv_test1.j2c +++ b/indra/newview/skins/default/textures/uv_test1.j2c diff --git a/indra/newview/skins/default/textures/uv_test2.tga b/indra/newview/skins/default/textures/uv_test2.tga Binary files differindex a16000d1e4..a16000d1e4 100755..100644 --- a/indra/newview/skins/default/textures/uv_test2.tga +++ b/indra/newview/skins/default/textures/uv_test2.tga diff --git a/indra/newview/skins/default/textures/voice_meter_dot.j2c b/indra/newview/skins/default/textures/voice_meter_dot.j2c Binary files differindex e536c3338a..e536c3338a 100755..100644 --- a/indra/newview/skins/default/textures/voice_meter_dot.j2c +++ b/indra/newview/skins/default/textures/voice_meter_dot.j2c diff --git a/indra/newview/skins/default/textures/voice_meter_rings.j2c b/indra/newview/skins/default/textures/voice_meter_rings.j2c Binary files differindex 17e7c6c6a1..17e7c6c6a1 100755..100644 --- a/indra/newview/skins/default/textures/voice_meter_rings.j2c +++ b/indra/newview/skins/default/textures/voice_meter_rings.j2c diff --git a/indra/newview/skins/default/textures/white.tga b/indra/newview/skins/default/textures/white.tga Binary files differindex 9fe68631cf..9fe68631cf 100755..100644 --- a/indra/newview/skins/default/textures/white.tga +++ b/indra/newview/skins/default/textures/white.tga diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Down.png b/indra/newview/skins/default/textures/widgets/Arrow_Down.png Binary files differindex cb4eea953c..cb4eea953c 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Down.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Down.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Left.png b/indra/newview/skins/default/textures/widgets/Arrow_Left.png Binary files differindex a424282839..a424282839 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Left.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Left.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Right.png b/indra/newview/skins/default/textures/widgets/Arrow_Right.png Binary files differindex e32bee8f34..e32bee8f34 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Right.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Right.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png Binary files differindex 2d624c3779..2d624c3779 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png Binary files differindex 91c03c426e..91c03c426e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png Binary files differindex 38aac0e5ca..38aac0e5ca 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Up.png b/indra/newview/skins/default/textures/widgets/Arrow_Up.png Binary files differindex 48df69d82e..48df69d82e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Arrow_Up.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Up.png diff --git a/indra/newview/skins/default/textures/widgets/Badge_Background.png b/indra/newview/skins/default/textures/widgets/Badge_Background.png Binary files differindex 5089c30312..5089c30312 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Badge_Background.png +++ b/indra/newview/skins/default/textures/widgets/Badge_Background.png diff --git a/indra/newview/skins/default/textures/widgets/Badge_Border.png b/indra/newview/skins/default/textures/widgets/Badge_Border.png Binary files differindex 4b086a63fb..4b086a63fb 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Badge_Border.png +++ b/indra/newview/skins/default/textures/widgets/Badge_Border.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png Binary files differindex 3897e16801..3897e16801 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png Binary files differindex 95a4a36c9d..95a4a36c9d 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png Binary files differindex 20d1ebf53d..20d1ebf53d 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png Binary files differindex 63f4b503e2..63f4b503e2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png Binary files differindex d570f77f6d..d570f77f6d 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png Binary files differindex 28a002b118..28a002b118 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png Binary files differindex a195e80b0e..a195e80b0e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png Binary files differindex 9863ee32cb..9863ee32cb 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png Binary files differindex 2ffbc4a16f..2ffbc4a16f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png Binary files differindex ce47da169b..ce47da169b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png Binary files differindex 2225150983..2225150983 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png Binary files differindex 2d541d0f70..2d541d0f70 100755..100644 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png b/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png Binary files differindex c1ee210099..c1ee210099 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Off.png b/indra/newview/skins/default/textures/widgets/Checkbox_Off.png Binary files differindex 2525405f37..2525405f37 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_Off.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_Off.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On.png b/indra/newview/skins/default/textures/widgets/Checkbox_On.png Binary files differindex 2d9dba1592..2d9dba1592 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_On.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_On.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png Binary files differindex beaa7bcbf6..beaa7bcbf6 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png Binary files differindex 5bced95a89..5bced95a89 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Press.png b/indra/newview/skins/default/textures/widgets/Checkbox_Press.png Binary files differindex 44be193678..44be193678 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Checkbox_Press.png +++ b/indra/newview/skins/default/textures/widgets/Checkbox_Press.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png b/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png Binary files differindex d0fff1b3c3..d0fff1b3c3 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Off.png b/indra/newview/skins/default/textures/widgets/ComboButton_Off.png Binary files differindex 80402458b7..80402458b7 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_Off.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_Off.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_On.png b/indra/newview/skins/default/textures/widgets/ComboButton_On.png Binary files differindex b42cc7542e..b42cc7542e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_On.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_On.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png Binary files differindex bbc0657487..bbc0657487 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png b/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png Binary files differindex 2330cb420b..2330cb420b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png b/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png Binary files differindex b7b5c2e1d4..b7b5c2e1d4 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png +++ b/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png Binary files differindex 75057938d2..75057938d2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png +++ b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png b/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png Binary files differindex b295752ea9..b295752ea9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Off.png b/indra/newview/skins/default/textures/widgets/DropDown_Off.png Binary files differindex 4764ed4ee2..4764ed4ee2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DropDown_Off.png +++ b/indra/newview/skins/default/textures/widgets/DropDown_Off.png diff --git a/indra/newview/skins/default/textures/widgets/DropDown_On.png b/indra/newview/skins/default/textures/widgets/DropDown_On.png Binary files differindex 10262d3979..10262d3979 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DropDown_On.png +++ b/indra/newview/skins/default/textures/widgets/DropDown_On.png diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Press.png b/indra/newview/skins/default/textures/widgets/DropDown_Press.png Binary files differindex 16cb25cc77..16cb25cc77 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DropDown_Press.png +++ b/indra/newview/skins/default/textures/widgets/DropDown_Press.png diff --git a/indra/newview/skins/default/textures/widgets/DropTarget.png b/indra/newview/skins/default/textures/widgets/DropTarget.png Binary files differindex 3740c98cbc..3740c98cbc 100755..100644 --- a/indra/newview/skins/default/textures/widgets/DropTarget.png +++ b/indra/newview/skins/default/textures/widgets/DropTarget.png diff --git a/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png b/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png Binary files differindex c8dbc8e87a..c8dbc8e87a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png +++ b/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png Binary files differindex a1f21e8194..a1f21e8194 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png +++ b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png Binary files differindex 61f9b076ce..61f9b076ce 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png +++ b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Over.png b/indra/newview/skins/default/textures/widgets/ListItem_Over.png Binary files differindex 4b2b9ab3e5..4b2b9ab3e5 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ListItem_Over.png +++ b/indra/newview/skins/default/textures/widgets/ListItem_Over.png diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Select.png b/indra/newview/skins/default/textures/widgets/ListItem_Select.png Binary files differindex 317c672441..317c672441 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ListItem_Select.png +++ b/indra/newview/skins/default/textures/widgets/ListItem_Select.png diff --git a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png Binary files differindex e603c44384..e603c44384 100755..100644 --- a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png +++ b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png diff --git a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png Binary files differindex fbc164123f..fbc164123f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png +++ b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png b/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png Binary files differnew file mode 100644 index 0000000000..9478f7b813 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Background.png b/indra/newview/skins/default/textures/widgets/New_Tag_Background.png Binary files differindex cd639dd80f..cd639dd80f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/New_Tag_Background.png +++ b/indra/newview/skins/default/textures/widgets/New_Tag_Background.png diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Border.png b/indra/newview/skins/default/textures/widgets/New_Tag_Border.png Binary files differindex 56df0d0127..56df0d0127 100755..100644 --- a/indra/newview/skins/default/textures/widgets/New_Tag_Border.png +++ b/indra/newview/skins/default/textures/widgets/New_Tag_Border.png diff --git a/indra/newview/skins/default/textures/widgets/ProgressBar.png b/indra/newview/skins/default/textures/widgets/ProgressBar.png Binary files differindex 3f0e4eba28..3f0e4eba28 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ProgressBar.png +++ b/indra/newview/skins/default/textures/widgets/ProgressBar.png diff --git a/indra/newview/skins/default/textures/widgets/ProgressTrack.png b/indra/newview/skins/default/textures/widgets/ProgressTrack.png Binary files differindex bb6d9f4144..bb6d9f4144 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ProgressTrack.png +++ b/indra/newview/skins/default/textures/widgets/ProgressTrack.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png b/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png Binary files differindex 04e91bdaab..04e91bdaab 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Off.png b/indra/newview/skins/default/textures/widgets/PushButton_Off.png Binary files differindex 1ee0329e66..1ee0329e66 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Off.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Off.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On.png b/indra/newview/skins/default/textures/widgets/PushButton_On.png Binary files differindex 661d1c5611..661d1c5611 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_On.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_On.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png Binary files differindex 48e8aa2eab..48e8aa2eab 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Over.png Binary files differindex c227f07513..c227f07513 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Over.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Over.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Press.png Binary files differindex 0a4a3a6ad9..0a4a3a6ad9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Press.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Press.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected.png Binary files differindex 0a4a3a6ad9..0a4a3a6ad9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Selected.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png Binary files differindex 661d1c5611..661d1c5611 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png Binary files differindex 48e8aa2eab..48e8aa2eab 100755..100644 --- a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png +++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png b/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png Binary files differindex a1052684b9..a1052684b9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Off.png b/indra/newview/skins/default/textures/widgets/RadioButton_Off.png Binary files differindex c58e0305ef..c58e0305ef 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_Off.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_Off.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On.png b/indra/newview/skins/default/textures/widgets/RadioButton_On.png Binary files differindex c09a2197c7..c09a2197c7 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_On.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_On.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png Binary files differindex d7d444fd0c..d7d444fd0c 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png Binary files differindex a707e8ceb8..a707e8ceb8 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Press.png b/indra/newview/skins/default/textures/widgets/RadioButton_Press.png Binary files differindex 33eaa14030..33eaa14030 100755..100644 --- a/indra/newview/skins/default/textures/widgets/RadioButton_Press.png +++ b/indra/newview/skins/default/textures/widgets/RadioButton_Press.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png Binary files differindex 186822da43..186822da43 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png Binary files differindex a396380fb2..a396380fb2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png Binary files differindex 9568dea78a..9568dea78a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png Binary files differindex 42f999a451..42f999a451 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png Binary files differindex 549b3980f6..549b3980f6 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png Binary files differindex a74abd5d8a..a74abd5d8a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png Binary files differindex 176ffcdbb9..176ffcdbb9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png Binary files differindex 36056d0ad9..36056d0ad9 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png Binary files differindex 0c1fd6956b..0c1fd6956b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png Binary files differindex 4d245eb57a..4d245eb57a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png Binary files differindex 67a7a5568b..67a7a5568b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png Binary files differindex 0cc8c4404b..0cc8c4404b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png Binary files differindex 8a085aa966..8a085aa966 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png +++ b/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png Binary files differindex fc7fd93e7a..fc7fd93e7a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png +++ b/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png b/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png Binary files differindex 4f31c48c02..4f31c48c02 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png +++ b/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png b/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png Binary files differindex f89ee3f68f..f89ee3f68f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png +++ b/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png Binary files differindex 3b39c51a77..3b39c51a77 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png Binary files differindex 57ed79d733..57ed79d733 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png Binary files differindex 5b8878e0cb..5b8878e0cb 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png Binary files differindex 379953216b..379953216b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png Binary files differindex 379953216b..379953216b 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png Binary files differindex 77c4224539..77c4224539 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png Binary files differindex 8b93dd551e..8b93dd551e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png Binary files differindex 3f207cbea2..3f207cbea2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png Binary files differindex deb87c8489..deb87c8489 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png Binary files differindex ca7027da91..ca7027da91 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png Binary files differindex 220df9db25..220df9db25 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png Binary files differindex dde367f05e..dde367f05e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png Binary files differindex 8e6b9c8c6f..8e6b9c8c6f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png Binary files differindex b1521199ff..b1521199ff 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png Binary files differindex 1574f48b28..1574f48b28 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png Binary files differindex 2717e7d7b0..2717e7d7b0 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png Binary files differindex 3883518033..3883518033 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png Binary files differindex 3883518033..3883518033 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png Binary files differindex ab31f6ded7..ab31f6ded7 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png Binary files differindex 1574f48b28..1574f48b28 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png +++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png Binary files differindex b627232012..b627232012 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png Binary files differindex b627232012..b627232012 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png +++ b/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png Binary files differindex 7081f9cfe0..7081f9cfe0 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png +++ b/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png diff --git a/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png b/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png Binary files differindex 232006ee5a..232006ee5a 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png +++ b/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png diff --git a/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png b/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png Binary files differindex cd002b3973..cd002b3973 100755..100644 --- a/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png +++ b/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png Binary files differindex cf0d8ee2c1..cf0d8ee2c1 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png +++ b/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png Binary files differindex fe3a7beafd..fe3a7beafd 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png +++ b/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png Binary files differindex 133589b8a6..133589b8a6 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png +++ b/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png Binary files differindex e83babc519..e83babc519 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png +++ b/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Active.png b/indra/newview/skins/default/textures/widgets/TextField_Active.png Binary files differindex ca6daab4e0..ca6daab4e0 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Active.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Active.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Disabled.png b/indra/newview/skins/default/textures/widgets/TextField_Disabled.png Binary files differindex 3d205a3f2e..3d205a3f2e 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Off.png b/indra/newview/skins/default/textures/widgets/TextField_Off.png Binary files differindex 911d907acc..911d907acc 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Off.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Off.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png Binary files differindex fa79cb6260..fa79cb6260 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png Binary files differindex 8b504af101..8b504af101 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png Binary files differindex 862b13d219..862b13d219 100755..100644 --- a/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png +++ b/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png diff --git a/indra/newview/skins/default/textures/widgets/Tooltip.png b/indra/newview/skins/default/textures/widgets/Tooltip.png Binary files differindex 3c4d6a965d..3c4d6a965d 100755..100644 --- a/indra/newview/skins/default/textures/widgets/Tooltip.png +++ b/indra/newview/skins/default/textures/widgets/Tooltip.png diff --git a/indra/newview/skins/default/textures/widgets/bevel_background.png b/indra/newview/skins/default/textures/widgets/bevel_background.png Binary files differindex fb5067503d..fb5067503d 100755..100644 --- a/indra/newview/skins/default/textures/widgets/bevel_background.png +++ b/indra/newview/skins/default/textures/widgets/bevel_background.png diff --git a/indra/newview/skins/default/textures/widgets/buy_off.png b/indra/newview/skins/default/textures/widgets/buy_off.png Binary files differindex ee5979046f..ee5979046f 100755..100644 --- a/indra/newview/skins/default/textures/widgets/buy_off.png +++ b/indra/newview/skins/default/textures/widgets/buy_off.png diff --git a/indra/newview/skins/default/textures/widgets/buy_over.png b/indra/newview/skins/default/textures/widgets/buy_over.png Binary files differindex 93adb68c86..93adb68c86 100755..100644 --- a/indra/newview/skins/default/textures/widgets/buy_over.png +++ b/indra/newview/skins/default/textures/widgets/buy_over.png diff --git a/indra/newview/skins/default/textures/widgets/buy_press.png b/indra/newview/skins/default/textures/widgets/buy_press.png Binary files differindex 3f442d6eaa..3f442d6eaa 100755..100644 --- a/indra/newview/skins/default/textures/widgets/buy_press.png +++ b/indra/newview/skins/default/textures/widgets/buy_press.png diff --git a/indra/newview/skins/default/textures/widgets/jump_left_in.png b/indra/newview/skins/default/textures/widgets/jump_left_in.png Binary files differindex a1425ccfa0..a1425ccfa0 100755..100644 --- a/indra/newview/skins/default/textures/widgets/jump_left_in.png +++ b/indra/newview/skins/default/textures/widgets/jump_left_in.png diff --git a/indra/newview/skins/default/textures/widgets/jump_left_out.png b/indra/newview/skins/default/textures/widgets/jump_left_out.png Binary files differindex 38edf47d19..38edf47d19 100755..100644 --- a/indra/newview/skins/default/textures/widgets/jump_left_out.png +++ b/indra/newview/skins/default/textures/widgets/jump_left_out.png diff --git a/indra/newview/skins/default/textures/widgets/jump_right_in.png b/indra/newview/skins/default/textures/widgets/jump_right_in.png Binary files differindex 39359ab2e2..39359ab2e2 100755..100644 --- a/indra/newview/skins/default/textures/widgets/jump_right_in.png +++ b/indra/newview/skins/default/textures/widgets/jump_right_in.png diff --git a/indra/newview/skins/default/textures/widgets/jump_right_out.png b/indra/newview/skins/default/textures/widgets/jump_right_out.png Binary files differindex 3f76bbffac..3f76bbffac 100755..100644 --- a/indra/newview/skins/default/textures/widgets/jump_right_out.png +++ b/indra/newview/skins/default/textures/widgets/jump_right_out.png diff --git a/indra/newview/skins/default/textures/windows/Dragbar.png b/indra/newview/skins/default/textures/windows/Dragbar.png Binary files differindex d94dda1aae..d94dda1aae 100755..100644 --- a/indra/newview/skins/default/textures/windows/Dragbar.png +++ b/indra/newview/skins/default/textures/windows/Dragbar.png diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png Binary files differindex 6ac9fe2efd..6ac9fe2efd 100755..100644 --- a/indra/newview/skins/default/textures/windows/Flyout_Left.png +++ b/indra/newview/skins/default/textures/windows/Flyout_Left.png diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer.png Binary files differindex 69fc08ceaa..69fc08ceaa 100755..100644 --- a/indra/newview/skins/default/textures/windows/Flyout_Pointer.png +++ b/indra/newview/skins/default/textures/windows/Flyout_Pointer.png diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png Binary files differindex aa1f0625aa..aa1f0625aa 100755..100644 --- a/indra/newview/skins/default/textures/windows/Flyout_Right.png +++ b/indra/newview/skins/default/textures/windows/Flyout_Right.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png Binary files differindex 3534b716fd..3534b716fd 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Press.png b/indra/newview/skins/default/textures/windows/Icon_Close_Press.png Binary files differindex ea547fca6f..ea547fca6f 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Close_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Close_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png b/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png Binary files differindex ecf01c617a..ecf01c617a 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png +++ b/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png Binary files differindex 4207ba68e5..4207ba68e5 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png b/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png Binary files differindex 2d09475783..2d09475783 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png Binary files differindex 93d62a8d4f..93d62a8d4f 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png +++ b/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png Binary files differindex b2b2a77a88..b2b2a77a88 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png Binary files differindex 6fc3744d6b..6fc3744d6b 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png Binary files differindex 177c0675bb..177c0675bb 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Press.png b/indra/newview/skins/default/textures/windows/Icon_Help_Press.png Binary files differindex aa21a1c789..aa21a1c789 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Help_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Help_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png Binary files differindex a98a3a98c2..a98a3a98c2 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png Binary files differindex 5df0e7691c..5df0e7691c 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png Binary files differindex b4d4ef01fc..b4d4ef01fc 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png Binary files differindex 0d0238dc32..0d0238dc32 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png Binary files differindex 9a71d16a3f..9a71d16a3f 100755..100644 --- a/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Inspector_Background.png b/indra/newview/skins/default/textures/windows/Inspector_Background.png Binary files differindex 4c2a728ac5..4c2a728ac5 100755..100644 --- a/indra/newview/skins/default/textures/windows/Inspector_Background.png +++ b/indra/newview/skins/default/textures/windows/Inspector_Background.png diff --git a/indra/newview/skins/default/textures/windows/Inspector_Hover.png b/indra/newview/skins/default/textures/windows/Inspector_Hover.png Binary files differindex feeee78033..feeee78033 100755..100644 --- a/indra/newview/skins/default/textures/windows/Inspector_Hover.png +++ b/indra/newview/skins/default/textures/windows/Inspector_Hover.png diff --git a/indra/newview/skins/default/textures/windows/Inspector_I.png b/indra/newview/skins/default/textures/windows/Inspector_I.png Binary files differindex b4875fd638..b4875fd638 100755..100644 --- a/indra/newview/skins/default/textures/windows/Inspector_I.png +++ b/indra/newview/skins/default/textures/windows/Inspector_I.png diff --git a/indra/newview/skins/default/textures/windows/Resize_Corner.png b/indra/newview/skins/default/textures/windows/Resize_Corner.png Binary files differindex 16ed63e428..16ed63e428 100755..100644 --- a/indra/newview/skins/default/textures/windows/Resize_Corner.png +++ b/indra/newview/skins/default/textures/windows/Resize_Corner.png diff --git a/indra/newview/skins/default/textures/windows/Toast_Background.png b/indra/newview/skins/default/textures/windows/Toast_Background.png Binary files differindex f27d1a12ec..f27d1a12ec 100755..100644 --- a/indra/newview/skins/default/textures/windows/Toast_Background.png +++ b/indra/newview/skins/default/textures/windows/Toast_Background.png diff --git a/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png b/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png Binary files differindex 78b137cdaf..78b137cdaf 100755..100644 --- a/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png +++ b/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png diff --git a/indra/newview/skins/default/textures/windows/Toast_Over.png b/indra/newview/skins/default/textures/windows/Toast_Over.png Binary files differindex 807e8e553c..807e8e553c 100755..100644 --- a/indra/newview/skins/default/textures/windows/Toast_Over.png +++ b/indra/newview/skins/default/textures/windows/Toast_Over.png diff --git a/indra/newview/skins/default/textures/windows/Volume_Background.png b/indra/newview/skins/default/textures/windows/Volume_Background.png Binary files differindex 43aaa441f5..43aaa441f5 100755..100644 --- a/indra/newview/skins/default/textures/windows/Volume_Background.png +++ b/indra/newview/skins/default/textures/windows/Volume_Background.png diff --git a/indra/newview/skins/default/textures/windows/Wearables_Divider.png b/indra/newview/skins/default/textures/windows/Wearables_Divider.png Binary files differindex 9dce7bf45c..9dce7bf45c 100755..100644 --- a/indra/newview/skins/default/textures/windows/Wearables_Divider.png +++ b/indra/newview/skins/default/textures/windows/Wearables_Divider.png diff --git a/indra/newview/skins/default/textures/windows/Window_Background.png b/indra/newview/skins/default/textures/windows/Window_Background.png Binary files differindex db253900af..db253900af 100755..100644 --- a/indra/newview/skins/default/textures/windows/Window_Background.png +++ b/indra/newview/skins/default/textures/windows/Window_Background.png diff --git a/indra/newview/skins/default/textures/windows/Window_Foreground.png b/indra/newview/skins/default/textures/windows/Window_Foreground.png Binary files differindex b81ec5b43c..b81ec5b43c 100755..100644 --- a/indra/newview/skins/default/textures/windows/Window_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Window_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png Binary files differindex a570ac06bd..a570ac06bd 100755..100644 --- a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png +++ b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png Binary files differindex d573e8c69a..d573e8c69a 100755..100644 --- a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_down.png b/indra/newview/skins/default/textures/windows/hint_arrow_down.png Binary files differindex 0cb5a819ec..0cb5a819ec 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_arrow_down.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_down.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_left.png Binary files differindex 45204d9132..45204d9132 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_arrow_left.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_left.png 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 Binary files differindex 3e3ae9f42d..3e3ae9f42d 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_right.png b/indra/newview/skins/default/textures/windows/hint_arrow_right.png Binary files differindex 3fe7a773c3..3fe7a773c3 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_arrow_right.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_right.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_up.png b/indra/newview/skins/default/textures/windows/hint_arrow_up.png Binary files differindex 44f003dc63..44f003dc63 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_arrow_up.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_up.png diff --git a/indra/newview/skins/default/textures/windows/hint_background.png b/indra/newview/skins/default/textures/windows/hint_background.png Binary files differindex e25f354347..e25f354347 100755..100644 --- a/indra/newview/skins/default/textures/windows/hint_background.png +++ b/indra/newview/skins/default/textures/windows/hint_background.png diff --git a/indra/newview/skins/default/textures/windows/startup_logo.png b/indra/newview/skins/default/textures/windows/startup_logo.png Binary files differindex b89449692b..b89449692b 100755..100644 --- a/indra/newview/skins/default/textures/windows/startup_logo.png +++ b/indra/newview/skins/default/textures/windows/startup_logo.png diff --git a/indra/newview/skins/default/textures/windows/yellow_gradient.png b/indra/newview/skins/default/textures/windows/yellow_gradient.png Binary files differindex 5bd21b4297..5bd21b4297 100755..100644 --- a/indra/newview/skins/default/textures/windows/yellow_gradient.png +++ b/indra/newview/skins/default/textures/windows/yellow_gradient.png diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png Binary files differindex 54934f738a..54934f738a 100755..100644 --- a/indra/newview/skins/default/textures/world/BeaconArrow.png +++ b/indra/newview/skins/default/textures/world/BeaconArrow.png diff --git a/indra/newview/skins/default/textures/world/CameraDragDot.png b/indra/newview/skins/default/textures/world/CameraDragDot.png Binary files differindex 2ccf098e0f..2ccf098e0f 100755..100644 --- a/indra/newview/skins/default/textures/world/CameraDragDot.png +++ b/indra/newview/skins/default/textures/world/CameraDragDot.png diff --git a/indra/newview/skins/default/textures/world/NoEntryLines.png b/indra/newview/skins/default/textures/world/NoEntryLines.png Binary files differindex d7496b8bd0..d7496b8bd0 100755..100644 --- a/indra/newview/skins/default/textures/world/NoEntryLines.png +++ b/indra/newview/skins/default/textures/world/NoEntryLines.png diff --git a/indra/newview/skins/default/textures/world/NoEntryPassLines.png b/indra/newview/skins/default/textures/world/NoEntryPassLines.png Binary files differindex e4b8fc6ae2..e4b8fc6ae2 100755..100644 --- a/indra/newview/skins/default/textures/world/NoEntryPassLines.png +++ b/indra/newview/skins/default/textures/world/NoEntryPassLines.png diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 9206690c8f..8ed0b629e4 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="OM [CAPITALIZED_APP_NAME]"> <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </floater.string> <floater.string name="AboutCompiler"> diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index 5b9e618666..5b9e618666 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml diff --git a/indra/newview/skins/default/xui/da/floater_activeim.xml b/indra/newview/skins/default/xui/da/floater_activeim.xml index 6fdac8d880..6fdac8d880 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_activeim.xml +++ b/indra/newview/skins/default/xui/da/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/da/floater_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml index adf96841c0..adf96841c0 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_animation_preview.xml diff --git a/indra/newview/skins/default/xui/da/floater_auction.xml b/indra/newview/skins/default/xui/da/floater_auction.xml index e74e8a991b..e74e8a991b 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_auction.xml +++ b/indra/newview/skins/default/xui/da/floater_auction.xml diff --git a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml index e97089f61e..e97089f61e 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml index d0d766eaab..d0d766eaab 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml index 5100a6df1f..5100a6df1f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_beacons.xml +++ b/indra/newview/skins/default/xui/da/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/da/floater_build_options.xml b/indra/newview/skins/default/xui/da/floater_build_options.xml index d3c3ac1899..d3c3ac1899 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_build_options.xml +++ b/indra/newview/skins/default/xui/da/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml index 58a1c1b73e..58a1c1b73e 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/da/floater_bumps.xml b/indra/newview/skins/default/xui/da/floater_bumps.xml index 6b265832cd..6b265832cd 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_bumps.xml +++ b/indra/newview/skins/default/xui/da/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/da/floater_buy_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml index 085fa2f9cc..085fa2f9cc 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml index 3c0428b2b0..3c0428b2b0 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml index e32b25ca17..e32b25ca17 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml index f6ee78fa6d..f6ee78fa6d 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/da/floater_buy_object.xml b/indra/newview/skins/default/xui/da/floater_buy_object.xml index 7eb4787139..7eb4787139 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml index b5d5e8bc08..b5d5e8bc08 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_camera.xml +++ b/indra/newview/skins/default/xui/da/floater_camera.xml diff --git a/indra/newview/skins/default/xui/da/floater_choose_group.xml b/indra/newview/skins/default/xui/da/floater_choose_group.xml index 1ccda4f1d7..1ccda4f1d7 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/da/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/da/floater_color_picker.xml b/indra/newview/skins/default/xui/da/floater_color_picker.xml index f744b06277..f744b06277 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/da/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/da/floater_critical.xml b/indra/newview/skins/default/xui/da/floater_critical.xml index 8c2672f39f..8c2672f39f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_critical.xml +++ b/indra/newview/skins/default/xui/da/floater_critical.xml diff --git a/indra/newview/skins/default/xui/da/floater_display_name.xml b/indra/newview/skins/default/xui/da/floater_display_name.xml index e848006d8b..e848006d8b 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_display_name.xml +++ b/indra/newview/skins/default/xui/da/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/da/floater_event.xml b/indra/newview/skins/default/xui/da/floater_event.xml index a9eddaaf8d..a9eddaaf8d 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_event.xml +++ b/indra/newview/skins/default/xui/da/floater_event.xml diff --git a/indra/newview/skins/default/xui/da/floater_font_test.xml b/indra/newview/skins/default/xui/da/floater_font_test.xml index 591d07188c..591d07188c 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_font_test.xml +++ b/indra/newview/skins/default/xui/da/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml index b7075e356a..b7075e356a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_gesture.xml +++ b/indra/newview/skins/default/xui/da/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/da/floater_god_tools.xml b/indra/newview/skins/default/xui/da/floater_god_tools.xml index 5d3453e327..5d3453e327 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml index a5942eb625..a5942eb625 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/da/floater_help_browser.xml b/indra/newview/skins/default/xui/da/floater_help_browser.xml index 4eba4aee1f..4eba4aee1f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/da/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml index c70da45955..c70da45955 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_hud.xml +++ b/indra/newview/skins/default/xui/da/floater_hud.xml diff --git a/indra/newview/skins/default/xui/da/floater_im_container.xml b/indra/newview/skins/default/xui/da/floater_im_container.xml index 28b2f7f7eb..28b2f7f7eb 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_im_container.xml +++ b/indra/newview/skins/default/xui/da/floater_im_container.xml 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 16df7e4b03..16df7e4b03 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_im_session.xml +++ b/indra/newview/skins/default/xui/da/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/da/floater_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml index 5355127ef5..5355127ef5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/da/floater_import_collada.xml b/indra/newview/skins/default/xui/da/floater_import_collada.xml index ebc7c86388..ebc7c86388 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/da/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml index dd8cb6f97a..dd8cb6f97a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/da/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml index d0dca8863a..d0dca8863a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_inspect.xml +++ b/indra/newview/skins/default/xui/da/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/da/floater_inventory.xml b/indra/newview/skins/default/xui/da/floater_inventory.xml index 3a4b0fbd6b..3a4b0fbd6b 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_inventory.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory.xml diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml index 59dcc87140..59dcc87140 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml diff --git a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml index 655701bb96..655701bb96 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml diff --git a/indra/newview/skins/default/xui/da/floater_joystick.xml b/indra/newview/skins/default/xui/da/floater_joystick.xml index 49e1397e9f..49e1397e9f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_joystick.xml +++ b/indra/newview/skins/default/xui/da/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/da/floater_land_holdings.xml b/indra/newview/skins/default/xui/da/floater_land_holdings.xml index b3c12627f7..b3c12627f7 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/da/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml index 0cc13fd736..0cc13fd736 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml diff --git a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml index 2594d6bb9d..2594d6bb9d 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/da/floater_map.xml b/indra/newview/skins/default/xui/da/floater_map.xml index 4912d73ba0..4912d73ba0 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_map.xml +++ b/indra/newview/skins/default/xui/da/floater_map.xml diff --git a/indra/newview/skins/default/xui/da/floater_media_browser.xml b/indra/newview/skins/default/xui/da/floater_media_browser.xml index d3028c32f9..d3028c32f9 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/da/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/da/floater_media_settings.xml b/indra/newview/skins/default/xui/da/floater_media_settings.xml index 67c122b9d5..67c122b9d5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml index 60bb3149a5..60bb3149a5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/da/floater_model_preview.xml b/indra/newview/skins/default/xui/da/floater_model_preview.xml index a98c70ff52..a98c70ff52 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/da/floater_moveview.xml b/indra/newview/skins/default/xui/da/floater_moveview.xml index 14d3604b43..14d3604b43 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_moveview.xml +++ b/indra/newview/skins/default/xui/da/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/da/floater_mute_object.xml b/indra/newview/skins/default/xui/da/floater_mute_object.xml index 3b3f670792..3b3f670792 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/da/floater_mute_object.xml 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 76bc40edac..76bc40edac 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/da/floater_openobject.xml b/indra/newview/skins/default/xui/da/floater_openobject.xml index 92fdd1e0a6..92fdd1e0a6 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_openobject.xml +++ b/indra/newview/skins/default/xui/da/floater_openobject.xml diff --git a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml index a5545668a2..a5545668a2 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml index 96ec106803..96ec106803 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_pay.xml +++ b/indra/newview/skins/default/xui/da/floater_pay.xml diff --git a/indra/newview/skins/default/xui/da/floater_pay_object.xml b/indra/newview/skins/default/xui/da/floater_pay_object.xml index 260b257c33..260b257c33 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/da/floater_pay_object.xml diff --git a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml index eecddbcdb0..eecddbcdb0 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/da/floater_postcard.xml b/indra/newview/skins/default/xui/da/floater_postcard.xml index 44b0fd4faa..44b0fd4faa 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_postcard.xml +++ b/indra/newview/skins/default/xui/da/floater_postcard.xml diff --git a/indra/newview/skins/default/xui/da/floater_preferences.xml b/indra/newview/skins/default/xui/da/floater_preferences.xml index 6caac14cf5..6caac14cf5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preferences.xml +++ b/indra/newview/skins/default/xui/da/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/da/floater_preview_animation.xml b/indra/newview/skins/default/xui/da/floater_preview_animation.xml index 436843decc..436843decc 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml index bd2b194717..bd2b194717 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml index 5a0f5a32c0..5a0f5a32c0 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/da/floater_preview_sound.xml b/indra/newview/skins/default/xui/da/floater_preview_sound.xml index 21f7656462..21f7656462 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/da/floater_preview_texture.xml b/indra/newview/skins/default/xui/da/floater_preview_texture.xml index 48cf53f563..48cf53f563 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/da/floater_price_for_listing.xml b/indra/newview/skins/default/xui/da/floater_price_for_listing.xml index b091fa09b5..b091fa09b5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/da/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/da/floater_publish_classified.xml b/indra/newview/skins/default/xui/da/floater_publish_classified.xml index 0f65e6c18a..0f65e6c18a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/da/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/da/floater_region_debug_console.xml b/indra/newview/skins/default/xui/da/floater_region_debug_console.xml index 71313f4fea..71313f4fea 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/da/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/da/floater_region_info.xml b/indra/newview/skins/default/xui/da/floater_region_info.xml index ae00f90f16..ae00f90f16 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_region_info.xml +++ b/indra/newview/skins/default/xui/da/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/da/floater_report_abuse.xml b/indra/newview/skins/default/xui/da/floater_report_abuse.xml index 07978792b9..07978792b9 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/da/floater_report_abuse.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_debug.xml b/indra/newview/skins/default/xui/da/floater_script_debug.xml index df60a2e23f..df60a2e23f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/da/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_limits.xml b/indra/newview/skins/default/xui/da/floater_script_limits.xml index a7f86a782a..a7f86a782a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/da/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_preview.xml b/indra/newview/skins/default/xui/da/floater_script_preview.xml index 1aacab6915..1aacab6915 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_queue.xml b/indra/newview/skins/default/xui/da/floater_script_queue.xml index 1ff5494458..1ff5494458 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/da/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/da/floater_script_search.xml b/indra/newview/skins/default/xui/da/floater_script_search.xml index f1605cac34..f1605cac34 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_script_search.xml +++ b/indra/newview/skins/default/xui/da/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/da/floater_search.xml b/indra/newview/skins/default/xui/da/floater_search.xml index 80a30b1aa1..80a30b1aa1 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_search.xml +++ b/indra/newview/skins/default/xui/da/floater_search.xml diff --git a/indra/newview/skins/default/xui/da/floater_select_key.xml b/indra/newview/skins/default/xui/da/floater_select_key.xml index 9f7aad5e03..9f7aad5e03 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_select_key.xml +++ b/indra/newview/skins/default/xui/da/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/da/floater_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml index 873e6d7995..873e6d7995 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/da/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml index f7eda56e48..f7eda56e48 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml index 926c2429ac..926c2429ac 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/da/floater_snapshot.xml diff --git a/indra/newview/skins/default/xui/da/floater_sound_devices.xml b/indra/newview/skins/default/xui/da/floater_sound_devices.xml index cb4cbba570..cb4cbba570 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/da/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/da/floater_sound_preview.xml b/indra/newview/skins/default/xui/da/floater_sound_preview.xml index 5f74f28a23..5f74f28a23 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/da/floater_stats.xml b/indra/newview/skins/default/xui/da/floater_stats.xml index fe3fa9626e..fe3fa9626e 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_stats.xml +++ b/indra/newview/skins/default/xui/da/floater_stats.xml diff --git a/indra/newview/skins/default/xui/da/floater_sys_well.xml b/indra/newview/skins/default/xui/da/floater_sys_well.xml index f203c2504f..f203c2504f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/da/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/da/floater_telehub.xml b/indra/newview/skins/default/xui/da/floater_telehub.xml index 5a0e89aa98..5a0e89aa98 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_telehub.xml +++ b/indra/newview/skins/default/xui/da/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml index fbc7fe2319..fbc7fe2319 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 9be129bbf6..9be129bbf6 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml diff --git a/indra/newview/skins/default/xui/da/floater_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml index 86c24d2c19..86c24d2c19 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/da/floater_top_objects.xml diff --git a/indra/newview/skins/default/xui/da/floater_tos.xml b/indra/newview/skins/default/xui/da/floater_tos.xml index af9ee0bd06..af9ee0bd06 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_tos.xml +++ b/indra/newview/skins/default/xui/da/floater_tos.xml diff --git a/indra/newview/skins/default/xui/da/floater_url_entry.xml b/indra/newview/skins/default/xui/da/floater_url_entry.xml index 30b3b7184b..30b3b7184b 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/da/floater_url_entry.xml 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 69de696bf5..69de696bf5 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/da/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/da/floater_voice_effect.xml b/indra/newview/skins/default/xui/da/floater_voice_effect.xml index 86ad251103..86ad251103 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/da/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/da/floater_web_content.xml b/indra/newview/skins/default/xui/da/floater_web_content.xml index 74092e88ec..74092e88ec 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_web_content.xml +++ b/indra/newview/skins/default/xui/da/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml index 443e84b64a..443e84b64a 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/da/floater_window_size.xml b/indra/newview/skins/default/xui/da/floater_window_size.xml index db8ead21bd..db8ead21bd 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_window_size.xml +++ b/indra/newview/skins/default/xui/da/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml index 97364e0f9f..97364e0f9f 100755..100644 --- a/indra/newview/skins/default/xui/da/floater_world_map.xml +++ b/indra/newview/skins/default/xui/da/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml index dc1ed562eb..dc1ed562eb 100755..100644 --- a/indra/newview/skins/default/xui/da/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/da/inspect_group.xml b/indra/newview/skins/default/xui/da/inspect_group.xml index 486c5d8784..486c5d8784 100755..100644 --- a/indra/newview/skins/default/xui/da/inspect_group.xml +++ b/indra/newview/skins/default/xui/da/inspect_group.xml diff --git a/indra/newview/skins/default/xui/da/inspect_object.xml b/indra/newview/skins/default/xui/da/inspect_object.xml index 78ccc5b869..78ccc5b869 100755..100644 --- a/indra/newview/skins/default/xui/da/inspect_object.xml +++ b/indra/newview/skins/default/xui/da/inspect_object.xml diff --git a/indra/newview/skins/default/xui/da/inspect_remote_object.xml b/indra/newview/skins/default/xui/da/inspect_remote_object.xml index a06452afe6..a06452afe6 100755..100644 --- a/indra/newview/skins/default/xui/da/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/da/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml index 0e3cbfd2d2..0e3cbfd2d2 100755..100644 --- a/indra/newview/skins/default/xui/da/language_settings.xml +++ b/indra/newview/skins/default/xui/da/language_settings.xml 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 index 1e8301dc4c..1e8301dc4c 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/da/menu_attachment_other.xml b/indra/newview/skins/default/xui/da/menu_attachment_other.xml index ca7b184942..ca7b184942 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/da/menu_attachment_other.xml 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 35ba27f9e2..35ba27f9e2 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/da/menu_attachment_self.xml diff --git a/indra/newview/skins/default/xui/da/menu_avatar_icon.xml b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml index 26b58ce1ab..26b58ce1ab 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/da/menu_avatar_other.xml b/indra/newview/skins/default/xui/da/menu_avatar_other.xml index a778dedf0b..a778dedf0b 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_other.xml 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 4e6b42a744..4e6b42a744 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml index a0d74db36d..a0d74db36d 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/da/menu_bottomtray.xml diff --git a/indra/newview/skins/default/xui/da/menu_cof_attachment.xml b/indra/newview/skins/default/xui/da/menu_cof_attachment.xml index 9d7fc0f223..9d7fc0f223 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/da/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/da/menu_cof_body_part.xml b/indra/newview/skins/default/xui/da/menu_cof_body_part.xml index 0e90d5a3ae..0e90d5a3ae 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/da/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/da/menu_cof_clothing.xml b/indra/newview/skins/default/xui/da/menu_cof_clothing.xml index 16c225b7d9..16c225b7d9 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/da/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/da/menu_cof_gear.xml b/indra/newview/skins/default/xui/da/menu_cof_gear.xml index f44369fd84..f44369fd84 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/da/menu_edit.xml b/indra/newview/skins/default/xui/da/menu_edit.xml index 3752f42b1c..3752f42b1c 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_edit.xml +++ b/indra/newview/skins/default/xui/da/menu_edit.xml diff --git a/indra/newview/skins/default/xui/da/menu_favorites.xml b/indra/newview/skins/default/xui/da/menu_favorites.xml index a4793e294c..a4793e294c 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_favorites.xml +++ b/indra/newview/skins/default/xui/da/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/da/menu_gesture_gear.xml b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml index a9010e99b6..a9010e99b6 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/da/menu_group_plus.xml b/indra/newview/skins/default/xui/da/menu_group_plus.xml index 97fbec1ed1..97fbec1ed1 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/da/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/da/menu_hide_navbar.xml b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml index d96a8a8a17..d96a8a8a17 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml index f64a6ad455..f64a6ad455 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml index b89d9a5789..b89d9a5789 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml index 6ebc40a8dd..6ebc40a8dd 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml index 8da35adb1b..8da35adb1b 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml 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 e28842836d..e28842836d 100755..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 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 887c6484bc..887c6484bc 100755..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 diff --git a/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml index c3b03232bf..c3b03232bf 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/da/menu_inventory.xml b/indra/newview/skins/default/xui/da/menu_inventory.xml index f9bdf36f1f..f9bdf36f1f 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_inventory.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory.xml diff --git a/indra/newview/skins/default/xui/da/menu_inventory_add.xml b/indra/newview/skins/default/xui/da/menu_inventory_add.xml index eca03d3ee9..eca03d3ee9 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml index 4809b24463..4809b24463 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/da/menu_land.xml b/indra/newview/skins/default/xui/da/menu_land.xml index 1548f18f89..1548f18f89 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_land.xml +++ b/indra/newview/skins/default/xui/da/menu_land.xml diff --git a/indra/newview/skins/default/xui/da/menu_landmark.xml b/indra/newview/skins/default/xui/da/menu_landmark.xml index 3cf2ffe375..3cf2ffe375 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_landmark.xml +++ b/indra/newview/skins/default/xui/da/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml index 0b7a5040ae..0b7a5040ae 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_login.xml +++ b/indra/newview/skins/default/xui/da/menu_login.xml diff --git a/indra/newview/skins/default/xui/da/menu_media_ctrl.xml b/indra/newview/skins/default/xui/da/menu_media_ctrl.xml index 788b1c4b59..788b1c4b59 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/da/menu_media_ctrl.xml 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 186dbd476a..186dbd476a 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml index d9626692d5..d9626692d5 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/da/menu_navbar.xml b/indra/newview/skins/default/xui/da/menu_navbar.xml index c04206824a..c04206824a 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_navbar.xml +++ b/indra/newview/skins/default/xui/da/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/da/menu_nearby_chat.xml b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml index be532ad406..be532ad406 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/da/menu_notification_well_button.xml b/indra/newview/skins/default/xui/da/menu_notification_well_button.xml index 40b35b5fdd..40b35b5fdd 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/da/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml index ba62ccf90c..ba62ccf90c 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_object.xml +++ b/indra/newview/skins/default/xui/da/menu_object.xml diff --git a/indra/newview/skins/default/xui/da/menu_object_icon.xml b/indra/newview/skins/default/xui/da/menu_object_icon.xml index 08aeb633b6..08aeb633b6 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/da/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/da/menu_outfit_gear.xml b/indra/newview/skins/default/xui/da/menu_outfit_gear.xml index 0b0fff3b93..0b0fff3b93 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/da/menu_outfit_tab.xml b/indra/newview/skins/default/xui/da/menu_outfit_tab.xml index d6a6f2724f..d6a6f2724f 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/da/menu_outfit_tab.xml 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 5951d3ffb9..5951d3ffb9 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/da/menu_participant_list.xml 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 32c5e6a6c7..32c5e6a6c7 100755..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 diff --git a/indra/newview/skins/default/xui/da/menu_people_groups.xml b/indra/newview/skins/default/xui/da/menu_people_groups.xml index 841f58b619..841f58b619 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/da/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml index 0b9a791530..0b9a791530 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby.xml b/indra/newview/skins/default/xui/da/menu_people_nearby.xml index 5470c32761..5470c32761 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/da/menu_people_nearby.xml 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 9318a0e340..9318a0e340 100755..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 diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml index 2f35ff3c92..2f35ff3c92 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml index d081f637f2..d081f637f2 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/da/menu_picks.xml b/indra/newview/skins/default/xui/da/menu_picks.xml index 81ee900773..81ee900773 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_picks.xml +++ b/indra/newview/skins/default/xui/da/menu_picks.xml diff --git a/indra/newview/skins/default/xui/da/menu_picks_plus.xml b/indra/newview/skins/default/xui/da/menu_picks_plus.xml index d95071fbbb..d95071fbbb 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/da/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/da/menu_place.xml b/indra/newview/skins/default/xui/da/menu_place.xml index b87964ac14..b87964ac14 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_place.xml +++ b/indra/newview/skins/default/xui/da/menu_place.xml diff --git a/indra/newview/skins/default/xui/da/menu_place_add_button.xml b/indra/newview/skins/default/xui/da/menu_place_add_button.xml index 7ad2253550..7ad2253550 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/da/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml index 5f573c2363..5f573c2363 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml index 13dbcdd42e..13dbcdd42e 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/da/menu_profile_overflow.xml b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml index 6745007c99..6745007c99 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/da/menu_save_outfit.xml b/indra/newview/skins/default/xui/da/menu_save_outfit.xml index 188229b586..188229b586 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/da/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/da/menu_script_chiclet.xml b/indra/newview/skins/default/xui/da/menu_script_chiclet.xml index cdd3212373..cdd3212373 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/da/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/da/menu_slurl.xml b/indra/newview/skins/default/xui/da/menu_slurl.xml index a9302e111e..a9302e111e 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_slurl.xml +++ b/indra/newview/skins/default/xui/da/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml index a1c25fea69..a1c25fea69 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml index dbaec62087..dbaec62087 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml index c4d4bb4b5b..c4d4bb4b5b 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/da/menu_text_editor.xml b/indra/newview/skins/default/xui/da/menu_text_editor.xml index 3ff31ea232..3ff31ea232 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/da/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/da/menu_topinfobar.xml b/indra/newview/skins/default/xui/da/menu_topinfobar.xml index 08d1c25d6f..08d1c25d6f 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/da/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_agent.xml b/indra/newview/skins/default/xui/da/menu_url_agent.xml index 491586f3b4..491586f3b4 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/da/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_group.xml b/indra/newview/skins/default/xui/da/menu_url_group.xml index c776159b0a..c776159b0a 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_group.xml +++ b/indra/newview/skins/default/xui/da/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_http.xml b/indra/newview/skins/default/xui/da/menu_url_http.xml index 4398777a39..4398777a39 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_http.xml +++ b/indra/newview/skins/default/xui/da/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_inventory.xml b/indra/newview/skins/default/xui/da/menu_url_inventory.xml index 9a7de23e06..9a7de23e06 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/da/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_map.xml b/indra/newview/skins/default/xui/da/menu_url_map.xml index ff4a4d5174..ff4a4d5174 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_map.xml +++ b/indra/newview/skins/default/xui/da/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_objectim.xml b/indra/newview/skins/default/xui/da/menu_url_objectim.xml index e27cf84959..e27cf84959 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/da/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_parcel.xml b/indra/newview/skins/default/xui/da/menu_url_parcel.xml index 0f21e14f66..0f21e14f66 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/da/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_slapp.xml b/indra/newview/skins/default/xui/da/menu_url_slapp.xml index dd25db2aa7..dd25db2aa7 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/da/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_slurl.xml b/indra/newview/skins/default/xui/da/menu_url_slurl.xml index 8d84a138bb..8d84a138bb 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/da/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/da/menu_url_teleport.xml b/indra/newview/skins/default/xui/da/menu_url_teleport.xml index e0ca7b920d..e0ca7b920d 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/da/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index aa6bc53672..299322001b 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -37,7 +37,7 @@ <menu_item_separator/> <menu_item_call label="Profil for sted" name="Place Profile"/> <menu_item_call label="Om land" name="About Land"/> - <menu_item_call label="Region/Estate" name="Region/Estate"/> + <menu_item_call label="Region/Estate" name="RegionEstate"/> <menu_item_call label="Køb dette land" name="Buy Land"/> <menu_item_call label="Mit land" name="My Land"/> <menu label="Vis" name="LandShow"> 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 63f4b0b388..63f4b0b388 100755..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 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 515a15b287..515a15b287 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml 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 c0db7b6842..c0db7b6842 100755..100644 --- a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/da/mime_types.xml b/indra/newview/skins/default/xui/da/mime_types.xml index 0b00a29f07..0b00a29f07 100755..100644 --- a/indra/newview/skins/default/xui/da/mime_types.xml +++ b/indra/newview/skins/default/xui/da/mime_types.xml diff --git a/indra/newview/skins/default/xui/da/mime_types_linux.xml b/indra/newview/skins/default/xui/da/mime_types_linux.xml index 69a0fb23f6..69a0fb23f6 100755..100644 --- a/indra/newview/skins/default/xui/da/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/da/mime_types_linux.xml diff --git a/indra/newview/skins/default/xui/da/mime_types_mac.xml b/indra/newview/skins/default/xui/da/mime_types_mac.xml index bd9981b045..bd9981b045 100755..100644 --- a/indra/newview/skins/default/xui/da/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/da/mime_types_mac.xml diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 33b876bdb9..aad3b9d062 100755..100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -1311,9 +1311,6 @@ Prøv igen om lidt. <notification name="NoValidCircuit"> Ingen gyldig kode for kredsløb. </notification> - <notification name="NoValidTimestamp"> - Ikke et gyldigt klokkeslæt. - </notification> <notification name="NoPendingConnection"> Kunne ikke skabe fast forbindelse. </notification> diff --git a/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml index e2d1f26d42..e2d1f26d42 100755..100644 --- a/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/da/panel_active_object_row.xml b/indra/newview/skins/default/xui/da/panel_active_object_row.xml index 9c27ea7fe2..9c27ea7fe2 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/da/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml index 1953fad31f..1953fad31f 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml 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 890f4a2f0a..890f4a2f0a 100755..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 diff --git a/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml index 4f5041ad54..4f5041ad54 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml index d2ade170d1..d2ade170d1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml index 4cbcdebbe4..4cbcdebbe4 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml index 3cd9d55dd0..3cd9d55dd0 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/da/panel_bottomtray.xml diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml index bd31253ca4..bd31253ca4 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml 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 a54d320ffd..a54d320ffd 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/da/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml index c08d095c66..c08d095c66 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml index 88b0636e9e..88b0636e9e 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_cof_wearables.xml b/indra/newview/skins/default/xui/da/panel_cof_wearables.xml index 92d78b01a2..92d78b01a2 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/da/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml index 700ad4fa14..700ad4fa14 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml index dd8d86cfbf..dd8d86cfbf 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml index 0f60a6df51..0f60a6df51 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml 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 fc4780a34e..fc4780a34e 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_eyes.xml b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml index d801118cea..d801118cea 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml index 36f58428a6..36f58428a6 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_hair.xml b/indra/newview/skins/default/xui/da/panel_edit_hair.xml index e91e6324e8..e91e6324e8 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_jacket.xml b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml index 4e7336747d..4e7336747d 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_pants.xml b/indra/newview/skins/default/xui/da/panel_edit_pants.xml index 61056e9e6c..61056e9e6c 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_physics.xml b/indra/newview/skins/default/xui/da/panel_edit_physics.xml index 16c9b16fa3..16c9b16fa3 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml index 3036f30240..3036f30240 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml 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 14fd48ba2f..14fd48ba2f 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_shape.xml b/indra/newview/skins/default/xui/da/panel_edit_shape.xml index 7c1ffe5cfa..7c1ffe5cfa 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_shirt.xml b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml index 4dfb47aab2..4dfb47aab2 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_shoes.xml b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml index 653ea421b5..653ea421b5 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_skin.xml b/indra/newview/skins/default/xui/da/panel_edit_skin.xml index 608e1d6e0b..608e1d6e0b 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_skirt.xml b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml index e80e60efd8..e80e60efd8 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_socks.xml b/indra/newview/skins/default/xui/da/panel_edit_socks.xml index 82a7341317..82a7341317 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml index d4a12209db..d4a12209db 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_underpants.xml b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml index aacfae79e1..aacfae79e1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml index a9db5d2ab0..a9db5d2ab0 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml 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 906870e6d9..906870e6d9 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml index 26fe4f6ebe..26fe4f6ebe 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml index eccddb55c8..eccddb55c8 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_general.xml +++ b/indra/newview/skins/default/xui/da/panel_group_general.xml 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 3d561f1e5b..3d561f1e5b 100755..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 diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml index 49daf6c9f2..49daf6c9f2 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/da/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml index 49d415e515..49d415e515 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_list_item.xml b/indra/newview/skins/default/xui/da/panel_group_list_item.xml index e77e548340..e77e548340 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml index 0a0b8f5e04..0a0b8f5e04 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_notify.xml b/indra/newview/skins/default/xui/da/panel_group_notify.xml index 8a684ca031..8a684ca031 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/da/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml index ebc773f7ed..ebc773f7ed 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/da/panel_im_control_panel.xml b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml index 5cecb93d40..5cecb93d40 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/da/panel_inventory_item.xml b/indra/newview/skins/default/xui/da/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/da/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_landmark_info.xml b/indra/newview/skins/default/xui/da/panel_landmark_info.xml index 8503a41763..8503a41763 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/da/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/da/panel_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml index e9e5e506fd..e9e5e506fd 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/da/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index b7cb76d4cb..b7cb76d4cb 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml diff --git a/indra/newview/skins/default/xui/da/panel_main_inventory.xml b/indra/newview/skins/default/xui/da/panel_main_inventory.xml index d6406939c1..d6406939c1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/da/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/da/panel_me.xml b/indra/newview/skins/default/xui/da/panel_me.xml index f98ced5f91..f98ced5f91 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_me.xml +++ b/indra/newview/skins/default/xui/da/panel_me.xml diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml index 48f08b9dfd..48f08b9dfd 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml index 84468eb2a7..84468eb2a7 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_security.xml b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml index 1b64888271..1b64888271 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml index 2ee87433a4..2ee87433a4 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml index eb104201f8..eb104201f8 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/da/panel_nearby_media.xml b/indra/newview/skins/default/xui/da/panel_nearby_media.xml index ef8ed3ad07..ef8ed3ad07 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/da/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml index 30ad4ff9f6..30ad4ff9f6 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/da/panel_online_status_toast.xml b/indra/newview/skins/default/xui/da/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/da/panel_online_status_toast.xml 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 3736ea06ba..3736ea06ba 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/da/panel_outfit_edit.xml 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 055c42c003..055c42c003 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml index 7b6469023b..7b6469023b 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/da/panel_outfits_list.xml b/indra/newview/skins/default/xui/da/panel_outfits_list.xml index 72caedb461..72caedb461 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/da/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml index 8d25efa97b..8d25efa97b 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index 66a128cd13..66a128cd13 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml 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 8a5141f967..8a5141f967 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/da/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/da/panel_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml index 8af68ee69a..8af68ee69a 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_picks.xml +++ b/indra/newview/skins/default/xui/da/panel_picks.xml diff --git a/indra/newview/skins/default/xui/da/panel_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml index 8dd0fb2d21..8dd0fb2d21 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml index c555f2fb09..c555f2fb09 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_places.xml +++ b/indra/newview/skins/default/xui/da/panel_places.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml index 48106c7dfe..48106c7dfe 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml index 7caa17d514..7caa17d514 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml 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 890a3038ef..890a3038ef 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index cc3dc480bc..cc3dc480bc 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml index 5702d48e97..5702d48e97 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml 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 e494b2b755..e494b2b755 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_move.xml b/indra/newview/skins/default/xui/da/panel_preferences_move.xml index 98dfed92c1..98dfed92c1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml index 6d48180707..6d48180707 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 7be9a9d555..7be9a9d555 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 26d2ae4abd..26d2ae4abd 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml 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 cfb32500c6..cfb32500c6 100755..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 diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml index 4b9c7539ea..4b9c7539ea 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/da/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/da/panel_region_debug.xml b/indra/newview/skins/default/xui/da/panel_region_debug.xml index 08e2d1e263..08e2d1e263 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/da/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/da/panel_region_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml index 65948ce481..65948ce481 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/da/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/da/panel_region_general.xml b/indra/newview/skins/default/xui/da/panel_region_general.xml index 667c88c5b1..667c88c5b1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_general.xml +++ b/indra/newview/skins/default/xui/da/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/da/panel_region_terrain.xml b/indra/newview/skins/default/xui/da/panel_region_terrain.xml index 14ef0060b1..14ef0060b1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/da/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/da/panel_region_texture.xml b/indra/newview/skins/default/xui/da/panel_region_texture.xml index 45946fd222..45946fd222 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/da/panel_region_texture.xml diff --git a/indra/newview/skins/default/xui/da/panel_script_ed.xml b/indra/newview/skins/default/xui/da/panel_script_ed.xml index 3dec4bf101..3dec4bf101 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/da/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml index 821c82ccda..821c82ccda 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml index 91fc76dbb4..91fc76dbb4 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param.xml index 99f61b938b..99f61b938b 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/da/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/da/panel_side_tray.xml b/indra/newview/skins/default/xui/da/panel_side_tray.xml index 66c3e69904..66c3e69904 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/da/panel_side_tray.xml 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 ce3a1d8b4e..ce3a1d8b4e 100755..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 diff --git a/indra/newview/skins/default/xui/da/panel_sound_devices.xml b/indra/newview/skins/default/xui/da/panel_sound_devices.xml index 27b7666a1f..27b7666a1f 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/da/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml index f25639d56f..f25639d56f 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 6e7bdfc188..6e7bdfc188 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history.xml b/indra/newview/skins/default/xui/da/panel_teleport_history.xml index e6e78028f5..e6e78028f5 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/da/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml index 8148588c86..8148588c86 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/da/panel_voice_effect.xml b/indra/newview/skins/default/xui/da/panel_voice_effect.xml index 50f561ec7f..50f561ec7f 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/da/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/da/panel_world_map.xml b/indra/newview/skins/default/xui/da/panel_world_map.xml index 138b922df1..138b922df1 100755..100644 --- a/indra/newview/skins/default/xui/da/panel_world_map.xml +++ b/indra/newview/skins/default/xui/da/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml index 7e581200a5..7e581200a5 100755..100644 --- a/indra/newview/skins/default/xui/da/role_actions.xml +++ b/indra/newview/skins/default/xui/da/role_actions.xml diff --git a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml index c5caefe070..c5caefe070 100755..100644 --- a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml index b4b494cafa..b4b494cafa 100755..100644 --- a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml 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 d52845160b..d52845160b 100755..100644 --- a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml index f80d5aeb15..f80d5aeb15 100755..100644 --- a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 74d160dfae..74d160dfae 100755..100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml index 0d89fae986..0d89fae986 100755..100644 --- a/indra/newview/skins/default/xui/da/teleport_strings.xml +++ b/indra/newview/skins/default/xui/da/teleport_strings.xml diff --git a/indra/newview/skins/default/xui/da/xui_version.xml b/indra/newview/skins/default/xui/da/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/da/xui_version.xml +++ b/indra/newview/skins/default/xui/da/xui_version.xml diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index bc0eae7c5d..ee631476cb 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="INFO ÜBER [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Kompiliert mit [COMPILER] version [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(globale Koordinaten [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Speicher: [MEMORY_MB] MB -Betriebssystem, Version: [OS_VERSION] -Grafikkarten-Hersteller: [GRAPHICS_CARD_VENDOR] -Grafikkarten: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Grafiktreiber-Version: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL Version: [OPENGL_VERSION] - -libcurl-Version: [LIBCURL_VERSION] -J2C-Decoderversion: [J2C_VERSION] -Audio-Treiberversion: [AUDIO_DRIVER_VERSION] -Qt Webkit-Version: [QT_WEBKIT_VERSION] -Voice-Serverversion: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (keiner) - </floater.string> - <floater.string name="AboutTraffic"> - Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Fehler beim Abrufen der URL für die Server-Versionshinweise. - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="In Zwischenablage kopieren" name="copy_btn"/> </panel> <panel label="Danksagung" name="credits_panel"> - <text name="linden_intro"> - Second Life wird präsentiert von den Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - mit Open-Source-Beiträgen von: - </text> - <text_editor name="contrib_names"> - Dummy-Name wird zur Laufzeit ersetzt - </text_editor> - <text name="trans_intro"> - mit Übersetzungen von: - </text> - <text_editor name="trans_names"> - Dummy Name wird zur Laufzeit ersetzt - </text_editor> + <text name="linden_intro">Second Life wird präsentiert von den Lindens +mit Open-Source-Beiträgen von:</text> + <text_editor name="contrib_names">Dummy-Name wird zur Laufzeit ersetzt</text_editor> </panel> <panel label="Lizenzen" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion. + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion. APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg (daniel@haxx.se). @@ -95,8 +37,7 @@ Voice-Serverversion: [VOICE_VERSION] Alle Rechte vorbehalten. Details siehe licenses.txt. - Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index 44922fbe78..60f25704dd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -309,9 +309,6 @@ Nur große Parzellen können in der Suche aufgeführt werden. <panel.string name="push_restrict_region_text"> Kein Stoßen (regional) </panel.string> - <panel.string name="see_avs_text"> - Avatare auf anderen Parzellen können - </panel.string> <text name="allow_label"> Anderen Einwohnern gestatten: </text> @@ -337,22 +334,6 @@ Nur große Parzellen können in der Suche aufgeführt werden. <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Ansonsten sind Kampfschäden aktiviert."/> <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Stoßen durch Skripte. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/> <check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> - <combo_box name="land category with adult"> - <combo_box.item label="Alle Kategorien" name="item0"/> - <combo_box.item label="Lindenort" name="item1"/> - <combo_box.item label="Adult" name="item2"/> - <combo_box.item label="Kunst & Kultur" name="item3"/> - <combo_box.item label="Business" name="item4"/> - <combo_box.item label="Bildung" name="item5"/> - <combo_box.item label="Spielen" name="item6"/> - <combo_box.item label="Treffpunkt" name="item7"/> - <combo_box.item label="Anfängergerecht" name="item8"/> - <combo_box.item label="Parks und Natur" name="item9"/> - <combo_box.item label="Wohngebiet" name="item10"/> - <combo_box.item label="Shopping" name="item11"/> - <combo_box.item label="Vermietung" name="item13"/> - <combo_box.item label="Sonstige" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Alle Kategorien" name="item0"/> <combo_box.item label="Lindenort" name="item1"/> @@ -449,15 +430,9 @@ Nur große Parzellen können in der Suche aufgeführt werden. <panel.string name="access_estate_defined"> (Durch Grundbesitz festgelegt) </panel.string> - <panel.string name="allow_public_access"> - Öffentlichen Zugang erlauben ([MATURITY]) (Hinweis: Bei Deaktivierung dieser Option werden Bannlinien generiert) - </panel.string> <panel.string name="estate_override"> Eine oder mehrere dieser Optionen gelten auf Grundbesitzebene </panel.string> - <text name="Limit access to this parcel to:"> - Zugang zu dieser Parzelle - </text> <check_box label="Öffentlichen Zugang gestatten (bei Deaktivierung dieser Option werden Bannlinien generiert)" name="public_access"/> <text name="Only Allow" width="400"> Zugang nur Einwohnern gestatten, die: @@ -489,5 +464,6 @@ Nur große Parzellen können in der Suche aufgeführt werden. <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/> </panel> </panel> + <panel label="ERLEBNISSE" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_activeim.xml b/indra/newview/skins/default/xui/de/floater_activeim.xml index 416e31b2d6..416e31b2d6 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_activeim.xml +++ b/indra/newview/skins/default/xui/de/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml index 3dc554b120..3dc554b120 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml index 9a6f5e0166..d427376574 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. Ausdruck </text> <combo_box name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation"> - <item label="(Keine)" name="[None]" value=""/> - <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> - <item label="Ängstlich" name="Afraid" value="Ängstlich"/> - <item label="Verärgert" name="Angry" value="Verärgert"/> - <item label="Grinst" name="BigSmile" value="Grinst"/> - <item label="Gelangweilt" name="Bored" value="Gelangweilt"/> - <item label="Weinen" name="Cry" value="Weinen"/> - <item label="Verachtung" name="Disdain" value="Verachtung"/> - <item label="Verlegen" name="Embarrassed" value="Verlegen"/> - <item label="Stirnrunzeln" name="Frown" value="Stirnrunzeln"/> - <item label="Küssen" name="Kiss" value="Küssen"/> - <item label="Lachen" name="Laugh" value="Lachen"/> - <item label="Bäääh" name="Plllppt" value="Bäääh"/> - <item label="Angewidert" name="Repulsed" value="Angewidert"/> - <item label="Traurig" name="Sad" value="Traurig"/> - <item label="Achselzucken" name="Shrug" value="Achselzucken"/> - <item label="Lächeln" name="Smile" value="Lächeln"/> - <item label="Überraschung" name="Surprise" value="Überraschung"/> - <item label="Zwinkern" name="Wink" value="Zwinkern"/> - <item label="Sorgenvoll" name="Worry" value="Sorgenvoll"/> + <item label="(Keine)" name="[None]"/> + <item label="Aaaaah" name="Aaaaah"/> + <item label="Ängstlich" name="Afraid"/> + <item label="Verärgert" name="Angry"/> + <item label="Grinst" name="BigSmile"/> + <item label="Gelangweilt" name="Bored"/> + <item label="Weinen" name="Cry"/> + <item label="Verachtung" name="Disdain"/> + <item label="Verlegen" name="Embarrassed"/> + <item label="Stirnrunzeln" name="Frown"/> + <item label="Küssen" name="Kiss"/> + <item label="Lachen" name="Laugh"/> + <item label="Bäääh" name="Plllppt"/> + <item label="Angewidert" name="Repulsed"/> + <item label="Traurig" name="Sad"/> + <item label="Achselzucken" name="Shrug"/> + <item label="Lächeln" name="Smile"/> + <item label="Überraschung" name="Surprise"/> + <item label="Zwinkern" name="Wink"/> + <item label="Sorgenvoll" name="Worry"/> </combo_box> <text name="preview_label"> Vorschau während: </text> <combo_box name="preview_base_anim" tool_tip="Hiermit können Sie das Verhalten Ihres Avatars testen, während Ihr Avatar normale Bewegungen ausführt."> - <item label="Stehen" name="Standing" value="Stehen"/> - <item label="Gehen" name="Walking" value="Gehen"/> - <item label="Sitzen" name="Sitting" value="Sitzen"/> - <item label="Fliegen" name="Flying" value="Fliegen"/> + <item label="Stehen" name="Standing"/> + <item label="Gehen" name="Walking"/> + <item label="Sitzen" name="Sitting"/> + <item label="Fliegen" name="Flying"/> </combo_box> <spinner label="Einblenden (s)" name="ease_in_time" tool_tip="Einblendungszeit für Animationen (in Sekunden)"/> <spinner label="Ausblenden (s)" name="ease_out_time" tool_tip="Ausblendungszeit für Animationen (in Sekunden)"/> diff --git a/indra/newview/skins/default/xui/de/floater_associate_listing.xml b/indra/newview/skins/default/xui/de/floater_associate_listing.xml new file mode 100644 index 0000000000..827b1b0aea --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="AUFLISTUNG VERKNÜPFEN"> + <text name="message">Auflistungs-ID:</text> + <line_editor name="listing_id">ID hier eingeben</line_editor> + <button label="OK" name="OK"/> + <button label="Abbrechen" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_auction.xml b/indra/newview/skins/default/xui/de/floater_auction.xml index 8ededff319..8ededff319 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_auction.xml +++ b/indra/newview/skins/default/xui/de/floater_auction.xml diff --git a/indra/newview/skins/default/xui/de/floater_autoreplace.xml b/indra/newview/skins/default/xui/de/floater_autoreplace.xml index 0c774990ef..0c774990ef 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/de/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/de/floater_avatar.xml b/indra/newview/skins/default/xui/de/floater_avatar.xml index ba0dd54d96..ba0dd54d96 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_avatar.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml index f66b87b76c..f66b87b76c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml index 8235eacde0..8235eacde0 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/de/floater_beacons.xml b/indra/newview/skins/default/xui/de/floater_beacons.xml index 1a052bd814..1a052bd814 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_beacons.xml +++ b/indra/newview/skins/default/xui/de/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/de/floater_build_options.xml b/indra/newview/skins/default/xui/de/floater_build_options.xml index 939fd5dee4..939fd5dee4 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_build_options.xml +++ b/indra/newview/skins/default/xui/de/floater_build_options.xml 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 27a74c874e..27a74c874e 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/de/floater_bumps.xml b/indra/newview/skins/default/xui/de/floater_bumps.xml index 5d02511ab1..5d02511ab1 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_bumps.xml +++ b/indra/newview/skins/default/xui/de/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/de/floater_buy_contents.xml b/indra/newview/skins/default/xui/de/floater_buy_contents.xml index bd6ace6bda..bd6ace6bda 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 65926c088c..65926c088c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml index 38d3bdd77f..38d3bdd77f 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml index ca4ee8981b..ca4ee8981b 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/de/floater_buy_object.xml b/indra/newview/skins/default/xui/de/floater_buy_object.xml index 29b49f57b3..29b49f57b3 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml index 163ef87d8c..163ef87d8c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_camera.xml +++ b/indra/newview/skins/default/xui/de/floater_camera.xml diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml index ab77d4dae5..ab77d4dae5 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/de/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/de/floater_choose_group.xml b/indra/newview/skins/default/xui/de/floater_choose_group.xml index 3d76b645fe..3d76b645fe 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/de/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml index 0fe154b531..0fe154b531 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/de/floater_critical.xml b/indra/newview/skins/default/xui/de/floater_critical.xml index 0b147926dd..0b147926dd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_critical.xml +++ b/indra/newview/skins/default/xui/de/floater_critical.xml diff --git a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml index cc14ce640d..cc14ce640d 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/de/floater_destinations.xml b/indra/newview/skins/default/xui/de/floater_destinations.xml index 57881488fd..57881488fd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_destinations.xml +++ b/indra/newview/skins/default/xui/de/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/de/floater_display_name.xml b/indra/newview/skins/default/xui/de/floater_display_name.xml index 4c2914fccb..4c2914fccb 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_display_name.xml +++ b/indra/newview/skins/default/xui/de/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml index 8b29428c24..8b29428c24 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml new file mode 100644 index 0000000000..c26f7f367d --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="SCHWEBEHÖHE FESTLEGEN"> + <slider label="Höhe" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml index ea4c5f7ebc..ea4c5f7ebc 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml index 9b9d5e7d77..9b9d5e7d77 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/de/floater_environment_settings.xml b/indra/newview/skins/default/xui/de/floater_environment_settings.xml index 946416980a..946416980a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/de/floater_event.xml b/indra/newview/skins/default/xui/de/floater_event.xml index 5b3267d7c9..5b3267d7c9 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_event.xml +++ b/indra/newview/skins/default/xui/de/floater_event.xml diff --git a/indra/newview/skins/default/xui/de/floater_experience_search.xml b/indra/newview/skins/default/xui/de/floater_experience_search.xml new file mode 100644 index 0000000000..0fda5086ff --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="ERLEBNIS AUSWÄHLEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_experienceprofile.xml b/indra/newview/skins/default/xui/de/floater_experienceprofile.xml new file mode 100644 index 0000000000..a553a5b6f0 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (keines) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Erlebnisprofil"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Bearbeiten" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Einstufung: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Standort: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Eigentümer: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Gruppe: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Zulassen" name="allow_btn"/> + <button label="Vergessen" name="forget_btn"/> + <button label="Blockieren" name="block_btn"/> + <text name="privileged"> + Dieses Erlebnis ist für alle Einwohner aktiviert. + </text> + <button label="Missbrauch melden" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Name:"/> + <text name="edit_experience_desc_label" value="Beschreibung:"/> + <button label="Gruppe" name="Group_btn"/> + <text name="edit_ContentRating"> + Einstufung: + </text> + <icons_combo_box label="Moderat" name="edit_ContentRatingText" tool_tip="Bei Erhöhung der Inhaltseinstufung eines Erlebnisses wird die Berechtigung für alle Einwohner zurückgesetzt, die das Erlebnis zugelassen haben."> + <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="Moderat" name="Mature" value="21"/> + <icons_combo_box.item label="Allgemein" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Standort: + </text> + <button label="Aktuellen Standort verwenden" name="location_btn"/> + <button label="Standort löschen" name="clear_btn"/> + <check_box label="Erlebnis aktivieren" name="edit_enable_btn" tool_tip=""/> + <check_box label="Aus Suche ausschließen" name="edit_private_btn"/> + <text name="changes" value="Es kann mehrere Minuten dauern, bis Erlebnisänderungen in allen Regionen umgesetzt werden."/> + <button label="Zurück" name="cancel_btn"/> + <button label="Speichern" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_experiences.xml b/indra/newview/skins/default/xui/de/floater_experiences.xml new file mode 100644 index 0000000000..932592a63b --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="ERLEBNISSE"/> diff --git a/indra/newview/skins/default/xui/de/floater_facebook.xml b/indra/newview/skins/default/xui/de/floater_facebook.xml index 25b11536eb..32d6d02c7a 100644 --- a/indra/newview/skins/default/xui/de/floater_facebook.xml +++ b/indra/newview/skins/default/xui/de/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="AUF FACEBOOK POSTEN"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="STATUS" name="panel_facebook_status"/> - <panel label="FOTO" name="panel_facebook_photo"/> - <panel label="EINCHECKEN" name="panel_facebook_place"/> - <panel label="FREUNDE" name="panel_facebook_friends"/> - <panel label="KONTO" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Fehler - </text> - <text name="connection_loading_text"> - Laden... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="STATUS" name="panel_facebook_status"/> + <panel label="FOTO" name="panel_facebook_photo"/> + <panel label="EINCHECKEN" name="panel_facebook_place"/> + <panel label="FREUNDE" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Fehler + </text> + <text name="connection_loading_text"> + Laden... + </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_fast_timers.xml b/indra/newview/skins/default/xui/de/floater_fast_timers.xml index e61e542688..e61e542688 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/de/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/de/floater_font_test.xml b/indra/newview/skins/default/xui/de/floater_font_test.xml index 29357b8ee0..29357b8ee0 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_font_test.xml +++ b/indra/newview/skins/default/xui/de/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/de/floater_gesture.xml b/indra/newview/skins/default/xui/de/floater_gesture.xml index 7b35da8d5c..7b35da8d5c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml index 8cb1af9f7d..8cb1af9f7d 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml index fd6c9a0875..fd6c9a0875 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/de/floater_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml index d55a3b0a26..d55a3b0a26 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/de/floater_how_to.xml b/indra/newview/skins/default/xui/de/floater_how_to.xml index caea221f83..caea221f83 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_how_to.xml +++ b/indra/newview/skins/default/xui/de/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/de/floater_hud.xml b/indra/newview/skins/default/xui/de/floater_hud.xml index 8a10eccabe..8a10eccabe 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_hud.xml +++ b/indra/newview/skins/default/xui/de/floater_hud.xml diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml index 5bf916c8e9..5bf916c8e9 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_im_container.xml +++ b/indra/newview/skins/default/xui/de/floater_im_container.xml 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 b07b74bf4a..b07b74bf4a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_im_session.xml +++ b/indra/newview/skins/default/xui/de/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml index d581c6051b..d581c6051b 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/de/floater_import_collada.xml b/indra/newview/skins/default/xui/de/floater_import_collada.xml index 8b1313c7b5..8b1313c7b5 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/de/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml index f13842f479..f13842f479 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml index da97ceb2d8..da97ceb2d8 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_inspect.xml +++ b/indra/newview/skins/default/xui/de/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml index 7f48105460..92c038057f 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="EIGENSCHAFTEN: INVENTAROBJEKT"> - <floater.string name="unknown"> - (unbekannt) - </floater.string> - <floater.string name="public"> - (öffentlich) - </floater.string> - <floater.string name="you_can"> - Sie können: - </floater.string> - <floater.string name="owner_can"> - Eigentümer kann: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Name: - </text> - <text name="LabelItemDescTitle"> - Beschreibung: - </text> - <text name="LabelCreatorTitle"> - Ersteller: - </text> + <floater.string name="unknown">(unbekannt)</floater.string> + <floater.string name="public">(öffentlich)</floater.string> + <floater.string name="you_can">Sie können:</floater.string> + <floater.string name="owner_can">Eigentümer kann:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Name:</text> + <text name="LabelItemDescTitle">Beschreibung:</text> + <text name="LabelCreatorTitle">Ersteller:</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Eigentümer: - </text> + <text name="LabelOwnerTitle">Eigentümer:</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Erworben: - </text> - <text name="LabelAcquiredDate"> - Mittwoch, 24. Mai 2006, 12:50:46 - </text> - <text name="OwnerLabel"> - Sie: - </text> + <text name="LabelAcquiredTitle">Erworben:</text> + <text name="LabelAcquiredDate">Mittwoch, 24. Mai 2006, 12:50:46</text> + <text name="OwnerLabel">Sie:</text> <check_box label="Bearbeiten" name="CheckOwnerModify"/> <check_box label="Kopieren" left_delta="85" name="CheckOwnerCopy"/> <check_box label="Wiederverkaufen" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Jeder: - </text> + <text name="AnyoneLabel">Jeder:</text> <check_box label="Kopieren" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppe: - </text> + <text name="GroupLabel">Gruppe:</text> <check_box label="Teilen" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="150"> - Nächster Eigentümer: - </text> + <text name="NextOwnerLabel" width="150">Nächster Eigentümer:</text> <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> <check_box label="Kopieren" left_delta="55" name="CheckNextOwnerCopy"/> <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/> <check_box label="Zum Verkauf" name="CheckPurchase"/> - <combo_box name="combobox sale copy" left_pad="25"> - <combo_box.item label="Kopieren" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopie" name="Copy"/> + <combo_box.item label="Inhalt" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preis:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml index d63426d684..0820e75029 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Kleidung" name="check_clothing"/> <check_box label="Gesten" name="check_gesture"/> <check_box label="Landmarken" name="check_landmark"/> - <check_box label="Netze" name="check_mesh"/> <check_box label="Notizkarten" name="check_notecard"/> + <check_box label="Netze" name="check_mesh"/> <check_box label="Objekte" name="check_object"/> <check_box label="Skripts" name="check_script"/> <check_box label="Sounds" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - ODER - </text> + <radio_group name="date_search_direction"> + <radio_item label="Neuer als" name="newer"/> + <radio_item label="Älter als" name="older"/> + </radio_group> <spinner label="Stunden zuvor" label_width="80" name="spin_hours_ago"/> <spinner label="Tage zuvor" name="spin_days_ago"/> <button label="Schließen" label_selected="Schließen" name="Close"/> diff --git a/indra/newview/skins/default/xui/de/floater_item_properties.xml b/indra/newview/skins/default/xui/de/floater_item_properties.xml new file mode 100644 index 0000000000..eb8314ad13 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="OBJEKTEIGENSCHAFTEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_joystick.xml b/indra/newview/skins/default/xui/de/floater_joystick.xml index 2efc11df29..2efc11df29 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_joystick.xml +++ b/indra/newview/skins/default/xui/de/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/de/floater_lagmeter.xml b/indra/newview/skins/default/xui/de/floater_lagmeter.xml index 45ff37c147..2c8b76ace7 100644 --- a/indra/newview/skins/default/xui/de/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/de/floater_lagmeter.xml @@ -4,7 +4,7 @@ Lag-Anzeige </floater.string> <floater.string name="max_width_px"> - 350 + 360 </floater.string> <floater.string name="min_title_msg"> Lag @@ -25,10 +25,10 @@ Normal, Fenster im Hintergrund </floater.string> <floater.string name="client_frame_time_critical_msg"> - Client-Frame-Rate unter [CLIENT_FRAME_RATE_CRITICAL] + Client-Framerate unter [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> - Client-Frame-Rate zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING] + Client-Framerate zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> Normal @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - Paketverlust der Verbindung übersteigt [NETWORK_PACKET_LOSS_CRITICAL]% + Paketverlust der Verbindung übersteigt [NETWORK_PACKET_LOSS_CRITICAL] % </floater.string> <floater.string name="network_packet_loss_warning_msg"> - Paketverlust der Verbindung liegt bei [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% + Paketverlust der Verbindung liegt bei [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL] % </floater.string> <floater.string name="network_performance_normal_msg"> Normal @@ -76,10 +76,10 @@ Ping-Zeit der Verbindung liegt bei [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_packet_loss_cause_msg"> - Möglicherweise schlechte Verbindung oder zu hoher Wert für „Bandbreite“. + Möglicherweise schlechte Verbindung oder zu hoher Bandbreitenwert. </floater.string> <floater.string name="network_ping_cause_msg"> - Möglicherweise schlechte Verbindung oder File-Sharing-Anwendung. + Möglicherweise schlechte Verbindung oder Filesharing-Anwendung. </floater.string> <floater.string name="server_text_msg"> Server @@ -94,10 +94,10 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Simulator-Frame-Rate liegt unter [SERVER_FRAME_RATE_CRITICAL] + Simulator-Framerate liegt unter [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Simulator-Frame-Rate liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING] + Simulator-Framerate liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> Normal @@ -112,13 +112,13 @@ Mögliche Ursache: Zu viel Netzwerktraffic </floater.string> <floater.string name="server_agent_cause_msg"> - Mögliche Ursache: Zu viele Personen in Bewegung in der Region + Mögliche Ursache: Zu viele Personen in der Region in Bewegung </floater.string> <floater.string name="server_images_cause_msg"> Mögliche Ursache: Zu viele Bildberechnungen </floater.string> <floater.string name="server_generic_cause_msg"> - Mögliche Ursache: Zu hohe Simulator-Last + Mögliche Ursache: Zu hohe Simulatorlast </floater.string> <floater.string name="smaller_label"> >> @@ -147,5 +147,5 @@ <text name="server_text"> Normal </text> - <button label=">> " name="minimize" tool_tip="Fenstergröße ändern"/> + <button label=">>" name="minimize" tool_tip="Fenstergröße ändern"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_land_holdings.xml b/indra/newview/skins/default/xui/de/floater_land_holdings.xml index 73559407a9..73559407a9 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/de/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml index 3b42a8b741..ae2dd4db67 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> SKRIPT: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Markierung löschen, um aktuelles Erlebnis zu entfernen + </floater.string> + <floater.string name="no_experiences"> + Sie sind zu keinen Erlebnissen berechtigt + </floater.string> + <floater.string name="add_experiences"> + Auswählen, um Erlebnis hinzuzufügen + </floater.string> + <floater.string name="show_experience_profile"> + Klicken, um Erlebnisprofil aufzurufen + </floater.string> + <floater.string name="loading"> + Laden... + </floater.string> <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Reset"/> <check_box initial_value="true" label="Läuft" name="running"/> <check_box initial_value="true" label="Mono" name="mono"/> + <check_box label="Erlebnis verwenden:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml index 73c21edc67..73c21edc67 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml index c4c42af66d..c4c42af66d 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_map.xml +++ b/indra/newview/skins/default/xui/de/floater_map.xml diff --git a/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml new file mode 100644 index 0000000000..fd6e2d904f --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="MARKTPLATZ-AUFLISTUNGEN"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Laden...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml new file mode 100644 index 0000000000..4782b353b4 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Marketplace-Auflistungen prüfen"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml index 2d438dfe21..2d438dfe21 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/de/floater_media_settings.xml b/indra/newview/skins/default/xui/de/floater_media_settings.xml index 1b98ed7973..1b98ed7973 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml index fdc9b950b6..fdc9b950b6 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml index a412b530a4..a412b530a4 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index 4285462bc8..4285462bc8 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml index c1c8271310..c1c8271310 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_moveview.xml +++ b/indra/newview/skins/default/xui/de/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/de/floater_mute_object.xml b/indra/newview/skins/default/xui/de/floater_mute_object.xml index 3f1af3dc63..3f1af3dc63 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/de/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/de/floater_my_appearance.xml b/indra/newview/skins/default/xui/de/floater_my_appearance.xml index e26b2434cc..e26b2434cc 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/de/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/de/floater_my_inventory.xml b/indra/newview/skins/default/xui/de/floater_my_inventory.xml index 0cfa17562e..0cfa17562e 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/de/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml index 7752d22b52..7752d22b52 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_notification.xml +++ b/indra/newview/skins/default/xui/de/floater_notification.xml diff --git a/indra/newview/skins/default/xui/de/floater_notifications_console.xml b/indra/newview/skins/default/xui/de/floater_notifications_console.xml index e271cdace2..e271cdace2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/de/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/de/floater_object_weights.xml b/indra/newview/skins/default/xui/de/floater_object_weights.xml index e6641d3d18..e6641d3d18 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/de/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml index c3e7052283..cd7796418c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_openobject.xml +++ b/indra/newview/skins/default/xui/de/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="120"/> - <button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left_pad="6" name="copy_and_wear_button" width="136"/> + <text name="border_note"> + In Inventar kopieren und tragen + </text> + <button label="Zum Outfit hinzufügen" label_selected="Zum Outfit hinzufügen" left_pad="6" name="copy_and_wear_button" width="136"/> + <button label="Outfit ersetzen" label_selected="Outfit ersetzen" name="copy_and_replace_button"/> + <button label="Nur in Inventar kopieren" label_selected="Nur in Inventar kopieren" name="copy_to_inventory_button" width="120"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_button"/> </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 index 7481e6d4b7..7481e6d4b7 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml index 81079a3c52..81079a3c52 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml index 7096dbc156..7096dbc156 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml index ebf8f01632..ebf8f01632 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml index 0d3ba59efb..0d3ba59efb 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml index a0a622ecbc..1882f5150b 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_pay.xml +++ b/indra/newview/skins/default/xui/de/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Gruppe bezahlen - </string> - <string name="payee_resident"> - Einwohner bezahlen - </string> - <text name="payee_label" width="130"> - Bezahlen: - </text> - <icon name="icon_person" tool_tip="Person"/> - <text left="130" name="payee_name"> - Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - oder Betrag auswählen: - </text> - <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + <string name="payee_group">Gruppe bezahlen</string> + <string name="payee_resident">Einwohner bezahlen</string> + <text name="paying_text">Sie zahlen:</text> + <text left="130" name="payee_name">Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird</text> + <panel label="Suchen" name="PatternsPanel"> + <button label="L$ 1 zahlen" label_selected="L$ 1 zahlen" name="fastpay 1"/> + <button label="L$ 5 zahlen" label_selected="L$ 5 zahlen" name="fastpay 5"/> + <button label="L$ 10 zahlen" label_selected="L$ 10 zahlen" name="fastpay 10"/> + <button label="L$ 20 zahlen" label_selected="L$ 20 zahlen" name="fastpay 20"/> + </panel> + <panel label="Suchen" name="InputPanel"> + <text name="amount text">Anderer Betrag:</text> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml index 7159bbadb3..35f3ca032a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/de/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group" width="105"> - Gruppe bezahlen - </string> - <string name="payee_resident" width="118"> - Einwohner bezahlen - </string> - <icon name="icon_person" tool_tip="Person"/> - <text left="128" name="payee_name" width="168"> - Ericacita Moostopolison - </text> - <text halign="left" name="object_name_label"> - Über Objekt: - </text> + <string name="payee_group" width="105">Gruppe bezahlen</string> + <string name="payee_resident" width="118">Einwohner bezahlen</string> + <text name="paying_text">Sie zahlen:</text> + <text left="128" name="payee_name" width="168">Ericacita Moostopolison</text> + <text halign="left" name="object_name_label">Über Objekt:</text> <icon name="icon_object" tool_tip="Objekte"/> - <text left="105" name="object_name_text"> - ... - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - oder Betrag auswählen: - </text> - <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/> + <text left="105" name="object_name_text">...</text> + <panel label="Suchen" name="PatternsPanel"> + <button label="L$ 1 zahlen" label_selected="L$ 1 zahlen" name="fastpay 1"/> + <button label="L$ 5 zahlen" label_selected="L$ 5 zahlen" name="fastpay 5"/> + <button label="L$ 10 zahlen" label_selected="L$ 10 zahlen" name="fastpay 10"/> + <button label="L$ 20 zahlen" label_selected="L$ 20 zahlen" name="fastpay 20"/> + </panel> + <panel label="Suchen" name="InputPanel"> + <text name="amount text">Anderer Betrag:</text> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_people.xml b/indra/newview/skins/default/xui/de/floater_people.xml index fd1db148ac..fd1db148ac 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_people.xml +++ b/indra/newview/skins/default/xui/de/floater_people.xml diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml index 9be22f3ccb..9be22f3ccb 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/de/floater_picks.xml b/indra/newview/skins/default/xui/de/floater_picks.xml index 2521920e83..2521920e83 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_picks.xml +++ b/indra/newview/skins/default/xui/de/floater_picks.xml diff --git a/indra/newview/skins/default/xui/de/floater_places.xml b/indra/newview/skins/default/xui/de/floater_places.xml index 80a1490afd..80a1490afd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_places.xml +++ b/indra/newview/skins/default/xui/de/floater_places.xml diff --git a/indra/newview/skins/default/xui/de/floater_post_process.xml b/indra/newview/skins/default/xui/de/floater_post_process.xml index a6ed8cc3df..a6ed8cc3df 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_post_process.xml +++ b/indra/newview/skins/default/xui/de/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml index 3624c4c968..3624c4c968 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preferences.xml +++ b/indra/newview/skins/default/xui/de/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml index cdefb470c2..cdefb470c2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml index 2dd47a27ad..2dd47a27ad 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 76dc623ca4..76dc623ca4 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml index 14e666fd22..14e666fd22 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/de/floater_preview_sound.xml b/indra/newview/skins/default/xui/de/floater_preview_sound.xml index 4629ec4a04..4629ec4a04 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml index 526c0813bd..526c0813bd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/de/floater_price_for_listing.xml b/indra/newview/skins/default/xui/de/floater_price_for_listing.xml index bdd772a9c2..bdd772a9c2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/de/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/de/floater_publish_classified.xml b/indra/newview/skins/default/xui/de/floater_publish_classified.xml index d91535ebc3..d91535ebc3 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/de/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/de/floater_region_debug_console.xml b/indra/newview/skins/default/xui/de/floater_region_debug_console.xml index b8a1a89c30..b8a1a89c30 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/de/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/de/floater_region_info.xml b/indra/newview/skins/default/xui/de/floater_region_info.xml index c0dc47a67d..c0dc47a67d 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_region_info.xml +++ b/indra/newview/skins/default/xui/de/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml index 34cb3d1cc2..6999679b3f 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml @@ -77,7 +77,7 @@ Objekt: <combo_box.item label="Land > Unbefugte Nutzung > Objekte oder Texturen" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Land > Unbefugte Nutzung > Partikel" name="Land__Encroachment__Particles"/> <combo_box.item label="Land > Unbefugte Nutzung > Bäume/Pflanzen" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Wetten/Glücksspiel" name="Wagering_gambling"/> + <combo_box.item label="Verstoß gegen die Spielerichtlinie" name="Wagering_gambling"/> <combo_box.item label="Sonstige" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/de/floater_script_debug.xml b/indra/newview/skins/default/xui/de/floater_script_debug.xml index 585a6c36ea..585a6c36ea 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/de/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/de/floater_script_limits.xml b/indra/newview/skins/default/xui/de/floater_script_limits.xml index 94a24a97ae..94a24a97ae 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/de/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/de/floater_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml index e0bcd42523..e0bcd42523 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/de/floater_script_queue.xml b/indra/newview/skins/default/xui/de/floater_script_queue.xml index f267fe4b7c..f267fe4b7c 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/de/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/de/floater_script_search.xml b/indra/newview/skins/default/xui/de/floater_script_search.xml index ffae96f6a1..ffae96f6a1 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_script_search.xml +++ b/indra/newview/skins/default/xui/de/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml index bd39bf2bce..bd39bf2bce 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_search.xml +++ b/indra/newview/skins/default/xui/de/floater_search.xml diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml index 8ab9db520a..8ab9db520a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_select_key.xml +++ b/indra/newview/skins/default/xui/de/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml index 646138eaad..646138eaad 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/de/floater_settings_debug.xml b/indra/newview/skins/default/xui/de/floater_settings_debug.xml index 004e54a339..004e54a339 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/de/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 51614f1e8d..f0152ad8cd 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -39,13 +39,7 @@ <string name="local_failed_str"> Fehler beim Speichern auf dem Computer. </string> - <button name="advanced_options_btn" tool_tip="Erweiterte Optionen"/> - <text name="image_res_text"> - [WIDTH]px (Breite) x [HEIGHT]px (Höhe) - </text> - <text name="file_size_label"> - [SIZE] KB - </text> + <button label="AKTUALISIEREN" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> <text name="layer_type_label"> Aufnehmen: @@ -65,4 +59,10 @@ <combo_box.item label="Kein Filter" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] px (Breite) x [HEIGHT] px (Höhe) + </text> + <text name="file_size_label"> + [SIZE] KB + </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml index 22ccb2c1a2..22ccb2c1a2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/de/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/de/floater_sound_preview.xml b/indra/newview/skins/default/xui/de/floater_sound_preview.xml index 1070c93405..1070c93405 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/de/floater_spellcheck.xml b/indra/newview/skins/default/xui/de/floater_spellcheck.xml index 213db277b6..213db277b6 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/de/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml index 374c0fc0d2..374c0fc0d2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml index 4e6f56cd94..4e6f56cd94 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_stats.xml +++ b/indra/newview/skins/default/xui/de/floater_stats.xml diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml index ec79b862b4..ec79b862b4 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml index 83d37b2ce4..83d37b2ce4 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_telehub.xml +++ b/indra/newview/skins/default/xui/de/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml index 429447c378..429447c378 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml index 506d2b013a..506d2b013a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml index b794d879f0..b794d879f0 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml index 97b0364832..97b0364832 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 7dd5938601..7dd5938601 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml diff --git a/indra/newview/skins/default/xui/de/floater_top_objects.xml b/indra/newview/skins/default/xui/de/floater_top_objects.xml index f8130c6379..d01b4640c2 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/de/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Nicht gefunden. </floater.string> + <floater.string name="URLs"> + URLs + </floater.string> + <floater.string name="memory"> + Speicher (KB) + </floater.string> <text name="title_text"> Wird geladen... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Eigentümer" name="owner"/> <scroll_list.columns label="Position" name="location" width="125"/> <scroll_list.columns label="Parzelle" name="parcel"/> - <scroll_list.columns label="Uhrzeit" name="time"/> + <scroll_list.columns label="Datum" name="time"/> <scroll_list.columns label="URLs" name="URLs"/> <scroll_list.columns label="Speicher (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/de/floater_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml index ba329371f8..ba329371f8 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_tos.xml +++ b/indra/newview/skins/default/xui/de/floater_tos.xml diff --git a/indra/newview/skins/default/xui/de/floater_toybox.xml b/indra/newview/skins/default/xui/de/floater_toybox.xml index 90e50804d6..90e50804d6 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_toybox.xml +++ b/indra/newview/skins/default/xui/de/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/de/floater_translation_settings.xml b/indra/newview/skins/default/xui/de/floater_translation_settings.xml index 3d5d1d46a8..3d5d1d46a8 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/de/floater_twitter.xml b/indra/newview/skins/default/xui/de/floater_twitter.xml index a79a5d3cac..483641c260 100644 --- a/indra/newview/skins/default/xui/de/floater_twitter.xml +++ b/indra/newview/skins/default/xui/de/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="ERSTELLEN" name="panel_twitter_photo"/> - <panel label="KONTO" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Fehler - </text> - <text name="connection_loading_text"> - Laden... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="ERSTELLEN" name="panel_twitter_photo"/> + <panel label="KONTO" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Fehler + </text> + <text name="connection_loading_text"> + Laden... + </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_url_entry.xml b/indra/newview/skins/default/xui/de/floater_url_entry.xml index f5fa449c85..f5fa449c85 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/de/floater_url_entry.xml 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 5efda4136e..5efda4136e 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml index 8d37950480..8d37950480 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/de/floater_web_content.xml b/indra/newview/skins/default/xui/de/floater_web_content.xml index 6ab119eeab..6ab119eeab 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_web_content.xml +++ b/indra/newview/skins/default/xui/de/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml index 1332509529..1332509529 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/de/floater_window_size.xml b/indra/newview/skins/default/xui/de/floater_window_size.xml index 6502f002a1..6502f002a1 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_window_size.xml +++ b/indra/newview/skins/default/xui/de/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index befa46651a..befa46651a 100755..100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml index 4b8fd8a0ad..4b8fd8a0ad 100755..100644 --- a/indra/newview/skins/default/xui/de/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml index 60fa8ff0d8..60fa8ff0d8 100755..100644 --- a/indra/newview/skins/default/xui/de/inspect_group.xml +++ b/indra/newview/skins/default/xui/de/inspect_group.xml diff --git a/indra/newview/skins/default/xui/de/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml index 72b8235828..72b8235828 100755..100644 --- a/indra/newview/skins/default/xui/de/inspect_object.xml +++ b/indra/newview/skins/default/xui/de/inspect_object.xml diff --git a/indra/newview/skins/default/xui/de/inspect_remote_object.xml b/indra/newview/skins/default/xui/de/inspect_remote_object.xml index 9fe05455eb..9fe05455eb 100755..100644 --- a/indra/newview/skins/default/xui/de/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/de/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml index f9346eef7d..f9346eef7d 100755..100644 --- a/indra/newview/skins/default/xui/de/language_settings.xml +++ b/indra/newview/skins/default/xui/de/language_settings.xml diff --git a/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml index f3775a05ec..f3775a05ec 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml index 4c125c8b5d..4c125c8b5d 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml index 7888c7b0a1..e0f37b28af 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mein Aussehen" name="Change Outfit"/> <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> + <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml index ad47f1d37d..ad47f1d37d 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml index 65dc054ed5..65dc054ed5 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml 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 022cd8c3ca..b53f8cd6af 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mein Aussehen" name="Chenge Outfit"/> <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> + <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml index 05d3dfca9d..05d3dfca9d 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/de/menu_cof_body_part.xml b/indra/newview/skins/default/xui/de/menu_cof_body_part.xml index 07960a525c..07960a525c 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml index 7fced273a7..7fced273a7 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml index 2dd871b2ea..2dd871b2ea 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_edit.xml b/indra/newview/skins/default/xui/de/menu_edit.xml index 37f68d68d5..37f68d68d5 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_edit.xml +++ b/indra/newview/skins/default/xui/de/menu_edit.xml diff --git a/indra/newview/skins/default/xui/de/menu_favorites.xml b/indra/newview/skins/default/xui/de/menu_favorites.xml index 0d0491d2eb..0d0491d2eb 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_favorites.xml +++ b/indra/newview/skins/default/xui/de/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml index 953c0eeed5..953c0eeed5 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_group_plus.xml b/indra/newview/skins/default/xui/de/menu_group_plus.xml index 583ee793be..583ee793be 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/de/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml index 33d55e85bd..33d55e85bd 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml index 11f93f47b4..11f93f47b4 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml index 81ef3b6569..81ef3b6569 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml index d123238246..d123238246 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml index 641a0ceebe..641a0ceebe 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml index 73e0029b76..73e0029b76 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml index 5979194bfb..5979194bfb 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml index 71cff7136b..71cff7136b 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index d838f736f8..e1f545adfc 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Auflistung erstellen" name="Marketplace Create Listing"/> + <menu_item_call label="Auflistung verknüpfen" name="Marketplace Associate Listing"/> + <menu_item_call label="Auflistung abrufen (aktualisieren)" name="Marketplace Get Listing"/> + <menu_item_call label="Auf Fehler prüfen" name="Marketplace Check Listing"/> + <menu_item_call label="Auflistung bearbeiten" name="Marketplace Edit Listing"/> + <menu_item_call label="Auflisten" name="Marketplace List"/> + <menu_item_call label="Entfernen" name="Marketplace Unlist"/> + <menu_item_call label="Aktivieren" name="Marketplace Activate"/> + <menu_item_call label="Deaktivieren" name="Marketplace Deactivate"/> <menu_item_call label="Teilen" name="Share"/> <menu_item_call label="Kaufen" name="Task Buy"/> <menu_item_call label="Öffnen" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Hinzufügen" name="Wearable Add"/> <menu_item_call label="Ausziehen" name="Take Off"/> <menu_item_call label="In Händler-Outbox kopieren" name="Merchant Copy"/> - <menu_item_call label="In Marktplatz übertragen" name="Marketplace Send"/> + <menu_item_call label="In Marktplatz-Auflistungen kopieren" name="Marketplace Copy"/> + <menu_item_call label="In Marktplatz-Auflistungen verschieben" name="Marketplace Move"/> <menu_item_call label="--keine Optionen--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml index af70c08ba1..af70c08ba1 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml index 48dec3e856..7438fc5aa2 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/> <menu_item_check label="Ordner immer nach Namen sortieren" name="sort_folders_by_name"/> <menu_item_check label="Systemordner nach oben" name="sort_system_folders_to_top"/> - <menu_item_call label="Filter anzeigen" name="show_filters"/> + <menu_item_call label="Filter anzeigen..." name="show_filters"/> <menu_item_call label="Filter zurücksetzen" name="reset_filters"/> <menu_item_call label="Alle Ordner schließen" name="close_folders"/> <menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml index 0bbf8c666e..0bbf8c666e 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_land.xml +++ b/indra/newview/skins/default/xui/de/menu_land.xml diff --git a/indra/newview/skins/default/xui/de/menu_landmark.xml b/indra/newview/skins/default/xui/de/menu_landmark.xml index 2aff0eec95..2aff0eec95 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_landmark.xml +++ b/indra/newview/skins/default/xui/de/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 329ea20179..329ea20179 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml diff --git a/indra/newview/skins/default/xui/de/menu_marketplace_view.xml b/indra/newview/skins/default/xui/de/menu_marketplace_view.xml new file mode 100644 index 0000000000..41516a1e7c --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Nach verfügbarer Menge sortieren (niedrig bis hoch)" name="sort_by_stock_amount"/> + <menu_item_check label="Nur Auflistungsordner anzeigen" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_media_ctrl.xml b/indra/newview/skins/default/xui/de/menu_media_ctrl.xml index 59c1c2ee86..59c1c2ee86 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/de/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/de/menu_mini_map.xml b/indra/newview/skins/default/xui/de/menu_mini_map.xml index 2e0d72c40c..2e0d72c40c 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/de/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml index e1faeedcde..e1faeedcde 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/de/menu_navbar.xml b/indra/newview/skins/default/xui/de/menu_navbar.xml index 5175f34b41..5175f34b41 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_navbar.xml +++ b/indra/newview/skins/default/xui/de/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/de/menu_nearby_chat.xml b/indra/newview/skins/default/xui/de/menu_nearby_chat.xml index 99d6428c3f..99d6428c3f 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/de/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml index 0f2784f160..0f2784f160 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml index dbf78f406b..dbf78f406b 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_object.xml +++ b/indra/newview/skins/default/xui/de/menu_object.xml diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml index f92fa0f82b..f92fa0f82b 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml index 0cf3c09882..0cf3c09882 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml index 32a65c96fc..32a65c96fc 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml 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 160f2f97be..160f2f97be 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml index 84d9d8938c..84d9d8938c 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml index a69c82d3d8..a69c82d3d8 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml index b68597d8aa..b68597d8aa 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml index cdbb3ae917..cdbb3ae917 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml index ba6578e2d1..ba6578e2d1 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml index a001544f3e..a001544f3e 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml index 1ef020f5e1..1ef020f5e1 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/de/menu_picks.xml b/indra/newview/skins/default/xui/de/menu_picks.xml index 9aec4c83b0..9aec4c83b0 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_picks.xml +++ b/indra/newview/skins/default/xui/de/menu_picks.xml diff --git a/indra/newview/skins/default/xui/de/menu_picks_plus.xml b/indra/newview/skins/default/xui/de/menu_picks_plus.xml index 385ff25b95..385ff25b95 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/de/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/de/menu_place.xml b/indra/newview/skins/default/xui/de/menu_place.xml index d9c85f5b92..d9c85f5b92 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_place.xml +++ b/indra/newview/skins/default/xui/de/menu_place.xml diff --git a/indra/newview/skins/default/xui/de/menu_place_add_button.xml b/indra/newview/skins/default/xui/de/menu_place_add_button.xml index 7c0ff4a46a..7c0ff4a46a 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/de/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml index 892f075d3c..892f075d3c 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml index 8955f797a2..8955f797a2 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml index 9f3fcbca1d..9f3fcbca1d 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/de/menu_save_outfit.xml b/indra/newview/skins/default/xui/de/menu_save_outfit.xml index 986c78b318..986c78b318 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/de/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/de/menu_script_chiclet.xml b/indra/newview/skins/default/xui/de/menu_script_chiclet.xml index 3256aa1a87..3256aa1a87 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/de/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/de/menu_slurl.xml b/indra/newview/skins/default/xui/de/menu_slurl.xml index b2ec017f9f..b2ec017f9f 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_slurl.xml +++ b/indra/newview/skins/default/xui/de/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml index 68b8e21802..68b8e21802 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml index 1d7e3059c0..1d7e3059c0 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml index 194dd16fd1..194dd16fd1 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/de/menu_text_editor.xml b/indra/newview/skins/default/xui/de/menu_text_editor.xml index 2e33ed3416..2e33ed3416 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/de/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/de/menu_toolbars.xml b/indra/newview/skins/default/xui/de/menu_toolbars.xml index 3fb48e26b2..3fb48e26b2 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/de/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/de/menu_topinfobar.xml b/indra/newview/skins/default/xui/de/menu_topinfobar.xml index 5b0a724244..5b0a724244 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/de/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml index ddb072ba8f..ddb072ba8f 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_experience.xml b/indra/newview/skins/default/xui/de/menu_url_experience.xml new file mode 100644 index 0000000000..45c118cb6d --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_group.xml b/indra/newview/skins/default/xui/de/menu_url_group.xml index 6bd86414bc..6bd86414bc 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_group.xml +++ b/indra/newview/skins/default/xui/de/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_http.xml b/indra/newview/skins/default/xui/de/menu_url_http.xml index 30eb1668a5..30eb1668a5 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_http.xml +++ b/indra/newview/skins/default/xui/de/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_inventory.xml b/indra/newview/skins/default/xui/de/menu_url_inventory.xml index dc069df02b..dc069df02b 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_map.xml b/indra/newview/skins/default/xui/de/menu_url_map.xml index 2f6ffcd450..2f6ffcd450 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_map.xml +++ b/indra/newview/skins/default/xui/de/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml index fc01ea8444..fc01ea8444 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_parcel.xml b/indra/newview/skins/default/xui/de/menu_url_parcel.xml index 9169bca24f..9169bca24f 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/de/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_slapp.xml b/indra/newview/skins/default/xui/de/menu_url_slapp.xml index 72e916b902..72e916b902 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/de/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_slurl.xml b/indra/newview/skins/default/xui/de/menu_url_slurl.xml index 5d48230ebf..5d48230ebf 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/de/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/de/menu_url_teleport.xml b/indra/newview/skins/default/xui/de/menu_url_teleport.xml index 4cc1ecc70e..4cc1ecc70e 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/de/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 50a6dafa91..956530c990 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Neues Inventarfenster" name="NewInventoryWindow"/> <menu_item_call label="Orte..." name="Places"/> <menu_item_call label="Auswahlen..." name="Picks"/> + <menu_item_call label="Erlebnisse..." name="Experiences"/> <menu_item_call label="Kamerasteuerungen..." name="Camera Controls"/> <menu label="Bewegung" name="Movement"> <menu_item_call label="Hinsetzen" name="Sit Down Here"/> <menu_item_check label="Fliegen" name="Fly"/> <menu_item_check label="Immer rennen" name="Always Run"/> <menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/> - <menu_item_call label="Gehen/Rennen/Fliegen..." name="Walk / run / fly"/> + <menu_item_call label="Gehen/Rennen/Fliegen..." name="WalkRunFly"/> </menu> <menu label="Status" name="Status"> <menu_item_check label="Abwesend" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/> <menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/> + <menu_item_call label="Marktplatz-Auflistungen..." name="MarketplaceListings"/> <menu_item_call label="Kontoübersicht..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> @@ -48,7 +50,7 @@ <menu_item_check label="Freunde" name="My Friends"/> <menu_item_check label="Gruppen" name="My Groups"/> <menu_item_check label="Leute in der Nähe" name="Active Speakers"/> - <menu_item_call label="Blockierliste" name="Block List"/> + <menu_item_check label="Blockierliste" name="Block List"/> <menu_item_check label="Nicht stören" name="Do Not Disturb"/> </menu> <menu label="Welt" name="World"> @@ -62,7 +64,7 @@ <menu_item_call label="Foto" name="Take Snapshot"/> <menu_item_call label="Ortsprofil" name="Place Profile"/> <menu_item_call label="Landinformationen" name="About Land"/> - <menu_item_call label="Region/Grundbesitz" name="Region/Estate"/> + <menu_item_call label="Region/Grundbesitz" name="RegionEstate"/> <menu_item_call label="Mein Landbesitz..." name="My Land"/> <menu_item_call label="Dieses Land kaufen" name="Buy Land"/> <menu label="Anzeigen" name="LandShow"> @@ -250,6 +252,7 @@ <menu_item_check label="Textur" name="Texture Console"/> <menu_item_check label="Fehler beseitigen" name="Debug Console"/> <menu_item_call label="Meldungen" name="Notifications"/> + <menu_item_check label="Regions-Debug-Konsole" name="Region Debug Console"/> <menu_item_check label="Schnelle Timer" name="Fast Timers"/> <menu_item_check label="Speicher" name="Memory"/> <menu_item_check label="Szenestatistiken" name="Scene Statistics"/> @@ -353,7 +356,7 @@ <menu_item_check label="Positionen der interpolierten Objekte anfragen" name="Ping Interpolate Object Positions"/> <menu_item_call label="Ein Paket fallenlassen" name="Drop a Packet"/> </menu> - <menu_item_call label="Geskriptete Kamera ausgeben" name="Dump Scripted Camera"/> + <menu_item_call label="Geskriptete Kamera ausgeben" name="Dump Scripted Camera"/> <menu label="Rekorder" name="Recorder"> <menu_item_call label="Wiedergabe starten" name="Start Playback"/> <menu_item_call label="Wiedergabe stoppen" name="Stop Playback"/> 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 283e454a06..283e454a06 100755..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 diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml index dacf898b6a..dacf898b6a 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml index 695451a105..695451a105 100755..100644 --- a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/de/mime_types.xml b/indra/newview/skins/default/xui/de/mime_types.xml index de93107e94..ee05e47a63 100755..100644 --- a/indra/newview/skins/default/xui/de/mime_types.xml +++ b/indra/newview/skins/default/xui/de/mime_types.xml @@ -44,6 +44,14 @@ Audio an diesem Ort wiedergeben </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Keine Inhalte + </label> + <tooltip name="none_tooltip"> + Keine Medien gefunden + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Echtzeit-Streaming @@ -119,11 +127,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> Audio (MIDI) diff --git a/indra/newview/skins/default/xui/de/mime_types_linux.xml b/indra/newview/skins/default/xui/de/mime_types_linux.xml index e4b5c53292..ffe819d157 100755..100644 --- a/indra/newview/skins/default/xui/de/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/de/mime_types_linux.xml @@ -44,6 +44,14 @@ Das Audio dieses Standorts abspielen </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Keine Inhalte + </label> + <tooltip name="none_tooltip"> + Keine Medien gefunden + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Echtzeit-Streaming diff --git a/indra/newview/skins/default/xui/de/mime_types_mac.xml b/indra/newview/skins/default/xui/de/mime_types_mac.xml index e4b5c53292..ffe819d157 100755..100644 --- a/indra/newview/skins/default/xui/de/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/de/mime_types_mac.xml @@ -44,6 +44,14 @@ Das Audio dieses Standorts abspielen </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Keine Inhalte + </label> + <tooltip name="none_tooltip"> + Keine Medien gefunden + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Echtzeit-Streaming diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 2fa5005d15..fa7db0a8a3 100755..100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -73,6 +73,10 @@ Fehlerdetails: The notification called '[_NAME]' was not found in noti [MESSAGE] <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte [http://get.secondlife.com laden Sie die aktuellste Version des Viewers herunter]. <usetemplate name="okbutton" yestext="OK"/> @@ -125,6 +129,88 @@ Aufgrund eines System- oder Netzwerkfehlers wurden keine Ordner an den Marktplat Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschlagen. Versuchen Sie es später erneut. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Kopieren oder Verschieben in Bestandsordner fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Kopieren oder Verschieben von Marktplatz-Auflistungen fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Marktplatztransaktion fehlgeschlagen mit Fehler: + + Grund: „[ERROR_REASON]“ + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Wir konnten dieses Produkt nicht auflisten bzw. den Versionsordner nicht aktivieren. Dies liegt meist an fehlenden Informationen im Formular zur Beschreibung der Auflistung, kann aber auch auf eine falsche Ordnerstruktur zurückzuführen sein. Bearbeiten Sie die Auflistung oder überprüfen Sie den Auflistungsordner auf Fehler. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Auflistung in Marktplatz fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Aktivierung dieses Versionsordners fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Diese Aktion ändert den aktiven Inhalt dieser Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Ändern einer aktiven Auflistung im Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Objekte, die ins Marktplatz-Auflistungsfenster gezogen werden, werden verschoben, nicht kopiert. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Verschieben eines Objekts aus dem Inventar in den Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Wenn Sie einen Auflistungsordner verschieben oder löschen, wird Ihre Marktplatz-Auflistung gelöscht. Um die Marktplatz-Auflistung beizubehalten, verschieben oder löschen Sie den Inhalt des Versionsordners, den Sie ändern möchten. Möchten Sie fortfahren? + <usetemplate ignoretext="Bestätigen, bevor ich eine Auflistung aus dem Marktplatz entferne oder verschiebe" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Sie haben keine Berechtigung, eines oder mehrere dieser Objekte in den Marktplatz zu kopieren. Sie können sie verschieben oder zurücklassen. + <usetemplate canceltext="Abbrechen" ignoretext="Vor Kopieren einer Auswahl mit kopiergeschützten Objekten in den Marktplatz bestätigen" name="yesnocancelbuttons" notext="Artikel nicht verschieben" yestext="Artikel verschieben"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Diese Aktion entfernt diese Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Entfernen einer aktiven Auflistung aus dem Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Diese Aktion deaktiviert den Versionsordner der aktuellen Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Deaktivieren des Versionsordners einer Auflistung im Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Diese Auflistung konnte nicht aktualisiert werden. +[[URL] Klicken Sie hier], um sie im Marktplatz zu bearbeiten. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Sie können keine Kleidung oder Körperteile tragen, die im Marktplatz-Auflistungsordner enthalten sind + </notification> + <notification name="AlertMerchantListingInvalidID"> + Auflistungs-ID ungültig. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + In dieser Auflistung gibt es mehrere oder keine Versionsordner. Sie müssen später einen auswählen und aktivieren. + <usetemplate ignoretext="Benachrichtung zur Versionsordneraktivierung, wenn ich eine Auflistung mit mehreren Versionsordnern erstelle" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Wir haben Bestandsobjekte unterschiedlicher Typen in separate Bestandsordner gelegt, damit wir Ihren Ordner auflisten können. + <usetemplate ignoretext="Benachrichtigen,wenn Bestandsordner vor dem Auflisten aufgeteilt wird" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Wir haben Ihre Auflistung entfernt, da der Bestandsordner leer ist. Um diese Auflistung wieder zu listen, müssen Sie weitere Einheiten zum Bestandsordner hinzufügen. + <usetemplate ignoretext="Benachrichtigen, wenn Auflistung aufgrund eines leeren Bestandsordners nicht aufgelistet wird" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. </notification> @@ -476,6 +562,10 @@ Hinweis: Der Cache wird dabei gelöscht/geleert. Änderungen speichern? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> </notification> + <notification name="DeleteNotecard"> + Notizkarte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Speichern der Geste fehlgeschlagen. Die Geste besteht aus zu vielen Schritten. @@ -582,6 +672,9 @@ Sie können die Grafikqualität unter Einstellungen > Grafik wieder erhöhen. <notification name="RegionNoTerraforming"> Die Region [REGION] erlaubt kein Terraforming. </notification> + <notification name="ParcelNoTerraforming"> + Sie sind nicht zum Terraformen der Parzelle „[PARCEL]“ berechtigt. + </notification> <notification name="CannotCopyWarning"> Sie sind nicht berechtigt, die folgenden Objekte zu kopieren: [ITEMS] @@ -1839,6 +1932,30 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas Verwalter nur für diesen Grundbesitz oder für [ALL_ESTATES] entfernen? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Diesen Grundbesitz"/> </notification> + <notification label="Grundbesitz auswählen" name="EstateAllowedExperienceAdd"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] zur Erlaubnisliste hinzufügen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> + <notification label="Grundbesitz auswählen" name="EstateAllowedExperienceRemove"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] aus der Erlaubnisliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> + <notification label="Grundbesitz auswählen" name="EstateBlockedExperienceAdd"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] zur Blockierliste hinzufügen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> + <notification label="Grundbesitz auswählen" name="EstateBlockedExperienceRemove"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] aus der Blockierliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> + <notification label="Grundbesitz auswählen" name="EstateTrustedExperienceAdd"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] zur Schlüsselliste hinzufügen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> + <notification label="Grundbesitz auswählen" name="EstateTrustedExperienceRemove"> + Nur für diesen Grundbesitz oder für [ALL_ESTATES] aus der Schlüsselliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundbesitze" yestext="Dieser Grundbesitz"/> + </notification> <notification label="Rauswurf bestätigen" name="EstateKickUser"> Benutzer [EVIL_USER] von diesem Grundbesitz werfen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -1851,6 +1968,9 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas Die Region, die Sie besuchen möchten, enthält Inhalte, die Ihre aktuellen Einstellungen überschreiten. Sie können Ihre Einstellungen unter „Ich“ > „Einstellungen“ > „Allgemein“ ändern. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Die Region, die Sie besuchen möchten, enthält [REGIONMATURITY]-Inhalte, die nur für Erwachsene zugänglich sind. <url name="url"> @@ -1913,6 +2033,10 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas Wir haben technische Probleme mit Ihrem Teleport, da Ihre Einstellungen nicht mit dem Server synchronisiert sind. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Betreten der Region nicht gestattet. „[REGION_NAME]“ ist eine Region für Geschicklichkeitsspiele. Der Zugang ist Einwohnern vorbehalten, die bestimmte Kriterien erfüllen. Weitere Details finden Sie unter [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> Sie erhalten keine Benachrichtigungen mehr, wenn Sie eine Region der Inhaltseinstufung „[RATING]“ besuchen. Sie können Ihre Inhaltseinstellungen von der Menüleiste aus ändern („Ich“ > „Einstellungen“ > „Allgemein“). <usetemplate name="okbutton" yestext="OK"/> @@ -2136,6 +2260,10 @@ Inventarobjekt(e) verschieben? <ignore name="ignore" text="Ich habe die Aktion „Objekt bezahlen" eingestellt, während ich ein Objekt gebaut habe, dass kein Geld()-Skript enthält."/> </form> </notification> + <notification name="PayConfirmation"> + Bestätigen Sie, dass Sie L$ [AMOUNT] an [TARGET] zahlen möchten. + <usetemplate ignoretext="Vor den Bezahlen bestätigen (Summen über L$ 200)" name="okcancelignore" notext="Abbrechen" yestext="Bezahlen"/> + </notification> <notification name="OpenObjectCannotCopy"> Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. </notification> @@ -2220,6 +2348,9 @@ Möchten Sie es mit dem ausgewählten Objekt ersetzen? <button ignore="Nie ersetzen" name="No" text="Abbrechen"/> </form> </notification> + <notification name="TooManyWearables"> + Sie können keinen Ordner tragen, der mehr als [AMOUNT] Elemente enthält. Sie können diesen Höchstwert unter „Erweitert“ > „Debug-Einstellungen anzeigen“ > „WearFolderLimit“ ändern. + </notification> <notification label="Warnung für Nicht-stören-Modus" name="DoNotDisturbModePay"> Sie haben den Nicht-stören-Modus aktiviert. Sie erhalten keine Artikel, die im Gegenzug für diese Zahlung angeboten werden. @@ -2671,9 +2802,6 @@ Versuchen Sie es in einigen Minuten erneut. <notification name="NoValidCircuit"> Kein gültiger Verbindungscode. </notification> - <notification name="NoValidTimestamp"> - Kein gültiger Zeitstempel. - </notification> <notification name="NoPendingConnection"> Verbindung kann nicht hergestellt werden. </notification> @@ -2828,7 +2956,7 @@ Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. [MESSAGE] -Von Objekt: <nolink>[OBJECTNAME]</nolink>, Eigentümer: [NAME]? +Von Objekt: <nolink>[OBJECTNAME]</nolink>, Eigentümer: [NAME] <form name="form"> <button name="Gotopage" text="Zur Seite"/> <button name="Cancel" text="Abbrechen"/> @@ -2854,6 +2982,72 @@ Ist das OK? <button name="Mute" text="Ignorieren"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Fehler beim Erwerb eines neuen Erlebnisses: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Eine Änderung der Erlebnisgruppe wurde ignoriert, weil der Eigentümer nicht Mitglied der ausgewählten Gruppe ist. + </notification> + <notification name="UneditableExperienceProfileMessage"> + Das nicht bearbeitbare Feld „[field]“ wurde beim Aktualisieren des Erlebnisprofils ignoriert. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Änderungen des Felds „[field]“ ignoriert; Feld kann nur vom Eigentümer des Erlebnisses eingestellt werden. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Sie können die Inhaltseinstufung eines Erlebnisses nicht auf eine höhere Stufe setzen als die des Eigentümers. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Die folgenden Elemente verhinderten die Aktualisierung des Namens und/oder der Beschreibung im Erlebnisprofil: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Sie wurden aus der Region [region_name] teleportiert, weil Sie das Erlebnis secondlife:///app/experience/[public_id]/profile entfernt haben und nicht mehr berechtigt sind, sich in dieser Region aufzuhalten. + <form name="form"> + <ignore name="ignore" text="Wegen Entfernen eines Erlebnisses aus Region hinausgeworfen"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + Sie durften die Region [region_name] betreten, weil Sie am Schlüsselerlebnis secondlife:///app/experience/[public_id]/profile teilgenommen haben. Wenn Sie dieses Erlebnis entfernen, werden Sie u. U. aus der Region hinausgeworfen. + <form name="form"> + <ignore name="ignore" text="Betreten der Region durch ein Erlebnis gestattet"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + Sie haben keinen Zugang zu diesem Ziel. Sie erhalten u. U. Zugang zur Region, wenn Sie unten ein Erlebnis akzeptieren: + +[EXPERIENCE_LIST] + +Möglicherweise sind noch weitere Schlüsselerlebnisse verfügbar. + </notification> + <notification name="ExperienceEvent"> + Ein Objekt erhielt vom Erlebnis secondlife:///app/experience/[public_id]/profile die Erlaubnis zum Durchführen der folgenden Aktion: [EventType]. + Eigentümer: secondlife:///app/agent/[OwnerID]/inspect + Objektname: [ObjectName] + Parzellenname: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + Ein Anhang erhielt vom Erlebnis secondlife:///app/experience/[public_id]/profile die Erlaubnis zum Durchführen der folgenden Aktion: [EventType]. + Eigentümer: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + „<nolink>[OBJECTNAME]</nolink>“, ein Objekt, das „[NAME]“ gehört, lädt Sie zur Teilnahme an diesem Erlebnis mit [GRID_WIDE] ein: + +[EXPERIENCE] + +Nach Erteilung der Genehmigung wird diese Nachricht für dieses Erlebnis nicht erneut angezeigt, es sei denn, Sie widerrufen die Genehmigung im Erlebnisprofil. + +Mit diesem Erlebnis verknüpfte Skripts können in Regionen, in denen dieses Erlebnis aktiv ist, Folgendes tun: + +[QUESTIONS]Sind Sie damit einverstanden? + <form name="form"> + <button name="BlockExperience" text="Erlebnis blockieren"/> + <button name="Mute" text="Objekt blockieren"/> + <button name="Yes" text="Ja"/> + <button name="No" text="Nein"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Achtung: Das Objekt „<nolink>[OBJECTNAME]</nolink>“ fordert uneingeschränkten Zugriff auf Ihr Linden-Dollar-Konto an. Wenn Sie Zugriff gewähren, kann dieses Objekt jederzeit und ohne weitere Warnung Ihr Konto belasten bzw. ganz leeren. @@ -3174,6 +3368,10 @@ Sie haben eine [RESOLUTION]-gebackene Textur für „[BODYREGION]“ nach [TIME] ( [EXISTENCE] Sekunden am Leben) Sie haben lokal eine [RESOLUTION]-gebackene Textur für „[BODYREGION]“ nach [TIME] Sekunden aktualisiert. </notification> + <notification name="CannotUploadTexture"> + Textur kann nicht hochgeladen werden. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Wir können keine Vorschau dieser Textur anzeigen, da sie nicht kopier- und/oder übertragungsfähig ist. <usetemplate ignoretext="Hinweis anzeigen, wenn bei nicht kopier- und/oder übertragungsfähigen Texturen keine Live-Vorschau möglich ist" name="okignore" yestext="OK"/> @@ -3747,9 +3945,11 @@ Warten Sie kurz und versuchen Sie es noch einmal. </notification> <notification name="TeleportedByAttachment"> Sie wurden von einem Anhang an [ITEM_ID] teleportiert + <usetemplate ignoretext="Teleport: Sie wurden von einem Anhang teleportiert" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Sie wurden von Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ teleportiert + <usetemplate ignoretext="Teleport: Sie wurden von einem Objekt in einer Parzelle teleportiert" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sie wurden von Objekt „[OBJECT_NAME]“, das [OWNER_ID] gehört, teleportiert @@ -4081,7 +4281,7 @@ Wählen Sie eine kleinere Landfläche aus. <usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Die Standardberechtigungen konnten aus folgendem Grund nicht gespeichert werden: [REASON]. Versuchen Sie später, die Standardberechtigungen einzustellen. + Problem beim Speichern der standardmäßigen Objektberechtigungen: [REASON]. Versuchen Sie später, die Standardberechtigungen einzustellen. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/de/panel_active_object_row.xml b/indra/newview/skins/default/xui/de/panel_active_object_row.xml index 00de705a30..00de705a30 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/de/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml index 6ad18781f5..6ad18781f5 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml index 79a2ebe9df..79a2ebe9df 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_avatar_tag.xml b/indra/newview/skins/default/xui/de/panel_avatar_tag.xml index 09f930ec01..09f930ec01 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/de/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml index c105a5b8a3..c105a5b8a3 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml index 799586f021..799586f021 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml index 4d7e65405a..4d7e65405a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml index 9c84105254..9c84105254 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/de/panel_chat_header.xml b/indra/newview/skins/default/xui/de/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/de/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml index bcc6772bb9..bcc6772bb9 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/de/panel_classified_info.xml b/indra/newview/skins/default/xui/de/panel_classified_info.xml index 007e9d69f0..007e9d69f0 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/de/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml index fc45c9ce79..fc45c9ce79 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml index 945acb02d7..945acb02d7 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_cof_wearables.xml b/indra/newview/skins/default/xui/de/panel_cof_wearables.xml index 12294a43ce..12294a43ce 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/de/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml index a27252e23e..a27252e23e 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml index b7ad1bdc1b..b7ad1bdc1b 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml index 4c6facf5e3..4c6facf5e3 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml index bd270697ea..bd270697ea 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_eyes.xml b/indra/newview/skins/default/xui/de/panel_edit_eyes.xml index 69bcf2fb71..69bcf2fb71 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_gloves.xml b/indra/newview/skins/default/xui/de/panel_edit_gloves.xml index fb7d18f66c..fb7d18f66c 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_hair.xml b/indra/newview/skins/default/xui/de/panel_edit_hair.xml index d6efde8306..d6efde8306 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml index 1b7c1d79a5..1b7c1d79a5 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_pants.xml b/indra/newview/skins/default/xui/de/panel_edit_pants.xml index 533cf20412..533cf20412 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_physics.xml b/indra/newview/skins/default/xui/de/panel_edit_physics.xml index bd9c84577a..bd9c84577a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_pick.xml b/indra/newview/skins/default/xui/de/panel_edit_pick.xml index aafffc7ae3..aafffc7ae3 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml index 03974e7f7f..03974e7f7f 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_shape.xml b/indra/newview/skins/default/xui/de/panel_edit_shape.xml index 80d3b29cad..80d3b29cad 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_shirt.xml b/indra/newview/skins/default/xui/de/panel_edit_shirt.xml index 4f140a2b01..4f140a2b01 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_shoes.xml b/indra/newview/skins/default/xui/de/panel_edit_shoes.xml index abedb8d89e..abedb8d89e 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_skin.xml b/indra/newview/skins/default/xui/de/panel_edit_skin.xml index 60f6919485..60f6919485 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_skirt.xml b/indra/newview/skins/default/xui/de/panel_edit_skirt.xml index 07ce8a7436..07ce8a7436 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_socks.xml b/indra/newview/skins/default/xui/de/panel_edit_socks.xml index 4e72b63f49..4e72b63f49 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml index 075a9d752a..075a9d752a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_underpants.xml b/indra/newview/skins/default/xui/de/panel_edit_underpants.xml index 1fad0ccedb..1fad0ccedb 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml index 9d193ffedb..9d193ffedb 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml index 94a79a0bbd..94a79a0bbd 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/de/panel_experience_info.xml b/indra/newview/skins/default/xui/de/panel_experience_info.xml new file mode 100644 index 0000000000..7231719561 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Erlebnisprofil"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Standort: + </text> + <text name="LocationTextText"> + irgendwo + </text> + <button label="Teleportieren" name="teleport_btn"/> + <button label="Karte" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Marketplace-Laden: + </text> + <text name="LocationTextText"> + irgendwo + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Einstufung: + </text> + <text name="ContentRatingText"> + Adult + </text> + <text name="Owner"> + Eigentümer: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Bearbeiten" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/de/panel_experience_list_editor.xml new file mode 100644 index 0000000000..b87c814485 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + wird geladen... + </panel.string> + <panel.string name="panel_allowed"> + Zulässige Erlebnisse: + </panel.string> + <panel.string name="panel_blocked"> + Blockierte Erlebnisse: + </panel.string> + <panel.string name="panel_trusted"> + Schlüsselerlebnisse: + </panel.string> + <panel.string name="no_results"> + (leer) + </panel.string> + <text name="text_name"> + Erlebnisliste + </text> + <scroll_list name="experience_list"> + <columns label="Name" name="experience_name"/> + </scroll_list> + <button label="Hinzufügen..." name="btn_add"/> + <button label="Entfernen" name="btn_remove"/> + <button label="Profil..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_experience_list_item.xml b/indra/newview/skins/default/xui/de/panel_experience_list_item.xml new file mode 100644 index 0000000000..cfffa27a20 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Dummy-Name + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_experience_log.xml b/indra/newview/skins/default/xui/de/panel_experience_log.xml new file mode 100644 index 0000000000..393bbbbf8e --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Keine Events."/> + <string name="loading" value="Laden..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Zeit" name="time"/> + <columns label="Event" name="event"/> + <columns label="Erlebnis" name="experience_name"/> + <columns label="Objekt" name="object_name"/> + </scroll_list> + <button label="Benachrichtigen" name="btn_notify"/> + <button label="Profil" name="btn_profile_xp"/> + <button label="Melden" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Alle Events benachrichtigen Tage" name="notify_all"/> + <button label="Entfernen" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_experience_search.xml b/indra/newview/skins/default/xui/de/panel_experience_search.xml new file mode 100644 index 0000000000..e556335213 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + „[TEXT]“ nicht gefunden + </string> + <string name="no_results"> + Keine Ergebnisse + </string> + <string name="searching"> + Suchen... + </string> + <string name="loading"> + Laden... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Los" name="find"/> + <icons_combo_box label="Moderat" name="maturity"> + <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="Moderat" name="Mature" value="21"/> + <icons_combo_box.item label="Allgemein" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Name" name="experience_name"/> + <columns label="Eigentümer" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn"/> + <button label="Profil anzeigen" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_experiences.xml b/indra/newview/skins/default/xui/de/panel_experiences.xml new file mode 100644 index 0000000000..6c1630d973 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Erlebnisse werden geladen..."/> + <string name="no_experiences" value="Keine Erlebnisse."/> + <string name="acquire" value="Erlebnis erwerben"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_facebook_friends.xml b/indra/newview/skins/default/xui/de/panel_facebook_friends.xml index 9712d681c7..f6a8fda23e 100644 --- a/indra/newview/skins/default/xui/de/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/de/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Sie haben gegenwärtig keine Facebook-Freunde, die gleichzeitig Einwohner von Second Life sind. Laden Sie Ihre Facebook-Freunde ein, Second Life beizutreten!"/> - <string name="facebook_friends_no_connected" value="Sie sind gegenwärtig nicht mit Facebook verbunden. Um eine Verbindung herzustellen und diese Funktion zu aktivieren, gehen Sie zur Registerkarte „Konto“."/> + <string name="facebook_friends_no_connected" value="Sie sind gegenwärtig nicht mit Facebook verbunden. Um eine Verbindung herzustellen und diese Funktion zu aktivieren, gehen Sie zur Registerkarte „Status“."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="SL-Freunde"/> <accordion_tab name="tab_suggested_friends" title="Diese Personen als SL-Freunde hinzufügen"/> diff --git a/indra/newview/skins/default/xui/de/panel_facebook_photo.xml b/indra/newview/skins/default/xui/de/panel_facebook_photo.xml index a1aabcd29c..bc48931129 100644 --- a/indra/newview/skins/default/xui/de/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/de/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Bildfilter"> - <combo_box.item label="Kein Filter" name="NoFilter"/> - </combo_box> - <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> - <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> - <text name="caption_label"> - Kommentar (optional): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Posten" name="post_photo_btn"/> - <button label="Abbrechen" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Bildfilter"> + <combo_box.item label="Kein Filter" name="NoFilter"/> + </combo_box> + <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> + <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> + <text name="caption_label"> + Kommentar (optional): + </text> + <button label="Posten" name="post_photo_btn"/> + <button label="Abbrechen" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_facebook_place.xml b/indra/newview/skins/default/xui/de/panel_facebook_place.xml index 0f556565b4..102be80502 100644 --- a/indra/newview/skins/default/xui/de/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/de/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Details zu Ihrem aktuellen Standort: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Posten" name="post_place_btn"/> - <button label="Abbrechen" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Details zu Ihrem aktuellen Standort: + </text> + <check_box initial_value="false" label="Draufsicht des Standorts einschließen" name="add_place_view_cb"/> + <button label="Posten" name="post_place_btn"/> + <button label="Abbrechen" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_facebook_status.xml b/indra/newview/skins/default/xui/de/panel_facebook_status.xml index 437243c360..23c9d3b75f 100644 --- a/indra/newview/skins/default/xui/de/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/de/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - Was machst du gerade? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Posten" name="post_status_btn"/> - <button label="Abbrechen" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Sie sind mit Facebook verbunden als:"/> + <string name="facebook_disconnected" value="Nicht mit Facebook verbunden"/> + <text name="account_caption_label"> + Nicht mit Facebook verbunden. + </text> + <panel name="panel_buttons"> + <button label="Verbinden..." name="connect_btn"/> + <button label="Trennen" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Anweisungen zum Posten auf Facebook] + </text> + </panel> + <text name="status_caption_label"> + Was machst du gerade? + </text> + <button label="Posten" name="post_status_btn"/> + <button label="Abbrechen" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_flickr_photo.xml b/indra/newview/skins/default/xui/de/panel_flickr_photo.xml index 1627f405c5..38b5302fef 100644 --- a/indra/newview/skins/default/xui/de/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/de/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Bildfilter"> - <combo_box.item label="Kein Filter" name="NoFilter"/> - </combo_box> - <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> - <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> - <text name="title_label"> - Titel: - </text> - <text name="description_label"> - Beschreibung: - </text> - <check_box initial_value="true" label="SL-Standort am Ende der Beschreibung hinzufügen" name="add_location_cb"/> - <text name="tags_label"> - Markierungen: - </text> - <text name="tags_help_label"> - Markierungen durch Leerzeichen trennen. + <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Bildfilter"> + <combo_box.item label="Kein Filter" name="NoFilter"/> + </combo_box> + <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> + <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> + <text name="title_label"> + Titel: + </text> + <text name="description_label"> + Beschreibung: + </text> + <check_box initial_value="true" label="SL-Standort am Ende der Beschreibung hinzufügen" name="add_location_cb"/> + <text name="tags_label"> + Markierungen: + </text> + <text name="tags_help_label"> + Markierungen durch Leerzeichen trennen. Für Markierungen, die aus mehreren Wörtern bestehen, "" verwenden. - </text> - <combo_box name="rating_combobox" tool_tip="Flickr-Inhaltseinstufung"> - <combo_box.item label="Sichere Flickr-Einstufung" name="SafeRating"/> - <combo_box.item label="Moderate Flickr-Einstufung" name="ModerateRating"/> - <combo_box.item label="Beschränkte Flickr-Einstufung" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Hochladen" name="post_photo_btn"/> - <button label="Abbrechen" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Flickr-Inhaltseinstufung"> + <combo_box.item label="Sichere Flickr-Einstufung" name="SafeRating"/> + <combo_box.item label="Moderate Flickr-Einstufung" name="ModerateRating"/> + <combo_box.item label="Beschränkte Flickr-Einstufung" name="RestrictedRating"/> + </combo_box> + <button label="Hochladen" name="post_photo_btn"/> + <button label="Abbrechen" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml index 9cb72fafff..9cb72fafff 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml index 9d4301de73..9d4301de73 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_general.xml +++ b/indra/newview/skins/default/xui/de/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml index 1775394ecd..92c2a4b83a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Rollen und Mitglieder"/> <accordion_tab name="group_notices_tab" title="Mitteilungen"/> <accordion_tab name="group_land_tab" title="Land/Kapital"/> + <accordion_tab name="group_experiences_tab" title="Erlebnisse"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index d67eaa662c..d67eaa662c 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml index d9d237be2e..d9d237be2e 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml index fc911a64df..fc911a64df 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml index df423cc69a..df423cc69a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_notify.xml b/indra/newview/skins/default/xui/de/panel_group_notify.xml index 9c05e99786..9c05e99786 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml index 2f3268164c..2f3268164c 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml index abf8011d9d..abf8011d9d 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/de/panel_instant_message.xml b/indra/newview/skins/default/xui/de/panel_instant_message.xml index 372def78ca..372def78ca 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/de/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/de/panel_inventory_item.xml b/indra/newview/skins/default/xui/de/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/de/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_landmark_info.xml b/indra/newview/skins/default/xui/de/panel_landmark_info.xml index 10cf34c170..10cf34c170 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/de/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/de/panel_landmarks.xml b/indra/newview/skins/default/xui/de/panel_landmarks.xml index c1f8a20728..c1f8a20728 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/de/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 816f22178c..32c9598edf 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=de - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=de</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Benutzername" name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/> <line_editor label="Kennwort" name="password_edit"/> - <check_box label="Details speichern" name="remember_check"/> - <text name="forgot_password_text"> - Kennwort vergessen - </text> - <button label="Anmelden" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - bei letztem Ort - </text> <combo_box label="Meine Lieblingsorte" name="start_location_combo"> + <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> <combo_box.item label="Mein Zuhause" name="MyHome"/> </combo_box> - <button label="Anmelden" name="connect_favorite_btn"/> - <line_editor label="Ort eingeben" name="location_edit"/> - <button label="Anmelden" name="connect_location_btn"/> + <button label="Anmelden" name="connect_btn"/> + <check_box label="Details speichern" name="remember_check"/> + <text name="forgot_password_text">Kennwort vergessen</text> <combo_box label="Grid auswählen" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml index 2f00782ef0..2f00782ef0 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml new file mode 100644 index 0000000000..bc9065e185 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marktplatz" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Anzeige-/Sortieroptionen"/> + <button name="add_btn" tool_tip="Neuen Auflistungsordner erstellen"/> + <button label="Auf Fehler prüfen" name="audit_btn" tool_tip="Marktplatz-Auflistungen überprüfen"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Marktplatz-Auflistungen filtern" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..becf79b0a2 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ALLE" name="All Items" tool_tip="Objekte zum Auflisten hier ablegen"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..63c4f34bad --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="AUFGELISTET" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..26908c3e25 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NICHT VERKNÜPFT" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..00ea1e6fe7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NICHT AUFGELISTET" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml index f49446fbbf..f49446fbbf 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_me.xml +++ b/indra/newview/skins/default/xui/de/panel_me.xml diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml index 75c9057571..75c9057571 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml index dd408b8275..dd408b8275 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml index adc0d22ce6..adc0d22ce6 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml index 53794b6619..53794b6619 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml index 07ad761791..07ad761791 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml index 69cf6d98de..69cf6d98de 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml index 90885c7192..90885c7192 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/de/panel_nearby_media.xml 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 35bd76ce70..35bd76ce70 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml diff --git a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml index da672a0309..da672a0309 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/de/panel_online_status_toast.xml b/indra/newview/skins/default/xui/de/panel_online_status_toast.xml index 7c7448c061..7c7448c061 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/de/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml index 4006022ffc..4006022ffc 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml index 1af0492aa1..1af0492aa1 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml index d5158b2d97..d5158b2d97 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml index ad0e039070..ad0e039070 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/de/panel_outfits_list.xml b/indra/newview/skins/default/xui/de/panel_outfits_list.xml index ea3a938be9..ea3a938be9 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml index 27141796a8..27141796a8 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 2d56d6b7d2..2d56d6b7d2 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml diff --git a/indra/newview/skins/default/xui/de/panel_pick_info.xml b/indra/newview/skins/default/xui/de/panel_pick_info.xml index f215c43a3d..f215c43a3d 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/de/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml index 6aaa3151a8..6aaa3151a8 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_picks.xml +++ b/indra/newview/skins/default/xui/de/panel_picks.xml diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml index 4077fdab36..4077fdab36 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index 602ffff94d..602ffff94d 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml diff --git a/indra/newview/skins/default/xui/de/panel_postcard_message.xml b/indra/newview/skins/default/xui/de/panel_postcard_message.xml index b34dc776de..b34dc776de 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/de/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml index e6d3b7de66..93b4121db5 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml @@ -9,7 +9,7 @@ </combo_box> <spinner label="Breite x Höhe" name="postcard_snapshot_width"/> <check_box label="Seitenverhältnis beibehalten" name="postcard_keep_aspect_check"/> - <slider label="Qualität" name="image_quality_slider"/> + <slider label="Qualität:" name="image_quality_slider"/> <text name="image_quality_level"> ([QLVL]) </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml index 60e4fb19a7..60e4fb19a7 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml index fcb45e26be..fcb45e26be 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index 8eb815fd1b..8eb815fd1b 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml index 19c5efcb05..19c5efcb05 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml index 2587ea0ced..2587ea0ced 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index f3746a7c82..f3746a7c82 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_move.xml b/indra/newview/skins/default/xui/de/panel_preferences_move.xml index 3e248f0bf0..3e248f0bf0 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml index 7ac6708321..7ac6708321 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index 24e5033bfc..e6c90f21d1 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="Meinen Browser verwenden (IE, Firefox, Safari)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen." value="true"/> - <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Integrierten Webbrowser verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Dieser Browser öffnet als neues Fenster innerhalb von [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Meinen Browser (Chrome, Firefox, IE) für alle Links verwenden" name="internal" tool_tip="Standard-Browser für Hilfe, Weblinks usw. verwenden. Im Vollbildmodus nicht empfohlen." value="0"/> + <radio_item label="Integrierten Browser nur für Linden Lab-/Second Life-Links verwenden" name="external" tool_tip="Verwenden Sie den Standard-Webbrowser Ihres Systems für Hilfe, Weblinks usw. Der integrierte Browser wird nur für Linden Lab-/Second Life-Links verwendet." value="1"/> </radio_group> <check_box initial_value="true" label="Plugins aktivieren" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Cookies annehmen" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 1e6a03c99f..1e6a03c99f 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml 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 c85f2762b1..c85f2762b1 100755..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 diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml index 225c98b84f..225c98b84f 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/de/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml index d4b0ed907e..d4b0ed907e 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/de/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/de/panel_region_environment.xml b/indra/newview/skins/default/xui/de/panel_region_environment.xml index daadd30f62..daadd30f62 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/de/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml index b087451391..b087451391 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/de/panel_region_experiences.xml b/indra/newview/skins/default/xui/de/panel_region_experiences.xml new file mode 100644 index 0000000000..6e193aba19 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Erlebnisse" name="Experiences"> + <panel.string name="trusted_estate_text"> + Jedes Erlebnis kann ein Schlüsselerlebnis sein. + +Schlüsselerlebnisse können in diesem Grundbesitz ausgeführt werden. + +Wenn der Grundbesitz keinen öffentlichen Zugang gestattet, können Einwohner, die an einem Schlüsselerlebnis teilnehmen, den Grundbesitz betreten und sich dort aufhalten, solange sie an einem Schlüsselerlebnis beteiligt sind. + </panel.string> + <panel.string name="allowed_estate_text"> + Nur Erlebnisse mit Landumfang können zulässig sein. + +Zulässige Erlebnisse können in diesem Grundbesitz ausgeführt werden. + </panel.string> + <panel.string name="blocked_estate_text"> + Nur Erlebnisse mit Gridumfang können blockiert werden. + +Blockierte Erlebnisse können in diesem Grundbesitz nicht ausgeführt werden. + </panel.string> + <panel.string name="estate_caption"> + Änderungen wirken sich auf alle Regionen des Grundbesitzes aus. + </panel.string> + <panel.string name="allowed_parcel_text"> + Nur Erlebnisse mit Landumfang können zulässig sein. + +Zulässige Erlebnisse können in dieser Parzelle ausgeführt werden, sofern sie nicht vom Grundbesitz blockiert sind. + </panel.string> + <panel.string name="blocked_parcel_text"> + Jedes Einwohnererlebnis kann blockiert werden. + +Blockierte Erlebnisse können in dieser Parzelle nicht ausgeführt werden. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index 6324e90029..6324e90029 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/de/panel_region_terrain.xml b/indra/newview/skins/default/xui/de/panel_region_terrain.xml index 7801be30e4..7801be30e4 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/de/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/de/panel_script_ed.xml b/indra/newview/skins/default/xui/de/panel_script_ed.xml index 8975cd40f8..8975cd40f8 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/de/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/de/panel_script_experience.xml b/indra/newview/skins/default/xui/de/panel_script_experience.xml new file mode 100644 index 0000000000..192e661925 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="ERLEBNIS"> + <button label="Erlebnis" name="Expand Experience"/> + <check_box label="Verwendet Erlebnis" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Erlebnis auswählen..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Sie tragen zu keinen Erlebnissen bei. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml index c91eb98e9c..c91eb98e9c 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml index 8d7cc1bf9a..8d7cc1bf9a 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/de/panel_script_question_toast.xml b/indra/newview/skins/default/xui/de/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/de/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/de/panel_scrolling_param.xml b/indra/newview/skins/default/xui/de/panel_scrolling_param.xml index 50590b8d73..50590b8d73 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/de/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml index 652fb7c836..652fb7c836 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml index cf3080a4f9..cf3080a4f9 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml index d13f56ed3d..2b8c4e6cd1 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml @@ -3,18 +3,18 @@ <text name="title"> Inventar </text> - <text name="hint_lbl"> - Das Speichern eines Bilds in Ihrem Inventar kostet [UPLOAD_COST] L$. Um das Bild als Textur zu speichern, wählen Sie eines der quadratischen Formate aus. - </text> <combo_box label="Auflösung" name="texture_size_combo"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> <combo_box.item label="Klein (128x128)" name="Small(128x128)"/> <combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/> <combo_box.item label="Groß (512x512)" name="Large(512x512)"/> <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> <spinner label="Breite x Höhe" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Seitenverhältnis beibehalten" name="inventory_keep_aspect_check"/> + <text name="hint_lbl"> + Das Speichern eines Bilds in Ihrem Inventar kostet [UPLOAD_COST] L$. Um das Bild als Textur zu speichern, wählen Sie eines der quadratischen Formate aus. + </text> <button label="Abbrechen" name="cancel_btn"/> <button label="Speichern" name="save_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml index 53e78ba290..9182c14063 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Festplatte + Datenträger </text> <combo_box label="Auflösung" name="local_size_combo"> <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> @@ -15,15 +15,15 @@ </combo_box> <spinner label="Breite x Höhe" name="local_snapshot_width"/> <check_box label="Seitenverhältnis beibehalten" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Format: + </text> <combo_box label="Format" name="local_format_combo"> <combo_box.item label="PNG (verlustfrei)" name="PNG"/> <combo_box.item label="JPEG" name="JPEG"/> <combo_box.item label="BMP (verlustfrei)" name="BMP"/> </combo_box> - <slider label="Qualität" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> + <slider label="Qualität:" name="image_quality_slider"/> <button label="Abbrechen" name="cancel_btn"/> <flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern"> <flyout_button.item label="Speichern" name="save_item"/> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml index 7ec22adc4c..82e2b56f3f 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Ins Profil hochladen" name="save_to_profile_btn"/> + <button label="Auf Datenträger speichern" name="save_to_computer_btn"/> + <button label="In Inventar speichern ([AMOUNT] L$)" name="save_to_inventory_btn"/> + <button label="In Profil hochladen" name="save_to_profile_btn"/> + <button label="Auf Facebook hochladen" name="send_to_facebook_btn"/> + <button label="Auf Twitter hochladen" name="send_to_twitter_btn"/> + <button label="Auf Flickr hochladen" name="send_to_flickr_btn"/> <button label="Per E-Mail senden" name="save_to_email_btn"/> - <button label="Im Inventar speichern" name="save_to_inventory_btn"/> - <button label="Auf Festplatte speichern" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Senden an: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml index ead56f2885..3f5bbda724 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml @@ -13,9 +13,9 @@ E-Mail </text> <tab_container name="postcard_tabs"> - <panel name="panel_postcard_message" label="Nachricht"/> - <panel name="panel_postcard_settings" label="Einstellungen"/> + <panel label="Nachricht" name="panel_postcard_message"/> + <panel label="Einstellungen" name="panel_postcard_settings"/> </tab_container> - <button name="cancel_btn" label="Abbrechen"/> - <button name="send_btn" label="Absenden"/> + <button label="Abbrechen" name="cancel_btn"/> + <button label="Senden" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml index 0f21edd1b6..8c856b87a2 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml @@ -4,11 +4,11 @@ Profil </text> <combo_box label="Auflösung" name="profile_size_combo"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="Benutzerdefiniert" name="Custom"/> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> <spinner label="Breite x Höhe" name="profile_snapshot_width"/> <check_box label="Seitenverhältnis beibehalten" name="profile_keep_aspect_check"/> diff --git a/indra/newview/skins/default/xui/de/panel_sound_devices.xml b/indra/newview/skins/default/xui/de/panel_sound_devices.xml index b739b6197f..b739b6197f 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/de/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml index be21429007..be21429007 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml index 14ace0ac3a..d3d85de3c3 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Paketverlust - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bandbreite - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Paketverlust</panel.string> + <panel.string name="bandwidth_tooltip">Bandbreite</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-415" name="balance_bg" width="205"> - <text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="20 L$"/> + <text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="L$ ??"/> <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> <button label="Einkaufen" name="goShop" tool_tip="Second Life-Marktplatz öffnen" width="85"/> </panel> - <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> - 24:00 H PST - </text> + <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">24:00 H PST</text> <button name="media_toggle_btn" tool_tip="Alle Medien starten/stoppen (Musik, Video, Webseiten)"/> <button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_sys_well_item.xml b/indra/newview/skins/default/xui/de/panel_sys_well_item.xml index 504f1727e2..504f1727e2 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/de/panel_sys_well_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml index 4d721f2af6..4d721f2af6 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml index 5a402d02a1..5a402d02a1 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/de/panel_twitter_photo.xml b/indra/newview/skins/default/xui/de/panel_twitter_photo.xml index 89c4b98ffc..e637253983 100644 --- a/indra/newview/skins/default/xui/de/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/de/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Was ist los? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="SL-Standort hinzufügen" name="add_location_cb"/> - <check_box initial_value="true" label="Foto hinzufügen" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Bildfilter"> - <combo_box.item label="Kein Filter" name="NoFilter"/> - </combo_box> - <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> - <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Tweeten" name="post_photo_btn"/> - <button label="Abbrechen" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Was ist los? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="SL-Standort hinzufügen" name="add_location_cb"/> + <check_box initial_value="true" label="Foto hinzufügen" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Bildauflösung"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Bildfilter"> + <combo_box.item label="Kein Filter" name="NoFilter"/> + </combo_box> + <button label="Aktualisieren" name="new_snapshot_btn" tool_tip="Zum Aktualisieren klicken"/> + <button label="Vorschau" name="big_preview_btn" tool_tip="Klicken, um Vorschau ein-/auszuschalten"/> + <button label="Tweeten" name="post_photo_btn"/> + <button label="Abbrechen" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml index 533deb8597..533deb8597 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/de/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml index 3d43200e48..3d43200e48 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/de/panel_world_map.xml b/indra/newview/skins/default/xui/de/panel_world_map.xml index 35fe3d3ffc..35fe3d3ffc 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_world_map.xml +++ b/indra/newview/skins/default/xui/de/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml index d834fc57ca..e3fbe2a630 100755..100644 --- a/indra/newview/skins/default/xui/de/role_actions.xml +++ b/indra/newview/skins/default/xui/de/role_actions.xml @@ -71,4 +71,8 @@ <action description="Gruppen-Voice-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." name="join voice chat" value="27"/> <action description="Gruppen-Chat moderieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." name="moderate group chat" value="37"/> </action_set> + <action_set description="Diese Fähigkeiten enthalten die Berechtigung, die Erlebnisse zu ändern, die dieser Gruppe gehören." name="experience_tools_experience"> + <action description="Erlebnis-Administrator" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können die Metadaten für ein Erlebnis ändern." name="experience admin" value="49"/> + <action description="Erlebnis-Contributor" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Skripts für ein Erlebnis beitragen." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml index 7fb9b34e0a..7fb9b34e0a 100755..100644 --- a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index 94c3c75254..94c3c75254 100755..100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml index 1b67eaf03b..f7dc265cf4 100755..100644 --- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Objektprofil"> + <panel.string name="loading_experience"> + (laden) + </panel.string> <panel.string name="unknown"> (unbekannt) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Erworben: </text> + <text name="LabelItemExperienceTitle"> + Erlebnis: + </text> <panel name="perms_inv"> <text name="perm_modify"> Sie können: @@ -66,8 +72,9 @@ <check_box label="Übertragen" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> </panel> <check_box label="Zum Verkauf" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopieren" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopie" name="Copy"/> + <combo_box.item label="Inhalt" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preis: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml index 29239033fe..c30611c66c 100755..100644 --- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Objektprofil"> - <panel.string name="text deed continued"> - Übertragung - </panel.string> - <panel.string name="text deed"> - Übertragung - </panel.string> - <panel.string name="text modify info 1"> - Sie können dieses Objekt bearbeiten. - </panel.string> - <panel.string name="text modify info 2"> - Sie können diese Objekte bearbeiten. - </panel.string> - <panel.string name="text modify info 3"> - Sie können dieses Objekt nicht bearbeiten. - </panel.string> - <panel.string name="text modify info 4"> - Sie können diese Objekte nicht bearbeiten. - </panel.string> - <panel.string name="text modify info 5"> - Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden - </panel.string> - <panel.string name="text modify info 6"> - Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden - </panel.string> - <panel.string name="text modify warning"> - Diese Objekt verfügt über verknüpfte Teile - </panel.string> - <panel.string name="Cost Default"> - Preis: L$ - </panel.string> - <panel.string name="Cost Total"> - Summe: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Stückpreis: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mischpreis - </panel.string> - <panel.string name="Sale Mixed"> - Mischverkauf - </panel.string> + <panel.string name="text deed continued">Übertragung</panel.string> + <panel.string name="text deed">Übertragung</panel.string> + <panel.string name="text modify info 1">Sie können dieses Objekt bearbeiten.</panel.string> + <panel.string name="text modify info 2">Sie können diese Objekte bearbeiten.</panel.string> + <panel.string name="text modify info 3">Sie können dieses Objekt nicht bearbeiten.</panel.string> + <panel.string name="text modify info 4">Sie können diese Objekte nicht bearbeiten.</panel.string> + <panel.string name="text modify info 5">Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden</panel.string> + <panel.string name="text modify info 6">Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden</panel.string> + <panel.string name="text modify warning">Diese Objekt verfügt über verknüpfte Teile</panel.string> + <panel.string name="Cost Default">Preis: L$</panel.string> + <panel.string name="Cost Total">Summenpreis: L$</panel.string> + <panel.string name="Cost Per Unit">Stückpreis: L$</panel.string> + <panel.string name="Cost Mixed">Mischpreis</panel.string> + <panel.string name="Sale Mixed">Mischverkauf</panel.string> <text name="title" value="Objektprofil"/> <text name="where" value="(Inworld)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Name: - </text> - <text name="Description:"> - Beschreibung: - </text> - <text name="CreatorNameLabel"> - Ersteller: - </text> - <text name="Owner:"> - Eigentümer: - </text> - <text name="Group_label"> - Gruppe: - </text> + <text name="Name:">Name:</text> + <text name="Description:">Beschreibung:</text> + <text name="CreatorNameLabel">Ersteller:</text> + <text name="Owner:">Eigentümer:</text> + <text name="Group_label">Gruppe:</text> <button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/> <name_box initial_value="Wird geladen..." name="Group Name Proxy"/> <button label="Übertragung" label_selected="Übertragung" name="button deed" tool_tip="Eine Übertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/> - <text name="label click action"> - Bei Linksklick: - </text> + <text name="label click action">Bei Linksklick:</text> <combo_box name="clickaction"> <combo_box.item label="Berühren (Standard)" name="Touch/grab(default)"/> <combo_box.item label="Auf Objekt setzen" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoomen" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Sie können dieses Objekt bearbeiten. - </text> - <text name="Anyone can:"> - Jeder: - </text> + <text name="perm_modify">Sie können dieses Objekt bearbeiten.</text> + <text name="Anyone can:">Jeder:</text> <check_box label="Kopieren" name="checkbox allow everyone copy"/> <check_box label="Bewegen" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Gruppe: - </text> + <text name="GroupLabel">Gruppe:</text> <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern, teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> - <text name="NextOwnerLabel"> - Nächster Eigentümer: - </text> + <text name="NextOwnerLabel">Nächster Eigentümer:</text> <check_box label="Bearbeiten" name="checkbox next owner can modify"/> <check_box label="Kopieren" name="checkbox next owner can copy"/> <check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Preis: L$" name="Edit Cost"/> <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> - <text name="pathfinding_attributes_label"> - Pathfinding-Attribute: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Pathfinding-Attribute:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Öffnen" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index d4ce7b3fc3..8ff9a3969a 100755..100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -38,7 +38,7 @@ Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber. </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> @@ -449,30 +449,51 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="TooltipMustSingleDrop"> Sie können nur ein einzelnes Objekt hierher ziehen </string> + <string name="TooltipTooManyWearables"> + Sie können keinen Ordner tragen, der mehr als [AMOUNT] Elemente enthält. Sie können diesen Höchstwert unter „Erweitert“ > „Debug-Einstellungen anzeigen“ > „WearFolderLimit“ ändern. + </string> <string name="TooltipPrice" value="[AMOUNT] L$"/> <string name="TooltipOutboxDragToWorld"> - Sie können Artikel nicht in Ihrer Händler-Outbox rezzen + Sie können keine Objekte aus dem Marktplatz-Auflistungsordner rezzen + </string> + <string name="TooltipOutboxWorn"> + Sie können Objekte, die Sie tragen, nicht in den Marktplatz-Auflistungsordner stellen + </string> + <string name="TooltipOutboxFolderLevels"> + Tiefe der verschachtelten Ordner überschreitet [AMOUNT]. Reduzieren Sie die Ordnertiefe. Verpacken Sie ggf. einige Artikel. + </string> + <string name="TooltipOutboxTooManyFolders"> + Anzahl von Unterordnern überschreitet [AMOUNT]. Reduzieren Sie die Anzahl von Ordnern in Ihrer Auflistung. Verpacken Sie ggf. einige Artikel. + </string> + <string name="TooltipOutboxTooManyObjects"> + Anzahl von Objekten überschreitet [AMOUNT]. Um mehr als [AMOUNT] Objekte in einer Auflistung verkaufen zu können, müssen Sie einige davon verpacken. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Anzahl von Bestandsobjekten überschreitet [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Sie können Objekte oder Ordner nur in der Registerkarte „Alle“ ablegen. Wählen Sie diese Registerkarte aus und verschieben Sie Ihre Objekte bzw. Ordner noch einmal. </string> <string name="TooltipOutboxNoTransfer"> - Einer oder mehrere dieser Artikel können nicht verkauft oder übertragen werden. + Mindestens eines dieser Objekte kann nicht verkauft oder übertragen werden </string> <string name="TooltipOutboxNotInInventory"> - Nur Artikel direkt aus Ihrem Inventar können in Ihre Händler-Outbox gelegt werden + Sie können nur Objekte aus Ihrem Inventar in den Marktplatz einstellen </string> - <string name="TooltipOutboxWorn"> - Artikel, die Sie tragen, können nicht in Ihre Händler-Outbox gelegt werden. + <string name="TooltipOutboxLinked"> + Sie können keine verknüpften Objekte oder Ordner in den Marktplatz einstellen </string> <string name="TooltipOutboxCallingCard"> - Sie können keine Visitenkarten in Ihre Händler-Outbox legen + Sie können Visitenkarten nicht in den Marktplatz einstellen </string> - <string name="TooltipOutboxFolderLevels"> - Tiefe der verschachtelten Ordner überschreitet 3 + <string name="TooltipOutboxDragActive"> + Sie können keine gelistete Auflistung entfernen </string> - <string name="TooltipOutboxTooManyFolders"> - Anzahl von Unterordnern im obersten Ordner überschreitet 20 + <string name="TooltipOutboxCannotMoveRoot"> + Der Stammordner mit Marktplatz-Auflistungen kann nicht verschoben werden. </string> - <string name="TooltipOutboxTooManyObjects"> - Anzahl von Artikeln im obersten Ordner überschreitet 200 + <string name="TooltipOutboxMixedStock"> + Alle Objekte in einem Bestandsordner müssen vom gleichen Typ sein und die gleiche Berechtigung haben </string> <string name="TooltipDragOntoOwnChild"> Sie können einen Ordner nicht in einen seiner untergeordneten Ordner verschieben @@ -1060,9 +1081,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="AgentNameSubst"> (Sie) </string> - <string name="JoinAnExperience"> - Bei einem Erlebnis mitmachen - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Beim Verwalten von Grundbesitzzugangslisten Warnhinweise unterdrücken </string> @@ -1129,6 +1148,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="bitmap_image_files"> Bitmap-Bilder </string> + <string name="png_image_files"> + PNG-Bilder + </string> + <string name="save_texture_image_files"> + Targa- oder PNG-Bilder + </string> <string name="avi_movie_file"> AVI-Filmdatei </string> @@ -1378,6 +1403,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="FavoritesNoMatchingItems"> Landmarke hier hin ziehen, um diese hinzuzufügen. </string> + <string name="MarketplaceNoMatchingItems"> + Keine übereinstimmenden Objekte gefunden. Überprüfen Sie die Schreibweise des Suchbegriffs und versuchen Sie es noch einmal. + </string> <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> @@ -1425,29 +1453,95 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InventoryOutboxError"> Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück. </string> + <string name="InventoryMarketplaceError"> + Diese Funktion befindet sich in der Betaphase. Wenn Sie teilnehmen möchten, tragen Sie sich in dieses [http://goo.gl/forms/FCQ7UXkakz Google-Formular] ein. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Ihr Ordner mit Marktplatz-Auflistungen ist leer. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Ziehen Sie Ordner in diesen Bereich, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten. + </string> + <string name="Marketplace Validation Warning Stock"> + Bestandsordner müssen in einem Versionsordner gespeichert sein + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Fehler: Alle Objekte in einem Bestandsordner müssen kopiergeschützt und vom gleichen Typ sein. + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Fehler: Bestandsordner kann keine Unterordner enthalten + </string> + <string name="Marketplace Validation Warning Empty"> + : Warnung: Ordner enthält keine Objekte + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Warnung: Bestandsordner wird erstellt + </string> + <string name="Marketplace Validation Warning Create Version"> + : Warnung: Versionsordner wird erstellt + </string> + <string name="Marketplace Validation Warning Move"> + : Warnung: Objekte werden verschoben + </string> + <string name="Marketplace Validation Warning Delete"> + : Warnung: Ordnerinhalte wurden in Bestandsordner übertragen; leerer Ordner wird entfernt + </string> + <string name="Marketplace Validation Error Stock Item"> + : Fehler: Kopiergeschützte Objekte müssen in einem Bestandsordner gespeichert sein + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Warnung: Objekte müssen in einem Versionsordner gespeichert sein + </string> + <string name="Marketplace Validation Error"> + : Fehler: + </string> + <string name="Marketplace Validation Warning"> + : Warnung: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Warnung: Versionsordner muss mindestens 1 Objekt enthalten + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Warnung: Bestandsordner muss mindestens 1 Objekt enthalten + </string> + <string name="Marketplace Validation No Error"> + Keine Fehler oder Warnungen + </string> <string name="Marketplace Error None"> Keine Fehler </string> + <string name="Marketplace Error Prefix"> + Fehler: + </string> <string name="Marketplace Error Not Merchant"> - Fehler: Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos). + Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos). </string> - <string name="Marketplace Error Empty Folder"> - Fehler: Dieser Ordner ist leer. + <string name="Marketplace Error Not Accepted"> + Objekt kann nicht in diesen Ordner verschoben werden. </string> - <string name="Marketplace Error Unassociated Products"> - Fehler: Dieser Artikel konnte nicht hochgeladen werden, da in Ihrem Händlerkonto zu viele Artikel nicht mit Produkten verknüpft sind. Um diesen Fehler zu beheben, melden Sie sich auf der Marktplatz-Website an und reduzieren Sie die Anzahl von Artikeln, die nicht mit Produkten verknüpft sind. + <string name="Marketplace Error Unsellable Item"> + Dieses Objekt kann nicht im Marktplatz verkauft werden. </string> - <string name="Marketplace Error Object Limit"> - Fehler: Dieser Artikel enthält zu viele Objekte. Beheben Sie diesen Fehler, indem Sie Objekte zusammen in Behältern verpacken, um die Objektanzahl auf unter 200 zu verringern. + <string name="MarketplaceNoID"> + keine Mkt-ID </string> - <string name="Marketplace Error Folder Depth"> - Fehler: Dieser Artikel enthält zu viele verschachtelte Ordnerebenen. Organisieren Sie ihn neu, sodass maximal drei verschachtelte Ordnerebenen vorhanden sind. + <string name="MarketplaceLive"> + aufgelistet </string> - <string name="Marketplace Error Unsellable Item"> - Fehler: Dieser Artikel kann nicht im Marktplatz verkauft werden. + <string name="MarketplaceActive"> + aktiv </string> - <string name="Marketplace Error Internal Import"> - Fehler: Bei diesem Artikel ist ein Problem aufgetreten. Versuchen Sie es später erneut. + <string name="MarketplaceMax"> + max. + </string> + <string name="MarketplaceStock"> + Bestand + </string> + <string name="MarketplaceNoStock"> + ausverkauft + </string> + <string name="MarketplaceUpdating"> + Aktualisierung läuft... </string> <string name="Open landmarks"> Landmarken öffnen @@ -1468,6 +1562,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. Keine Inhalte </string> <string name="WornOnAttachmentPoint" value=" (getragen am [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (aktiviert)"/> <string name="PermYes"> Ja @@ -1738,6 +1833,15 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="Invalid Attachment"> Ungültige Stelle für Anhang </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Fehler: fehlendes Objekt + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Fehler: Basisobjekt fehlt + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Fehler: Objekt ist im aktuellen Outfit, aber nicht angehängt + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] alt </string> @@ -1906,6 +2010,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="SaveComplete"> Speichervorgang abgeschlossen. </string> + <string name="UploadFailed"> + Datei-Upload fehlgeschlagen: + </string> <string name="ObjectOutOfRange"> Skript (Objekt außerhalb des Bereichs) </string> @@ -1915,6 +2022,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="GroupsNone"> keine </string> + <string name="CompileNoExperiencePerm"> + Skript „[SCRIPT]“ mit Erlebnis „[EXPERIENCE]“ wird übersprungen. + </string> <string name="Group" value=" (Gruppe)"/> <string name="Unknown"> (unbekannt) @@ -5066,6 +5176,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Marketplace_Label"> Marktplatz </string> + <string name="Command_MarketplaceListings_Label"> + Marktplatz + </string> <string name="Command_MiniMap_Label"> Minikarte </string> @@ -5153,6 +5266,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Marketplace_Tooltip"> Einkaufen gehen </string> + <string name="Command_MarketplaceListings_Tooltip"> + Ihre Kreation verkaufen + </string> <string name="Command_MiniMap_Tooltip"> Leute in der Nähe anzeigen </string> @@ -5276,4 +5392,85 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="loading_chat_logs"> Laden... </string> + <string name="experience_tools_experience"> + Erlebnis + </string> + <string name="ExperienceNameNull"> + (kein Erlebnis) + </string> + <string name="ExperienceNameUntitled"> + (unbenanntes Erlebnis) + </string> + <string name="Land-Scope"> + Landumfang + </string> + <string name="Grid-Scope"> + Gridumfang + </string> + <string name="Allowed_Experiences_Tab"> + ZULÄSSIG + </string> + <string name="Blocked_Experiences_Tab"> + BLOCKIERT + </string> + <string name="Contrib_Experiences_Tab"> + CONTRIBUTOR + </string> + <string name="Admin_Experiences_Tab"> + ADMIN + </string> + <string name="Recent_Experiences_Tab"> + AKTUELL + </string> + <string name="Owned_Experiences_Tab"> + EIGENE + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], max. [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + Ihre Steuerungen übernehmen + </string> + <string name="ExperiencePermission3"> + Animationen Ihres Avatars auslösen + </string> + <string name="ExperiencePermission4"> + an Ihren Avatar anhängen + </string> + <string name="ExperiencePermission9"> + Ihre Kamera vorfolgen + </string> + <string name="ExperiencePermission10"> + Ihre Kamera steuern + </string> + <string name="ExperiencePermission11"> + Sie teleportieren + </string> + <string name="ExperiencePermission12"> + automatisch Erlebnisberechtigungen akzeptieren + </string> + <string name="ExperiencePermissionShortUnknown"> + unbekannten Vorgang durchführen: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Steuerungen übernehmen + </string> + <string name="ExperiencePermissionShort3"> + Animationen auslösen + </string> + <string name="ExperiencePermissionShort4"> + Anhängen + </string> + <string name="ExperiencePermissionShort9"> + Kamera verfolgen + </string> + <string name="ExperiencePermissionShort10"> + Kamera steuern + </string> + <string name="ExperiencePermissionShort11"> + Teleportieren + </string> + <string name="ExperiencePermissionShort12"> + Berechtigung + </string> </strings> diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml index 8062633df6..e590db0dba 100755..100644 --- a/indra/newview/skins/default/xui/de/teleport_strings.xml +++ b/indra/newview/skins/default/xui/de/teleport_strings.xml @@ -49,6 +49,9 @@ Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in e <message name="MustGetAgeRegion"> Sie müssen mindestens 18 Jahre alt sein, um diese Region betreten zu können. </message> + <message name="RegionTPSpecialUsageBlocked"> + Betreten der Region nicht gestattet. „[REGION_NAME]“ ist eine Region für Geschicklichkeitsspiele. Der Zutritt ist Einwohnern vorbehalten, die bestimmte Kriterien erfüllen. Weitere Details finden Sie unter [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/de/xui_version.xml b/indra/newview/skins/default/xui/de/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/de/xui_version.xml +++ b/indra/newview/skins/default/xui/de/xui_version.xml diff --git a/indra/newview/skins/default/xui/en/accordion_drag.xml b/indra/newview/skins/default/xui/en/accordion_drag.xml index e8a705e744..e8a705e744 100755..100644 --- a/indra/newview/skins/default/xui/en/accordion_drag.xml +++ b/indra/newview/skins/default/xui/en/accordion_drag.xml diff --git a/indra/newview/skins/default/xui/en/accordion_parent.xml b/indra/newview/skins/default/xui/en/accordion_parent.xml index e17a0dd351..e17a0dd351 100755..100644 --- a/indra/newview/skins/default/xui/en/accordion_parent.xml +++ b/indra/newview/skins/default/xui/en/accordion_parent.xml diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml index a60e9afab1..a60e9afab1 100755..100644 --- a/indra/newview/skins/default/xui/en/alert_button.xml +++ b/indra/newview/skins/default/xui/en/alert_button.xml 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 5535a5dc2a..5535a5dc2a 100755..100644 --- a/indra/newview/skins/default/xui/en/alert_check_box.xml +++ b/indra/newview/skins/default/xui/en/alert_check_box.xml diff --git a/indra/newview/skins/default/xui/en/alert_icon.xml b/indra/newview/skins/default/xui/en/alert_icon.xml index b0886fce06..b0886fce06 100755..100644 --- a/indra/newview/skins/default/xui/en/alert_icon.xml +++ b/indra/newview/skins/default/xui/en/alert_icon.xml diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml index 54dbc698c8..54dbc698c8 100755..100644 --- a/indra/newview/skins/default/xui/en/alert_line_editor.xml +++ b/indra/newview/skins/default/xui/en/alert_line_editor.xml 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 e7dd62eb64..e7dd62eb64 100755..100644 --- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml +++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index d11373ce1d..d11373ce1d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 60f36770bb..ec87b3684e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -43,6 +43,14 @@ top_pad="5" height="25" width="180" /> + <button + follows="left|top" + label="Check for updates" + name="update_btn" + left_pad="70" + top_delta="0" + height="25" + width="180" /> </panel> <panel border="true" diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index a660e812cc..384ae6bb1e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -2,13 +2,13 @@ <floater positioning="cascading" can_tear_off="false" - height="420" + height="396" layout="topleft" name="floaterland" help_topic="floaterland" save_rect="true" title="ABOUT LAND" - width="490"> + width="634"> <floater.string name="maturity_icon_general"> "Parcel_PG_Dark" @@ -23,15 +23,15 @@ </floater.string> <floater.string name="Minutes"> - [MINUTES] minutes + [MINUTES] min. </floater.string> <floater.string name="Minute"> - minute + min. </floater.string> <floater.string name="Seconds"> - [SECONDS] seconds + [SECONDS] sec. </floater.string> <floater.string name="Remaining"> @@ -39,17 +39,18 @@ </floater.string> <tab_container follows="all" - height="410" + halign="left" + height="386" layout="topleft" left="0" name="landtab" - tab_position="top" - tab_height="25" - tab_min_width="67" - top="10" - width="489"> + tab_position="left" + tab_width="140" + tab_padding_right="3" + top="6" + width="633"> <panel - border="false" + border="true" follows="all" label="GENERAL" layout="topleft" @@ -145,7 +146,7 @@ Description: </text> <text_editor - follows="left|top|right" + follows="left|top" height="52" layout="topleft" left_pad="2" @@ -281,7 +282,7 @@ label="Set" layout="topleft" left_pad="4" - right="-10" + right="-154" name="Set..." width="90" top_delta="-2"/> @@ -302,7 +303,7 @@ label="Deed" layout="topleft" left_pad="2" - right="-10" + right="-154" name="Deed..." tool_tip="You may only deed land if you are an officer in the selected group." top_delta="-2" @@ -365,7 +366,7 @@ label="Sell Land" layout="topleft" left_pad="5" - right="-10" + right="-154" name="Sell Land..." width="145" top_delta="-25"/> @@ -412,7 +413,7 @@ label="Cancel Land Sale" label_selected="Cancel Land Sale" layout="topleft" - right="-10" + right="-154" name="Cancel Land Sale" left_pad="5" top_pad="7" @@ -527,7 +528,7 @@ height="23" label="Buy For Group" layout="topleft" - right="-10" + right="-154" name="Buy For Group..." top_delta="0" width="180" /> @@ -547,7 +548,7 @@ height="23" label="Abandon Land" layout="topleft" - right="-10" + right="-154" name="Abandon Land..." top_pad="-47" width="180" /> @@ -645,8 +646,8 @@ type="string" length="1" enabled="false" - follows="all" - height="200" + follows="top|left" + height="175" layout="topleft" left="10" max_length="65535" @@ -663,7 +664,7 @@ halign="right" layout="topleft" right="-10" - top_pad="0" + top_pad="25" mouse_opaque="false" name="covenant_timestamp_text" width="460"> @@ -930,7 +931,7 @@ label_selected="Show" layout="topleft" name="ShowOwner" - right="-140" + right="-284" width="60" top_delta="-6"/> <button @@ -941,7 +942,7 @@ label="Return" layout="topleft" name="ReturnOwner..." - right="-10" + right="-154" tool_tip="Return objects to their owners." width="119" top_delta="0"/> @@ -978,7 +979,7 @@ label_selected="Show" layout="topleft" name="ShowGroup" - right="-140" + right="-284" width="60" top_delta="-6"/> <button @@ -989,7 +990,7 @@ label="Return" layout="topleft" name="ReturnGroup..." - right="-10" + right="-154" tool_tip="Return objects to their owners." width="119" top_delta="0"/> @@ -1026,7 +1027,7 @@ label_selected="Show" layout="topleft" name="ShowOther" - right="-140" + right="-284" width="60" top_delta="-6"/> <button @@ -1037,7 +1038,7 @@ label="Return" layout="topleft" name="ReturnOther..." - right="-10" + right="-154" tool_tip="Return objects to their owners." width="119" top_delta="0"/> @@ -1122,13 +1123,13 @@ left_pad="6" name="Return objects..." top_delta="0" - right="-10" + right="-154" width="164" /> <name_list column_padding="0" draw_heading="true" - follows="all" - height="180" + follows="top|left" + height="150" layout="topleft" left="10" name="owner list" @@ -1321,8 +1322,8 @@ Only large parcels can be listed in search. <panel bevel_style="none" border="true" - top="146" - bottom="146" + top="121" + bottom="121" follows="left|bottom|right" left="20" right="-20"/> @@ -1357,7 +1358,7 @@ Only large parcels can be listed in search. enabled="true" height="23" layout="topleft" - left="20" + left="164" top="194" name="land category" visible="true" @@ -1494,7 +1495,7 @@ Only large parcels can be listed in search. label_selected="Set" layout="topleft" name="Set" - left="255" + left="399" tool_tip="Sets the landing point where visitors arrive. Sets to your avatar's location inside this parcel." width="50" /> <button @@ -1525,6 +1526,7 @@ Only large parcels can be listed in search. layout="topleft" name="landing type" top_pad="0" + left="399" tool_tip="Teleport Routing -- select how to handle teleports onto your land" width="120"> <combo_box.item @@ -1568,7 +1570,7 @@ Only large parcels can be listed in search. <combo_box height="23" layout="topleft" - left_pad="0" + left_pad="144" name="media type" tool_tip="Specify if the URL is a movie, web page, or other media" width="120" @@ -1577,7 +1579,7 @@ Only large parcels can be listed in search. follows="left|top" height="16" layout="topleft" - left_pad="10" + left_pad="-134" name="mime_type" width="200" /> <text @@ -1607,7 +1609,7 @@ Only large parcels can be listed in search. height="23" label="Set" layout="topleft" - left_pad="5" + left_pad="149" name="set_media_url" width="70" top_delta="0"/> @@ -1952,7 +1954,7 @@ Only large parcels can be listed in search. <combo_box height="23" layout="topleft" - left_pad="22" + left_pad="166" name="pass_combo" top_delta="0" width="100"> @@ -2013,7 +2015,7 @@ Only large parcels can be listed in search. name="AllowedText" top="0" width="230"> - Allowed Residents + Allowed Residents ([COUNT]) </text> <name_list column_padding="0" @@ -2050,7 +2052,7 @@ Only large parcels can be listed in search. follows="top|right" height="170" width="240" - left_pad="2"> + left_pad="146"> <text type="string" length="1" @@ -2062,7 +2064,7 @@ Only large parcels can be listed in search. name="BanCheck" top="0" width="200"> - Banned Residents + Banned Residents ([COUNT]) </text> <name_list column_padding="0" @@ -2096,5 +2098,17 @@ Only large parcels can be listed in search. width="100" /> </panel> </panel> + <panel + border="true" + follows="all" + label="EXPERIENCES" + layout="topleft" + left="0" + top="0" + help_topic="land_experiences_tab" + name="land_experiences_panel" + class="land_experiences_panel" + filename="panel_region_experiences.xml"> + </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml index b79c5d9a19..b79c5d9a19 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_activeim.xml +++ b/indra/newview/skins/default/xui/en/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml index b5538a511c..b5538a511c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml index cb6b2f6ebc..cb6b2f6ebc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_associate_listing.xml b/indra/newview/skins/default/xui/en/floater_associate_listing.xml new file mode 100644 index 0000000000..e019ed58dd --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_associate_listing.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_minimize="false" + height="110" + layout="topleft" + name="associate listing" + help_topic="associate_listing" + title="ASSOCIATE LISTING" + width="375"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifLarge" + height="16" + layout="topleft" + left="10" + top="25" + name="message"> + Listing ID: + </text> + <line_editor + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="listing_id" + top_pad="5" + width="350"> + Type ID here + </line_editor> + <button + follows="bottom|left" + height="23" + label="OK" + layout="topleft" + left="155" + name="OK" + top_pad="10" + width="100" /> + <button + follows="bottom|right" + height="23" + label="Cancel" + layout="topleft" + left_pad="5" + name="Cancel" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml index 9c6d114c4c..9c6d114c4c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_auction.xml +++ b/indra/newview/skins/default/xui/en/floater_auction.xml diff --git a/indra/newview/skins/default/xui/en/floater_autoreplace.xml b/indra/newview/skins/default/xui/en/floater_autoreplace.xml index 0bfefc8abe..0bfefc8abe 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/en/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml index cd5cca02bd..cd5cca02bd 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_avatar.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index 1a55dc2e2c..1a55dc2e2c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml index bac3ea86f1..bac3ea86f1 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index 3d29356b22..3d29356b22 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_beacons.xml +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml index 38428b36fc..38428b36fc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_build_options.xml +++ b/indra/newview/skins/default/xui/en/floater_build_options.xml 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 e7ab3cacdc..e7ab3cacdc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml index 1f2fe62b3c..126e3aac48 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_bumps.xml +++ b/indra/newview/skins/default/xui/en/floater_bumps.xml @@ -7,7 +7,7 @@ help_topic="floater_bumps" save_rect="true" title="BUMPS, PUSHES & HITS" - width="400"> + width="420"> <floater.string name="none_detected"> None detected @@ -34,7 +34,7 @@ </floater.string> <floater.string name="timeStr"> - [[hour,datetime,slt]:[min,datetime,slt]] + [[hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]] </floater.string> <scroll_list draw_border="false" @@ -45,5 +45,5 @@ multi_select="true" name="bump_list" top="20" - width="388" /> + width="408" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml index ac96a70805..ac96a70805 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 553c5d51d0..553c5d51d0 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml 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 0637eedfb2..0637eedfb2 100755..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 diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml index 22cc058e46..22cc058e46 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml index 49be4290c7..49be4290c7 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 521389d7b3..521389d7b3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml index 2cf6e682fd..2cf6e682fd 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/en/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index e06d10606a..e06d10606a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml index 19a4cbc119..19a4cbc119 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_conversation_log.xml +++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml index 99ad59a7a3..99ad59a7a3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml index 143bcb4430..143bcb4430 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_critical.xml +++ b/indra/newview/skins/default/xui/en/floater_critical.xml diff --git a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml index b5de4166f6..b5de4166f6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml index 94ebaa9cb2..94ebaa9cb2 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_destinations.xml +++ b/indra/newview/skins/default/xui/en/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/en/floater_display_name.xml b/indra/newview/skins/default/xui/en/floater_display_name.xml index 9a9fd32a77..9a9fd32a77 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_display_name.xml +++ b/indra/newview/skins/default/xui/en/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml index d9a3ad0c4b..d9a3ad0c4b 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml index 8ec6735a01..8ec6735a01 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml diff --git a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml index 56233d91ee..56233d91ee 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml index 905983e7fa..905983e7fa 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/en/floater_environment_settings.xml b/indra/newview/skins/default/xui/en/floater_environment_settings.xml index 1b1cafaca6..1b1cafaca6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml index cf61b7d24d..cf61b7d24d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_event.xml +++ b/indra/newview/skins/default/xui/en/floater_event.xml diff --git a/indra/newview/skins/default/xui/en/floater_experience_search.xml b/indra/newview/skins/default/xui/en/floater_experience_search.xml new file mode 100644 index 0000000000..15a4b5665e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_experience_search.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + positioning="cascading" + legacy_header_height="18" + can_resize="true" + height="350" + layout="topleft" + min_height="200" + min_width="400" + name="experiencepicker" + help_topic="experiencepicker" + title="CHOOSE EXPERIENCE" + width="350"> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_experienceprofile.xml b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml new file mode 100644 index 0000000000..2dfba1ac44 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml @@ -0,0 +1,688 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> + +<floater + positioning="cascading" + can_close="true" + enabled="true" + can_resize="true" + help_topic="floater_experienceprofile" + title="EXPERIENCE PROFILE" + save_rect="true" + min_width="325" + min_height="325" + width="358" + height="650"> + <floater.string + name="empty_slurl"> + (none) + </floater.string> + <floater.string + name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string + name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string + name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text + follows="top|left|right" + font="SansSerifHugeBold" + height="26" + layout="topleft" + left_pad="4" + name="edit_title" + top="2" + value="Experience Profile" + use_ellipses="true" + left="6" + right="-3"/> + <tab_container + hide_tabs="true" + follows="all" + height="615" + layout="topleft" + left="5" + min_height="250" + top_pad="3" + width="348" + name="tab_container"> + <panel + background_visible="true" + follows="all" + height="540" + layout="topleft" + left="0" + min_height="250" + top="0" + width="348" + name="panel_experience_info"> + <scroll_container + color="DkGray2" + follows="all" + height="520" + layout="topleft" + left="9" + name="xp_scroll" + opaque="true" + top_pad="10" + width="330"> + <panel + bg_alpha_color="DkGray2" + follows="top|left|right" + height="550" + layout="topleft" + left="0" + name="scrolling_panel" + top="0" + width="315" + min_width="315"> + <layout_stack + follows="all" + height="550" + layout="topleft" + left="0" + animate="false" + top="0" + orientation="vertical" + width="315"> + <layout_panel + follows="all" + height="29" + layout="topleft" + left="0" + top="0" + auto_resize="false" + visible="false" + width="315" + name="top panel"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="19" + top="10" + layout="topleft" + left="10" + right="-123" + visible="false" + name="grid_wide"/> + <button + follows="top|right" + height="23" + label="Edit" + layout="topleft" + name="edit_btn" + width="100" + visible="false" + top_pad="-23" + right="-14"/> + </layout_panel> + <layout_panel + follows="all" + height="197" + layout="topleft" + left="0" + top="0" + auto_resize="false" + visible="false" + width="315" + name="image_panel"> + <texture_picker + enabled="false" + fallback_image="default_land_picture.j2c" + follows="left|top" + height="197" + layout="topleft" + left="10" + name="logo" + top="10" + width="290" /> + </layout_panel> + <layout_panel + follows="all" + height="19" + layout="topleft" + left="0" + top="5" + width="313" + auto_resize="false"> + <text + follows="left|top|right" + font="SansSerifLarge" + height="14" + layout="topleft" + left="10" + name="experience_title" + top="0" + use_ellipses="true" + value="" + width="288"/> + </layout_panel> + <layout_panel + follows="" + height="50" + layout="topleft" + left="0" + top="0" + auto_resize="false" + width="315" + visible="false" + name="description panel"> + <expandable_text + follows="left|top|right" + font="SansSerif" + height="50" + layout="topleft" + left="7" + name="experience_description" + top="0" + value="" + width="293" + textbox.max_length="2048"/> + </layout_panel> + <layout_panel + follows="" + height="18" + layout="topleft" + left="0" + top="0" + auto_resize="false" + width="315" + visible="true" + name="maturity panel"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="ContentRating" + width="75"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left_pad="2" + valign="center" + name="ContentRatingText" + top_delta="-3" + width="188"> + </text> + </layout_panel> + <layout_panel + follows="all" + height="46" + layout="topleft" + left="0" + top="5" + width="313" + visible="false" + auto_resize="false" + name="location panel"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Location" + width="290"> + Location: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left="10" + valign="center" + use_ellipses="true" + name="LocationTextText" + width="288"> + </text> + </layout_panel> + <layout_panel + follows="all" + height="53" + layout="topleft" + left="0" + top="5" + width="313" + visible="false" + auto_resize="false" + name="marketplace panel"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + width="290"> + Marketplace store: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left="10" + valign="center" + use_ellipses="true" + name="marketplace" + width="288"> + </text> + </layout_panel> + <layout_panel + follows="left|top|right" + height="18" + left="0" + top="0" + auto_resize="false" + width="315"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Owner" + width="75"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left_pad="2" + valign="center" + name="OwnerText" + use_ellipses="true" + top_delta="-2" + width="188"> + </text> + </layout_panel> + <layout_panel + follows="all" + height="18" + layout="topleft" + left="0" + top="5" + width="313" + visible="false" + auto_resize="false" + name="group_panel"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Group" + width="75"> + Group: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left_pad="2" + valign="center" + name="GroupText" + use_ellipses="true" + top_delta="-2" + width="188"> + </text> + </layout_panel> + <layout_panel + follows="all" + height="75" + layout="topleft" + left="0" + top="5" + width="313" + auto_resize="false" + visible="true" + name="perm panel"> + <button + follows="bottom|left" + height="23" + label="Allow" + layout="topleft" + name="allow_btn" + width="94" + top_pad="3" + left="10" + enabled="false"/> + <button + follows="bottom|left" + height="23" + label="Forget" + layout="topleft" + name="forget_btn" + width="94" + top_pad="-23" + left_pad="3" + enabled="false"/> + <button + follows="bottom|left" + height="23" + label="Block" + layout="topleft" + name="block_btn" + width="94" + top_pad="-23" + left_pad="3" + enabled="false"/> + <text + type="string" + halign="center" + length="1" + follows="left|top|right" + height="16" + layout="topleft" + left="10" + name="privileged" + visible="false" + width="288"> + This experience is enabled for all residents. + </text> + <button + follows="bottom|left" + height="23" + label="Report Abuse" + layout="topleft" + name="report_btn" + width="94" + top_pad="3" + left="107" + enabled="true"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel + background_visible="true" + follows="all" + layout="topleft" + height="540" + left="0" + top="0" + width="348" + name="edit_panel_experience_info"> + <scroll_container + color="DkGray2" + follows="all" + height="520" + layout="topleft" + left="9" + name="edit_xp_scroll" + opaque="true" + top_pad="10" + width="330"> + <panel + bg_alpha_color="DkGray2" + follows="top|left|right" + height="590" + layout="topleft" + left="0" + name="edit_scrolling_panel" + top="0" + width="310"> + <texture_picker + enabled="true" + fallback_image="default_land_picture.j2c" + follows="left|top" + height="197" + layout="topleft" + left="10" + name="edit_logo" + top="10" + width="290" /> + <text + follows="left|top|right" + height="14" + layout="topleft" + left="10" + name="edit_experience_title_label" + use_ellipses="true" + value="Name:" + right="-10"/> + <line_editor + follows="left|top|right" + height="19" + layout="topleft" + left="10" + name="edit_experience_title" + max_length_bytes="63" + text_color="black" + right="-10"/> + <text + follows="left|top|right" + height="14" + layout="topleft" + left="10" + top_pad="10" + name="edit_experience_desc_label" + use_ellipses="true" + value="Description:" + right="-10"/> + <text_editor + follows="left|top|right" + height="57" + layout="topleft" + left="11" + name="edit_experience_description" + max_length="2048" + text_color="black" + right="-11" + word_wrap="true"/> + <button + top_pad="10" + left="10" + width="125" + height="23" + name="Group_btn" + label="Group" + /> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left_pad="10" + top_pad="-18" + use_ellipses="true" + name="edit_GroupText" + right="-10" /> + <text + top_pad="10" + type="string" + length="1" + follows="left|top|right" + height="16" + layout="topleft" + left="10" + name="edit_ContentRating" + right="-10"> + Rating: + </text> + <icons_combo_box + follows="right|top" + height="20" + label="Moderate" + layout="topleft" + right="-10" + top_pad="-19" + tool_tip="Increasing the maturity rating on an experience will reset permission for all residents which have allowed the experience." + name="edit_ContentRatingText" + width="105"> + <icons_combo_box.drop_down_button + image_overlay="Parcel_M_Light" + image_overlay_alignment="left" + imgoverlay_label_space="3" + pad_left="3"/> + <icons_combo_box.item + label="Adult" + name="Adult" + value="42"> + <item.columns + halign="center" + type="icon" + value="Parcel_R_Light" + width="20"/> + </icons_combo_box.item> + <icons_combo_box.item + label="Moderate" + name="Mature" + value="21"> + <item.columns + halign="center" + type="icon" + value="Parcel_M_Light" + width="20"/> + </icons_combo_box.item> + <icons_combo_box.item + label="General" + name="PG" + value="13"> + <item.columns + halign="center" + type="icon" + value="Parcel_PG_Light" + width="20"/> + </icons_combo_box.item> + </icons_combo_box> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left="10" + top_pad="10" + name="edit_Location" + right="90"> + Location: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left_pad="5" + top_pad="-14" + use_ellipses="true" + name="edit_LocationTextText" + right="-10" /> + <button + left="10" + width="125" + height="23" + name="location_btn" + label="Set to Current" + /> + <button + top_pad="-23" + follows="top|right" + right="-10" + width="125" + name="clear_btn" + label="Clear Location"/> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + top_pad="10" + layout="topleft" + left="10" + right="-10"> + Marketplace store: + </text> + <line_editor + type="string" + length="1" + follows="left|top|right" + height="19" + layout="topleft" + left="10" + max_length_bytes="255" + valign="center" + name="edit_marketplace" + right="-10"/> + <check_box width="140" + height="21" + left="10" + layout="topleft" + follows="top|left" + tool_tip="" + label="Enable Experience" + name="edit_enable_btn"/> + <check_box width="125" + height="21" + top_pad="-21" + right="-10" + visible="false" + layout="topleft" + follows="top|left|right" + label="Hide In Search" + name="edit_private_btn"/> + <text + follows="left|top|right" + height="25" + layout="topleft" + left="10" + top_pad="10" + name="changes" + use_ellipses="true" + word_wrap="true" + value="Experience changes may take several minutes to be seen on all regions." + right="-10"/> + <button + follows="top|left" + height="23" + label="Back" + layout="topleft" + name="cancel_btn" + width="125" + top_pad="15" + left="10" + visible="true"/> + <button + follows="top|right" + height="23" + label="Save" + layout="topleft" + name="save_btn" + top_pad="-23" + width="125" + right="-10" + visible="true"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_experiences.xml b/indra/newview/skins/default/xui/en/floater_experiences.xml new file mode 100644 index 0000000000..442da887c5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_experiences.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> + +<floater + can_close="true" + can_resize="true" + height="400" + width="500" + min_height="300" + min_width="500" + layout="topleft" + help_topic="floater_experiences" + name="floater_experiences" + save_rect="true" + single_instance="true" + + bg_opaque_color="0 0.5 0 0.3" + title="EXPERIENCES"> + <tab_container + top="3" + left="3" + layout="topleft" + right="-3" + follows="all" + height="394" + name="xp_tabs"> + </tab_container> + +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_fast_timers.xml b/indra/newview/skins/default/xui/en/floater_fast_timers.xml index 671f116df3..671f116df3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/en/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml index 3ab19ec9d9..3ab19ec9d9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_font_test.xml +++ b/indra/newview/skins/default/xui/en/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml index 200e9b9537..200e9b9537 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml index e7131e20cb..e7131e20cb 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index 9deb0d2030..dcd6d98581 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -191,8 +191,18 @@ label="OK" label_selected="OK" layout="topleft" - left="-102" + right="-105" name="OK" top="192" width="90" /> + <button + follows="right|bottom" + height="22" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="5" + name="Cancel" + right="-10" + width="90" /> </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 c06cb63f8a..c06cb63f8a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml index 8c0077a8cc..8c0077a8cc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_how_to.xml +++ b/indra/newview/skins/default/xui/en/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml index e2d860881a..e2d860881a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_hud.xml +++ b/indra/newview/skins/default/xui/en/floater_hud.xml diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index 28c89868bd..28c89868bd 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml 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 c64ee5565a..c64ee5565a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml index 44d2c14cc8..44d2c14cc8 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_import_collada.xml b/indra/newview/skins/default/xui/en/floater_import_collada.xml index 441ab6a2de..441ab6a2de 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/en/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml index a7864381a9..a7864381a9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml index bea35e5fc1..bea35e5fc1 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_inspect.xml +++ b/indra/newview/skins/default/xui/en/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml index 6667238232..6667238232 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml index 17bc818cc1..17bc818cc1 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml diff --git a/indra/newview/skins/default/xui/en/floater_item_properties.xml b/indra/newview/skins/default/xui/en/floater_item_properties.xml new file mode 100644 index 0000000000..0fc54a9c8b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_item_properties.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + height="570" + layout="topleft" + name="Item Properties" + help_topic="item+properties" + title="ITEM PROPERTIES" + width="330"> + <panel + follows="all" + layout="topleft" + left="0" + class="sidepanel_item_info" + filename="sidepanel_item_info.xml" + name="item_panel" + top="20" + label="" + height="570" + visible="true" + width="330"> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml index 3dfdf8e1a5..3dfdf8e1a5 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_joystick.xml +++ b/indra/newview/skins/default/xui/en/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml index 390ec9ab7d..390ec9ab7d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml index 5cd7cd196d..e8826034f6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -1,71 +1,118 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater - legacy_header_height="18" - bevel_style="none" - border_style="line" - can_resize="true" - height="580" - layout="topleft" - min_height="271" - min_width="290" - name="script ed float" - help_topic="script_ed_float" - save_rect="true" - title="SCRIPT: NEW SCRIPT" - width="508"> - <floater.string - name="not_allowed"> - You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. - </floater.string> - <floater.string - name="script_running"> - Running - </floater.string> - <floater.string - name="Title"> - SCRIPT: [NAME] - </floater.string> - <panel - bevel_style="none" + legacy_header_height="18" + bevel_style="none" + border_style="line" + can_resize="true" + height="582" + layout="topleft" + min_height="271" + min_width="328" + name="script ed float" + help_topic="script_ed_float" + save_rect="true" + title="SCRIPT: NEW SCRIPT" + width="508"> + <floater.string + name="not_allowed"> + You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. + </floater.string> + <floater.string + name="script_running"> + Running + </floater.string> + <floater.string + name="Title"> + SCRIPT: [NAME] + </floater.string> + <floater.string + name="experience_enabled"> + Uncheck to remove the current experience + </floater.string> + <floater.string + name="no_experiences"> + You are not authorized for any experiences + </floater.string> + <floater.string + name="add_experiences"> + Select to add an experience + </floater.string> + <floater.string + name="show_experience_profile"> + Click to view the experience profile + </floater.string> + <floater.string + name="loading"> + Loading... + </floater.string> + <panel + bevel_style="none" - border_style="line" - follows="left|top|right|bottom" - height="522" - layout="topleft" - left="10" - name="script ed panel" - top="20" - width="497" /> - <button - follows="left|bottom" - height="23" - label="Reset" - label_selected="Reset" - layout="topleft" - name="Reset" - left="10" - width="85" /> - <check_box + border_style="line" + follows="left|top|right|bottom" + height="499" + layout="topleft" + left="10" + name="script ed panel" + top="16" + width="501" /> + <button + follows="left|bottom" + height="23" + label="Reset" + label_selected="Reset" + layout="topleft" + name="Reset" + left="10" + width="85" /> + <check_box left_delta="90" top_delta="3" - enabled="false" - follows="left|bottom" - font="SansSerif" - height="18" - initial_value="true" - label="Running" - layout="topleft" - name="running" - width="205" /> - <check_box + enabled="false" + follows="left|bottom" + font="SansSerif" + height="18" + initial_value="true" + label="Running" + layout="topleft" + name="running" + width="205" /> + <check_box left_delta="140" - enabled="true" - follows="left|bottom" - font="SansSerif" - height="18" - initial_value="true" - label="Mono" - layout="topleft" - name="mono" - width="100" /> + enabled="true" + follows="left|bottom" + font="SansSerif" + height="18" + initial_value="true" + label="Mono" + layout="topleft" + name="mono" + width="100" /> + <check_box width="130" + height="21" + enabled="false" + left="9" + top_pad="10" + layout="topleft" + follows="bottom|left" + label="Use Experience:" + name="enable_xp"/> + <combo_box + label="" + top_pad="-21" + left="149" + right="467" + layout="topleft" + follows="left|bottom|right" + visible="false" + name="Experiences..."/> + <button label=">" + name="view_profile" + height="23" + width="23" + right="496" + layout="topleft" + top_pad="-23" + follows="right" + visible="false"/> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml index e9676777f4..e9676777f4 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index b8893e11d9..b8893e11d9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml new file mode 100644 index 0000000000..0806a87288 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<floater + title="MARKETPLACE LISTINGS" + name="floater_marketplace_listings" + help_topic="floater_marketplace_listings" + positioning="cascading" + width="333" + height="445" + min_width="200" + min_height="300" + can_close="true" + can_resize="true" + save_rect="true" + save_visibility="false" + reuse_instance="true"> + <panel + name="marketplace_listings_panel" + follows="all" + layout="topleft" + left="0" + top="0" + height="440" + width="333"> + <panel + follows="all" + left="10" + height="440" + width="313" + top="0" + bg_opaque_color="InventoryBackgroundColor"> + <panel + name="marketplace_listings_inventory_placeholder_panel" + follows="all" + layout="topleft" + top="0" + left="0" + width="313" + height="440" + bg_opaque_color="InventoryBackgroundColor"> + <text + name="marketplace_listings_inventory_placeholder_title" + type="string" + follows="top|left|right" + layout="topleft" + top="10" + left="0" + width="313" + height="25" + wrap="true" + halign="center" + font="SansSerifBold"> + Loading... + </text> + <text + name="marketplace_listings_inventory_placeholder_text" + type="string" + follows="top|left|right" + layout="topleft" + top="35" + left="0" + width="313" + height="130" + wrap="true" + halign="left" /> + </panel> + <panel + name="panel_marketplace_listing" + filename="panel_marketplace_listings.xml" + class="llpanelmarketplacelistings" + top="0" + follows="all"/> + </panel> + <panel + name="marketplace_panel_status" + follows="bottom|left|right" + layout="topleft" + left="10" + width="313" + height="20"> + <text + name="marketplace_status" + type="string" + follows="bottom|left|right" + layout="topleft" + top="0" + left="5" + width="150" + height="20" + wrap="true" + halign="left" + valign="center" + font="SansSerif"/> + </panel> + <layout_stack name="initialization_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false"> + <layout_panel /> + <layout_panel height="24" auto_resize="false"> + <layout_stack orientation="horizontal" left="0" height="24" top="0" width="333" follows="all"> + <layout_panel width="0" /> + <layout_panel width="24" auto_resize="false"> + <loading_indicator + height="24" + layout="topleft" + left="0" + top="0" + width="24" /> + </layout_panel> + <layout_panel width="0" /> + </layout_stack> + </layout_panel> + <layout_panel /> + </layout_stack> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml new file mode 100644 index 0000000000..9035a7c161 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + title="Audit Marketplace Listings" + name="floater_marketplace_validation" + help_topic="floater_marketplace_validation" + layout="topleft" + positioning="cascading" + legacy_header_height="18" + width="600" + height="500" + min_width="400" + min_height="200" + can_close="true" + can_resize="true" + can_minimize="true" + save_rect="true" + reuse_instance="true" + save_visibility="false"> + <button + name="OK" + label="OK" + label_selected="OK" + layout="topleft" + follows="right|bottom" + top="465" + width="100" + height="20" + left="484"/> + <text_editor + name="validation_text" + type="string" + font="SansSerif" + length="1" + max_length="65536" + layout="topleft" + follows="all" + bg_readonly_color="TextBgReadOnlyColor" + text_readonly_color="TextFgReadOnlyColor" + top="25" + bottom="455" + left="20" + right="-20" + word_wrap="true"> + MARKETPLACE_VALIDATION_TEXT + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index ce788654aa..ce788654aa 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml index 0e03c0ab6d..0e03c0ab6d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml index fb7d09a21e..fb7d09a21e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml index b98f280b56..b98f280b56 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index a4acd1df78..7183b2f1f9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -31,6 +31,7 @@ <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> <string name="mesh_status_missing_lod">Missing required level of detail.</string> <string name="mesh_status_invalid_material_list">LOD materials are not a subset of reference model.</string> + <string name="phys_status_vertex_limit_exceeded">Some physical hulls exceed vertex limitations.</string> <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" --> <string name="decomposing">Analyzing...</string> <string name="simplifying">Simplifying...</string> @@ -66,7 +67,7 @@ follows="top|left" layout="topleft" height="19" - max_length_bytes="64" + max_length_bytes="63" name="description_form" prevalidate_callback="ascii" top_pad="5" @@ -1027,19 +1028,19 @@ bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3" follows="left|top" - height="16" + height="19" layout="topleft" left="18" name="physics info" - top_pad="15" - width="589"> + top_pad="12" + width="319"> <text follows="top|left" height="15" layout="topleft" left="0" text_color="White" - top_pad="0" + top_pad="3" name="results_text" width="50"> Results: @@ -1077,6 +1078,33 @@ Hulls: [HULLS] </text> </panel> + <panel + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + follows="left|top" + height="19" + layout="topleft" + left_pad="5" + top_delta="0" + name="physics message" + width="270"> + <icon + follows="left|top" + height="16" + left="0" + layout="topleft" + name="physics_status_message_icon" + top_pad="0" + width="16" /> + <text + follows="left|top" + height="15" + layout="topleft" + left_pad="2" + name="physics_status_message_text" + width="252" + top_delta="3"/> + </panel> </panel> <!-- MODIFIERS PANEL --> <panel diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 5e84283ab0..5e84283ab0 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml index 22b0a1783f..22b0a1783f 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml index fdea7a821a..fdea7a821a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml index 178987962b..f182d27da8 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml @@ -6,7 +6,7 @@ height="570" help_topic="sidebar_inventory" min_width="333" - min_height="570" + min_height="590" name="floater_my_inventory" save_rect="true" save_visibility="true" diff --git a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml index df46fc198f..df46fc198f 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml +++ b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml index 1f9ddecac2..1f9ddecac2 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_notification.xml +++ b/indra/newview/skins/default/xui/en/floater_notification.xml 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 e243ccd2f9..e243ccd2f9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/en/floater_notifications_tabbed.xml b/indra/newview/skins/default/xui/en/floater_notifications_tabbed.xml new file mode 100644 index 0000000000..c17d2a1f37 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_notifications_tabbed.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater + legacy_header_height="18" + bevel_style="in" + layout="topleft" + name="floater_notifications_tabbed" + help_topic="notification_chiclet" + save_rect="true" + title="NOTIFICATIONS" + width="350" + min_width="435" + height="550" + min_height="150" + can_minimize="false" + can_tear_off="false" + can_resize="true" + can_drag_on_left="false" + can_dock="true" + save_dock_state="true" + save_visibility="true" + single_instance="true" +> + <floater.string + name="system_tab_title"> + System ([COUNT]) + </floater.string> + <floater.string + name="transactions_tab_title"> + Transactions ([COUNT]) + </floater.string> + <floater.string + name="group_invitations_tab_title"> + Invitations ([COUNT]) + </floater.string> + <floater.string + name="group_notices_tab_title"> + Group ([COUNT]) + </floater.string> + + <string + name="title_notification_tabbed_window"> + NOTIFICATIONS + </string> + <layout_stack + width="336" + height="533" + enabled="true" + orientation="vertical" + name="TabButtonsStack" + follows="left|top|right|bottom" + top="17"> + <layout_panel + width="336" + height="530" + enabled="true" + name="TabButtonsLayoutPanel"> + <tab_container + follows="left|top|right|bottom" + halign="center" + layout="topleft" + tab_position="top" + left="7" + top="7" + width="336" + height="491" + mouse_opaque="true" + name="notifications_tab_container"> + <panel + border="true" + bevel_style="none" + follows="left|top|right|bottom" + label="System (0)" + layout="topleft" + name="system_notification_list_tab"> + <notification_list_view + color="FloaterDefaultBackgroundColor" + follows="all" + layout="topleft" + name="system_notification_list" + left="0" + top="5" + height="0" + width="330"/> + </panel> + <panel + border="true" + bevel_style="none" + follows="left|top|right|bottom" + label="Transactions (0)" + layout="topleft" + name="transaction_notifications_tab"> + <notification_list_view + color="FloaterDefaultBackgroundColor" + follows="all" + layout="topleft" + name="transaction_notification_list" + left="0" + top="5" + height="0" + width="328"/> + </panel> + <panel + border="true" + bevel_style="none" + follows="left|top|right|bottom" + label="Invitations (0)" + layout="topleft" + name="group_invite_notifications_tab"> + <notification_list_view + color="FloaterDefaultBackgroundColor" + follows="all" + layout="topleft" + name="group_invite_notification_list" + left="0" + top="5" + height="0" + width="328"/> + </panel> + <panel + border="true" + bevel_style="none" + follows="left|top|right|bottom" + label="Group (0)" + layout="topleft" + name="group_notice_notifications_tab"> + <notification_list_view + color="FloaterDefaultBackgroundColor" + follows="all" + layout="topleft" + name="group_notice_notification_list" + left="0" + top="5" + height="0" + width="328"/> + </panel> + </tab_container> + + <layout_stack width="336" height="26" enabled="true" orientation="horizontal" follows="left|right" name="ButtonsStack"> + <layout_panel width="336" height="30" enabled="true" name="CondenseAllButtonPanel"> + <button width="93" height="21" left="2" label="Collapse all" name="collapse_all_button"> + </button> + </layout_panel> + <layout_panel width="336" height="30" enabled="true" name="GapLayoutPanel"> + <panel width="90" height="21" left="2" label="Gap Panel" border="false" name="GapPanel"> + </panel> + </layout_panel> + <layout_panel width="336" height="30" enabled="true" name="DeleteAllButtonPanel"> + <button width="93" height="21" left="2" label="Delete all" name="delete_all_button"> + </button> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_object_weights.xml b/indra/newview/skins/default/xui/en/floater_object_weights.xml index eb283a1043..eb283a1043 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/en/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml index 912db80bcc..912db80bcc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_openobject.xml +++ b/indra/newview/skins/default/xui/en/floater_openobject.xml 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 index bbe280582b..bbe280582b 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml index ffbb6aa28b..ffbb6aa28b 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml index 46ee113b69..46ee113b69 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml index 2629313069..2629313069 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index 4a457fb929..4a457fb929 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml index 9d91f801a6..9d91f801a6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_pay.xml +++ b/indra/newview/skins/default/xui/en/floater_pay.xml diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index f1e27b918e..f1e27b918e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml index 701233ba4a..701233ba4a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_people.xml +++ b/indra/newview/skins/default/xui/en/floater_people.xml diff --git a/indra/newview/skins/default/xui/en/floater_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml index 984894b016..984894b016 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_picks.xml +++ b/indra/newview/skins/default/xui/en/floater_picks.xml diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml index 31dd6d2c64..31dd6d2c64 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_places.xml +++ b/indra/newview/skins/default/xui/en/floater_places.xml diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml index 05943a10d3..05943a10d3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_post_process.xml +++ b/indra/newview/skins/default/xui/en/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index bd6faf4ed8..bd6faf4ed8 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml index 93bfe53aae..93bfe53aae 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml index 3ea5f54f2c..3ea5f54f2c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml index c4ac936334..c4ac936334 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index 2e1c8ce670..2e1c8ce670 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml index 83a1f5a96f..83a1f5a96f 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml index e1e7e1c8c8..e1e7e1c8c8 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml index 6312366b86..6312366b86 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml index 322e34272c..322e34272c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml index 11172d8a3e..11172d8a3e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml index 3b58cd08f6..3b58cd08f6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_region_info.xml +++ b/indra/newview/skins/default/xui/en/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml index af62c7a9bc..af62c7a9bc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml index bd4edb81c8..bd4edb81c8 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script.xml +++ b/indra/newview/skins/default/xui/en/floater_script.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_debug.xml b/indra/newview/skins/default/xui/en/floater_script_debug.xml index 53d4925214..53d4925214 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/en/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml index b5dd2f97b9..b5dd2f97b9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml index 6b36cdfcc5..6b36cdfcc5 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml index 91a9e67e4c..91a9e67e4c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml index f4aca7bb3d..f4aca7bb3d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml index ade0156bc7..ade0156bc7 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_script_search.xml +++ b/indra/newview/skins/default/xui/en/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index c3e7028dc5..c3e7028dc5 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index 4e89df5a73..4e89df5a73 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml index 52de9ddd47..52de9ddd47 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml index 3ed2bd7206..3ed2bd7206 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml index 9f14e9ae0a..9f14e9ae0a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml +++ b/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 76adaad57c..76adaad57c 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml index dec0e9b6c6..dec0e9b6c6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml index af791466b6..af791466b6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck.xml b/indra/newview/skins/default/xui/en/floater_spellcheck.xml index 76a350dd29..76a350dd29 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/en/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml index b54090015d..b54090015d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index 90f9591f29..90f9591f29 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml index ecedb27438..2c5176cf01 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml @@ -23,10 +23,6 @@ name="title_im_well_window"> CONVERSATIONS </string> - <string - name="title_notification_well_window"> - NOTIFICATIONS - </string> <flat_list_view color="FloaterDefaultBackgroundColor" diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml index 547613fb67..547613fb67 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_telehub.xml +++ b/indra/newview/skins/default/xui/en/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml index 9bc05107a2..9bc05107a2 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_button.xml +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml 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 95aaadfcf3..95aaadfcf3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml index 45e2e34da7..45e2e34da7 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml index 209285da2e..209285da2e 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml index 94f7e0b798..94f7e0b798 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml index a04050e7eb..a04050e7eb 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml index 2894ad2a32..2894ad2a32 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml index 32ccc31dfd..32ccc31dfd 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml +++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml index f4a50ecc96..f4a50ecc96 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml index db14ecae83..db14ecae83 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml index 20bd555a03..20bd555a03 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_slider.xml +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml index acd49aa492..acd49aa492 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml index e1fefc3631..e1fefc3631 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml index d11373ce1d..d11373ce1d 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml index 1d31fbd6dc..1d31fbd6dc 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml index 067c1fed82..067c1fed82 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml 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 10854f5a49..10854f5a49 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 6021ba0a5a..6021ba0a5a 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml index 1ea256b8b3..1ea256b8b3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 3c28233875..3c28233875 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 36ceddd305..36ceddd305 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml index af1617eb39..590d9d1844 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_tos.xml +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -57,6 +57,21 @@ width="552"> Please read the following Terms of Service and Privacy Policy carefully. To continue logging in to [SECOND_LIFE], you must accept the agreement. </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="30" + layout="topleft" + left="16" + name="external_tos_required" + visible="false" + top="32" + word_wrap="true" + width="552"> + You will need to go to my.secondlife.com and log in to accept the Terms of Service before you can proceed. Thank you! + </text> <web_browser trusted_content="true" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml index bc19d6e79f..bc19d6e79f 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_toybox.xml +++ b/indra/newview/skins/default/xui/en/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml index a212ce7889..a212ce7889 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml index eb01294831..eb01294831 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml index 29fb29fabf..29fb29fabf 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml diff --git a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml index 5c71fd3bc6..5c71fd3bc6 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml index 146c3d7e30..146c3d7e30 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/en/floater_voice_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_volume.xml index 9346295d5b..9346295d5b 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_voice_volume.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_volume.xml diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index a80440e844..a80440e844 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml index d0225f78a9..d0225f78a9 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_web_profile.xml +++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml index 897d959b98..897d959b98 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml index 115fe413f3..115fe413f3 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_window_size.xml +++ b/indra/newview/skins/default/xui/en/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml index 83407069d2..83407069d2 100755..100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index ebbb53729d..ebbb53729d 100755..100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index ef4f19cd4c..ef4f19cd4c 100755..100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml index 324ff3eabd..324ff3eabd 100755..100644 --- a/indra/newview/skins/default/xui/en/inspect_group.xml +++ b/indra/newview/skins/default/xui/en/inspect_group.xml diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index bfeb8fc470..bfeb8fc470 100755..100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml index e83257d2a0..e83257d2a0 100755..100644 --- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml index 0221397a8c..0221397a8c 100755..100644 --- a/indra/newview/skins/default/xui/en/inspect_toast.xml +++ b/indra/newview/skins/default/xui/en/inspect_toast.xml diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml index a7ecc39ed8..a7ecc39ed8 100755..100644 --- a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml +++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml index 51779e4bfd..51779e4bfd 100755..100644 --- a/indra/newview/skins/default/xui/en/language_settings.xml +++ b/indra/newview/skins/default/xui/en/language_settings.xml diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 9885e37cea..9885e37cea 100755..100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml index 5033ea9546..5033ea9546 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index ba91b0b5d9..ba91b0b5d9 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index c6ae844d67..c6ae844d67 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml index 410caa7290..410caa7290 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index cfbbe41f95..cfbbe41f95 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml 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 d3b0b07f70..d3b0b07f70 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml diff --git a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml index c402100fb1..c402100fb1 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml index f0e8461360..f0e8461360 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml index 206d49e8c7..206d49e8c7 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/en/menu_cof_gear.xml b/indra/newview/skins/default/xui/en/menu_cof_gear.xml index 45cf780557..45cf780557 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml index ed362b36e5..ed362b36e5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation.xml diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml index a1a3afbf68..a1a3afbf68 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml index ce65b23971..ce65b23971 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml index 99061e089a..99061e089a 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_edit.xml +++ b/indra/newview/skins/default/xui/en/menu_edit.xml diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml index be380e11e5..be380e11e5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_favorites.xml +++ b/indra/newview/skins/default/xui/en/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index b08d21e8f4..b08d21e8f4 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml index eca9e7f3c9..eca9e7f3c9 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml index b517fd7957..b517fd7957 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/en/menu_im_conversation.xml b/indra/newview/skins/default/xui/en/menu_im_conversation.xml index 43287c6ec3..43287c6ec3 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_im_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_im_conversation.xml diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml index b0adca0e0e..b0adca0e0e 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml +++ b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml index eb5e31b57d..eb5e31b57d 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml index 8cbe62cfb0..8cbe62cfb0 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml index 038b8328cb..038b8328cb 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml index 2c420aa1e3..2c420aa1e3 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml index 45a0a6635b..45a0a6635b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 7099db63ab..61002bf1b5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -4,6 +4,81 @@ layout="topleft" name="Popup" visible="false"> + <menu_item_call + label="Create listing" + layout="topleft" + name="Marketplace Create Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_create_listing" /> + </menu_item_call> + <menu_item_call + label="Associate listing" + layout="topleft" + name="Marketplace Associate Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_associate_listing" /> + </menu_item_call> + <menu_item_call + label="Get (Refresh) listing" + layout="topleft" + name="Marketplace Get Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_get_listing" /> + </menu_item_call> + <menu_item_call + label="Check for errors" + layout="topleft" + name="Marketplace Check Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_check_listing" /> + </menu_item_call> + <menu_item_call + label="Edit listing" + layout="topleft" + name="Marketplace Edit Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_edit_listing" /> + </menu_item_call> + <menu_item_call + label="List" + layout="topleft" + name="Marketplace List"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_list" /> + </menu_item_call> + <menu_item_call + label="Unlist" + layout="topleft" + name="Marketplace Unlist"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_unlist" /> + </menu_item_call> + <menu_item_call + label="Activate" + layout="topleft" + name="Marketplace Activate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_activate" /> + </menu_item_call> + <menu_item_call + label="Deactivate" + layout="topleft" + name="Marketplace Deactivate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_deactivate" /> + </menu_item_call> + <menu_item_separator + layout="topleft" + name="Marketplace Listings Separator" /> <menu_item_call label="Share" layout="topleft" @@ -490,14 +565,6 @@ <menu_item_call label="Delete" layout="topleft" - name="Remove Link"> - <menu_item_call.on_click - function="Inventory.DoToSelected" - parameter="delete" /> - </menu_item_call> - <menu_item_call - label="Delete" - layout="topleft" name="Delete"> <menu_item_call.on_click function="Inventory.DoToSelected" @@ -710,20 +777,20 @@ layout="topleft" name="Marketplace Separator" /> <menu_item_call - label="Copy to Merchant Outbox" - layout="topleft" - name="Merchant Copy"> + label="Copy to Marketplace Listings" + layout="topleft" + name="Marketplace Copy"> <menu_item_call.on_click - function="Inventory.DoToSelected" - parameter="copy_to_outbox" /> + function="Inventory.DoToSelected" + parameter="copy_to_marketplace_listings" /> </menu_item_call> <menu_item_call - label="Send to Marketplace" - layout="topleft" - name="Marketplace Send"> + label="Move to Marketplace Listings" + layout="topleft" + name="Marketplace Move"> <menu_item_call.on_click - function="Inventory.DoToSelected" - parameter="send_to_marketplace" /> + function="Inventory.DoToSelected" + parameter="move_to_marketplace_listings" /> </menu_item_call> <menu_item_call label="--no options--" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index afeb1bf226..afeb1bf226 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 06d0b849a3..06d0b849a3 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml index 2ad5cbbe95..2ad5cbbe95 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_land.xml +++ b/indra/newview/skins/default/xui/en/menu_land.xml diff --git a/indra/newview/skins/default/xui/en/menu_landmark.xml b/indra/newview/skins/default/xui/en/menu_landmark.xml index 93b6db222a..93b6db222a 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_landmark.xml +++ b/indra/newview/skins/default/xui/en/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index e91eea04d1..419ec359a6 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -108,6 +108,12 @@ function="Floater.Show" parameter="sl_about" /> </menu_item_call> + <menu_item_call + label="Check for Updates" + name="Check for Updates"> + <menu_item_call.on_click + function="Advanced.CheckViewerUpdates"/> + </menu_item_call> </menu> <menu_item_check label="Show Debug Menu" @@ -230,7 +236,7 @@ name="Web Content Floater Debug Test"> <menu_item_call.on_click function="Advanced.WebContentTest" - parameter="http://google.com"/> + parameter="https://callum-linden.s3.amazonaws.com/ceftests.html"/> </menu_item_call> <menu create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml new file mode 100644 index 0000000000..4b3bb8ee1c --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<toggleable_menu + name="menu_marketplace_sort" + left="0" bottom="0" visible="false" + mouse_opaque="false"> + <menu_item_check + label="Sort by name" + name="sort_by_name"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_name" /> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_name" /> + </menu_item_check> + <menu_item_check + label="Sort by most recent" + name="sort_by_recent"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_recent" /> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_recent" /> + </menu_item_check> + <menu_item_check + label="Sort by stock amount (low to high)" + name="sort_by_stock_amount"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_stock_amount"/> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_stock_amount"/> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Show only listing folders" + name="show_only_listing_folders"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="show_only_listing_folders"/> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="show_only_listing_folders"/> + </menu_item_check> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml index 960da4bd7a..960da4bd7a 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml index ea263d05ce..ea263d05ce 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/en/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml index 2650903f88..2650903f88 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml index b71b866c4b..b71b866c4b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_navbar.xml +++ b/indra/newview/skins/default/xui/en/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml index ff89e20ea5..ff89e20ea5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml index 263ac40f4e..263ac40f4e 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index dc9622a27d..dc9622a27d 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml diff --git a/indra/newview/skins/default/xui/en/menu_object_icon.xml b/indra/newview/skins/default/xui/en/menu_object_icon.xml index 2d4f1792c2..2d4f1792c2 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/en/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml index 3b8ace6308..3b8ace6308 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml index 8c8bb29baf..8c8bb29baf 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml 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 2c32d9d303..2c32d9d303 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml index 7ea87ee05c..7ea87ee05c 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml index 63295ea27b..63295ea27b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml index 0c7155667e..0c7155667e 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml index 2efb70ee37..2efb70ee37 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml index 8790fde7c5..8790fde7c5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_groups.xml b/indra/newview/skins/default/xui/en/menu_people_groups.xml index 1e0364b84e..1e0364b84e 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/en/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml index 73f79f1e70..73f79f1e70 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index f12226ebeb..f12226ebeb 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml index 5f973088fd..5f973088fd 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml index da88ca9f4d..da88ca9f4d 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml index 1dbc90dd2b..1dbc90dd2b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml diff --git a/indra/newview/skins/default/xui/en/menu_picks.xml b/indra/newview/skins/default/xui/en/menu_picks.xml index ebb49c9004..ebb49c9004 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_picks.xml +++ b/indra/newview/skins/default/xui/en/menu_picks.xml diff --git a/indra/newview/skins/default/xui/en/menu_picks_plus.xml b/indra/newview/skins/default/xui/en/menu_picks_plus.xml index f3b207e36c..f3b207e36c 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/en/menu_place.xml b/indra/newview/skins/default/xui/en/menu_place.xml index 288811d2f6..288811d2f6 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_place.xml +++ b/indra/newview/skins/default/xui/en/menu_place.xml diff --git a/indra/newview/skins/default/xui/en/menu_place_add_button.xml b/indra/newview/skins/default/xui/en/menu_place_add_button.xml index e3a39a1242..e3a39a1242 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/en/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml index 1aeb166e01..1aeb166e01 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml index ff5fdd3795..ff5fdd3795 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml index b0b7b554b0..b0b7b554b0 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/en/menu_save_outfit.xml b/indra/newview/skins/default/xui/en/menu_save_outfit.xml index 6285bf7417..6285bf7417 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/en/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml index db29d9cebc..db29d9cebc 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/en/menu_slurl.xml b/indra/newview/skins/default/xui/en/menu_slurl.xml index ee37d49946..ee37d49946 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_slurl.xml +++ b/indra/newview/skins/default/xui/en/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml index bc7d4fe33b..bc7d4fe33b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml index f939c3996d..f939c3996d 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml index ecc1d8a954..ecc1d8a954 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/en/menu_text_editor.xml b/indra/newview/skins/default/xui/en/menu_text_editor.xml index 70b40dd89b..70b40dd89b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/en/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml index fbe40a7244..fbe40a7244 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/en/menu_topinfobar.xml b/indra/newview/skins/default/xui/en/menu_topinfobar.xml index cbe249ed4d..cbe249ed4d 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/en/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml index e8b6116026..e8b6116026 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_email.xml b/indra/newview/skins/default/xui/en/menu_url_email.xml new file mode 100644 index 0000000000..6467fe5c90 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_url_email.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Email Popup"> + <menu_item_call + label="Compose Email in an External client" + layout="topleft" + name="email_open_external"> + <menu_item_call.on_click + function="Url.OpenExternal" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Copy Email to clipboard" + layout="topleft" + name="email_copy"> + <menu_item_call.on_click + function="Url.CopyLabel" /> + </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_url_experience.xml b/indra/newview/skins/default/xui/en/menu_url_experience.xml new file mode 100644 index 0000000000..f4d50e1603 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_url_experience.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Url Popup"> + <menu_item_call + label="Copy SLurl to clipboard" + layout="topleft" + name="url_copy"> + <menu_item_call.on_click + function="Url.CopyUrl" /> + </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_url_group.xml b/indra/newview/skins/default/xui/en/menu_url_group.xml index 2cb125ce09..2cb125ce09 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_group.xml +++ b/indra/newview/skins/default/xui/en/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_http.xml b/indra/newview/skins/default/xui/en/menu_url_http.xml index 7a4b1e619b..7a4b1e619b 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_http.xml +++ b/indra/newview/skins/default/xui/en/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_inventory.xml b/indra/newview/skins/default/xui/en/menu_url_inventory.xml index cf9d1d5881..cf9d1d5881 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_map.xml b/indra/newview/skins/default/xui/en/menu_url_map.xml index 2ca9e3b3fe..2ca9e3b3fe 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_map.xml +++ b/indra/newview/skins/default/xui/en/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_objectim.xml b/indra/newview/skins/default/xui/en/menu_url_objectim.xml index b9d003b841..b9d003b841 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/en/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_parcel.xml b/indra/newview/skins/default/xui/en/menu_url_parcel.xml index f477c310fb..f477c310fb 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/en/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_slapp.xml b/indra/newview/skins/default/xui/en/menu_url_slapp.xml index 6d1060b633..6d1060b633 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/en/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_slurl.xml b/indra/newview/skins/default/xui/en/menu_url_slurl.xml index 98abc206a5..98abc206a5 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/en/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/en/menu_url_teleport.xml b/indra/newview/skins/default/xui/en/menu_url_teleport.xml index 289e32bcf4..289e32bcf4 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/en/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index b75d614dcc..8de9a1a99a 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -66,6 +66,13 @@ function="Floater.ToggleOrBringToFront" parameter="picks" /> </menu_item_call> + <menu_item_call + label="Experiences..." + name="Experiences"> + <menu_item_call.on_click + function="Floater.ToggleOrBringToFront" + parameter="experiences"/> + </menu_item_call> <menu_item_separator/> <menu_item_call label="Camera Controls..." @@ -127,7 +134,7 @@ </menu_item_call> <menu_item_call label="Walk / run / fly..." - name="Walk / run / fly"> + name="WalkRunFly"> <menu_item_call.on_click function="Floater.ToggleOrBringToFront" parameter="moveview" /> @@ -173,6 +180,13 @@ function="Floater.ToggleOrBringToFront" parameter="outbox" /> </menu_item_call> + <menu_item_call + label="Marketplace listings..." + name="MarketplaceListings"> + <menu_item_call.on_click + function="Floater.ToggleOrBringToFront" + parameter="marketplace_listings" /> + </menu_item_call> <menu_item_call label="Account dashboard..." name="Manage My Account"> @@ -495,7 +509,7 @@ </menu_item_call> <menu_item_call label="Region / Estate" - name="Region/Estate"> + name="RegionEstate"> <menu_item_call.on_click function="Floater.Show" parameter="region_info" /> @@ -1432,6 +1446,12 @@ function="Floater.Show" parameter="sl_about" /> </menu_item_call> + <menu_item_call + label="Check for Updates" + name="Check for Updates"> + <menu_item_call.on_click + function="Advanced.CheckViewerUpdates"/> + </menu_item_call> </menu> <menu create_jump_keys="true" @@ -3171,7 +3191,7 @@ shortcut="control|shift|Z"> <menu_item_call.on_click function="Advanced.WebContentTest" - parameter="http://google.com"/> + parameter="https://callum-linden.s3.amazonaws.com/ceftests.html"/> </menu_item_call> <menu_item_call label="FB Connect Test" 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 aa56b4ba63..aa56b4ba63 100755..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 diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml index 0e858ccf10..0e858ccf10 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml index 2d54e69601..2d54e69601 100755..100644 --- a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml index f5f2223330..7cb4a6e53b 100755..100644 --- a/indra/newview/skins/default/xui/en/mime_types.xml +++ b/indra/newview/skins/default/xui/en/mime_types.xml @@ -7,7 +7,7 @@ none </defaultwidget> <defaultimpl> - media_plugin_webkit + media_plugin_cef </defaultimpl> <widgetset name="web"> <label name="web_label"> @@ -141,7 +141,7 @@ none </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="none/none"> @@ -152,7 +152,7 @@ none </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="audio/*"> @@ -185,7 +185,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="video/vnd.secondlife.qt.legacy"> @@ -207,7 +207,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/ogg"> @@ -229,7 +229,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/postscript"> @@ -240,7 +240,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/rtf"> @@ -251,7 +251,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/smil"> @@ -262,7 +262,7 @@ movie </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/xhtml+xml"> @@ -273,7 +273,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/x-director"> @@ -284,7 +284,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="audio/mid"> @@ -339,7 +339,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/gif"> @@ -350,7 +350,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/jpeg"> @@ -361,7 +361,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/png"> @@ -372,7 +372,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="image/svg+xml"> @@ -383,7 +383,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/tiff"> @@ -394,7 +394,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="text/html"> @@ -405,7 +405,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="text/plain"> @@ -416,7 +416,7 @@ text </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="text/xml"> @@ -427,7 +427,7 @@ text </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="video/mpeg"> diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml index 84aeaf3b54..84aeaf3b54 100755..100644 --- a/indra/newview/skins/default/xui/en/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml index 90230f12dd..f71c24b2e4 100755..100644 --- a/indra/newview/skins/default/xui/en/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/en/mime_types_mac.xml @@ -7,7 +7,7 @@ none </defaultwidget> <defaultimpl> - media_plugin_webkit + media_plugin_cef </defaultimpl> <widgetset name="web"> <label name="web_label"> @@ -152,7 +152,7 @@ none </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="audio/*"> @@ -185,7 +185,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="video/vnd.secondlife.qt.legacy"> @@ -207,7 +207,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/ogg"> @@ -229,7 +229,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/postscript"> @@ -240,7 +240,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/rtf"> @@ -251,7 +251,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/smil"> @@ -262,7 +262,7 @@ movie </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/xhtml+xml"> @@ -273,7 +273,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="application/x-director"> @@ -284,7 +284,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="audio/mid"> @@ -339,7 +339,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/gif"> @@ -350,7 +350,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/jpeg"> @@ -361,7 +361,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/png"> @@ -372,7 +372,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="image/svg+xml"> @@ -383,7 +383,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="image/tiff"> @@ -394,7 +394,7 @@ image </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="text/html"> @@ -405,7 +405,7 @@ web </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="text/plain"> @@ -416,7 +416,7 @@ text </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype name="text/xml"> @@ -427,7 +427,7 @@ text </widgettype> <impl> - media_plugin_webkit + media_plugin_cef </impl> </mimetype> <mimetype menu="1" name="video/mpeg"> diff --git a/indra/newview/skins/default/xui/en/notification_visibility.xml b/indra/newview/skins/default/xui/en/notification_visibility.xml index db292100d7..db292100d7 100755..100644 --- a/indra/newview/skins/default/xui/en/notification_visibility.xml +++ b/indra/newview/skins/default/xui/en/notification_visibility.xml diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 28565a85c6..b4c5cba1fd 100755..100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -308,9 +308,251 @@ Initialization with the Marketplace failed because of a system or network error. name="okbutton" yestext="OK"/> </notification> + + <notification + icon="OutboxStatus_Error" + name="StockPasteFailed" + type="outbox"> + Copy or move to Stock Folder failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantPasteFailed" + type="outbox"> + Copy or move to Marketplace Listings failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantTransactionFailed" + type="outbox"> + The transaction with the Marketplace failed with the following error : + + Reason : '[ERROR_REASON]' + [ERROR_DESCRIPTION] + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantUnprocessableEntity" + type="outbox"> + We are unable to list this product or activate the version folder. Usually this is caused by missing information in the listing description form, but it may be due to errors in the folder structure. Either edit the listing or check the listing folder for errors. + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantListingFailed" + type="outbox"> + Listing to Marketplace failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantFolderActivationFailed" + type="outbox"> + Activating this version folder failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MerchantForceValidateListing" + type="alertmodal"> + In order to create your listing, we fixed the hierarchy of your listing contents. + <tag>confirm</tag> + <usetemplate + ignoretext="Warn me that creating a listing fixes the hierarchy of the content" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantActiveChange" + type="alertmodal"> + This action will change the active content of this listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I change an active listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantMoveInventory" + type="alertmodal"> + Items dragged to the Marketplace Listings window are moved from their original locations, not copied. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I move an item from the inventory to the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmListingCutOrDelete" + type="alertmodal"> + Moving or deleting a listing folder will delete your Marketplace listing. If you would like to keep the Marketplace listing, move or delete the contents of the version folder you would like to modify. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I move or delete a listing from the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmCopyToMarketplace" + type="alertmodal"> + You don't have permission to copy one or more of these items to the Marketplace. You can move them or leave them behind. + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I try to copy a selection containing no copy items to the marketplace" + name="yesnocancelbuttons" + yestext="Move item(s)" + notext="Don't move item(s)" + canceltext="Cancel"/> + </notification> + <notification + icon="alertmodal.tga" + name="ConfirmMerchantUnlist" + type="alertmodal"> + This action will unlist this listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I unlist an active listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantClearVersion" + type="alertmodal"> + This action will deactivate the version folder of the current listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I deactivate the version folder of a listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingNotUpdated" + type="alertmodal"> +This listing could not be updated. +[[URL] Click here] to edit it on the Marketplace. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> <notification + icon="alertmodal.tga" + name="AlertMerchantListingCannotWear" + type="alertmodal"> + You cannot wear clothes or body parts that are in the Marketplace Listings folder. + <tag>fail</tag> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingInvalidID" + type="alertmodal"> + Invalid listing ID. + <tag>fail</tag> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingActivateRequired" + type="alertmodal"> + There are several or no version folders in this listing. You will need to select and activate one independently later. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert about version folder activation when I create a listing with several version folders" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantStockFolderSplit" + type="alertmodal"> + We have separated stock items of different types into separate stock folders, so your folder is arranged in a way that we can list it. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when stock folder is being split before being listed" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantStockFolderEmpty" + type="alertmodal"> + We have unlisted your listing because the stock is empty. You need to add more units to the stock folder to list the listing again. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when a listing is unlisted because stock folder is empty" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantVersionFolderEmpty" + type="alertmodal"> + We have unlisted your listing because the version folder is empty. You need to add items to the version folder to list the listing again. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when a listing is unlisted because version folder is empty" + name="okignore" + yestext="OK"/> + </notification> + + <notification icon="alertmodal.tga" name="CompileQueueSaveText" type="alertmodal"> @@ -577,6 +819,33 @@ If you no longer wish to have these abilities granted to this role, disable them notext="Cancel" yestext="Eject"/> </notification> + + <notification + icon="alertmodal.tga" + name="BanGroupMemberWarning" + type="alertmodal"> + You are about to ban [AVATAR_NAME] from the group. + <tag>group</tag> + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm banning a participant from group" + name="okcancelignore" + notext="Cancel" + yestext="Ban"/> + </notification> + <notification + icon="alertmodal.tga" + name="BanGroupMembersWarning" + type="alertmodal"> + You are about to ban [COUNT] members from group. + <tag>group</tag> + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm banning multiple members from group" + name="okcancelignore" + notext="Cancel" + yestext="Ban"/> + </notification> <notification icon="alertmodal.tga" @@ -783,7 +1052,7 @@ Objects: [N] icon="alertmodal.tga" name="ReturnAllTopObjects" type="alertmodal"> -Are you sure you want to return all listed objects back to their owner's inventory? +Are you sure you want to return all listed objects back to their owner's inventory? This will return ALL scripted objects in the region! <tag>confirm</tag> <usetemplate name="okcancelbuttons" @@ -1323,11 +1592,24 @@ The object may be out of range or may have been deleted. icon="alertmodal.tga" name="CannotDownloadFile" type="alertmodal"> -Unable to download file - <tag>fail</tag> + Unable to download file + <tag>fail</tag> </notification> <notification + name="MediaFileDownloadUnsupported" + label="" + type="alert"> + <unique/> + <tag>confirm</tag> + You have requested a file download, which is not supported within [SECOND_LIFE]. + <usetemplate + ignoretext="Warn about unsupported file downloads" + name="okignore" + yestext="OK"/> + </notification> + + <notification icon="alertmodal.tga" name="CannotWriteFile" type="alertmodal"> @@ -3650,6 +3932,53 @@ see [[INFO_URL] Information about this update] name="okbutton" yestext="OK"/> </notification> + + <notification + icon="alertmodal.tga" + name="UpdateDownloadInProgress" + type="alertmodal"> +An update is available! +It's downloading in the background and we will prompt you to restart your viewer to finish installing it as soon as it's ready. + <tag>confirm</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UpdateDownloadComplete" + type="alertmodal"> +An update was downloaded. It will be installed during restart. + <tag>confirm</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UpdateCheckError" + type="alertmodal"> +An error occured while checking for update. +Please try again later. + <tag>confirm</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UpdateViewerUpToDate" + type="alertmodal"> +Your viewer is up to date! +If you can't wait to try out the latest features and fixes, check out the Alternate Viewers page. http://wiki.secondlife.com/wiki/Linden_Lab_Official:Alternate_Viewers. + <tag>confirm</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> <notification icon="alertmodal.tga" @@ -3975,6 +4304,21 @@ You have reached your maximum number of groups. Please leave some group before j <notification icon="alert.tga" + name="GroupLimitInfo" + type="alert"> +The group limit for base accounts is [MAX_BASIC], and for [https://secondlife.com/premium/ premium] +accounts is [MAX_PREMIUM]. +If you downgraded your account, you will need to get below [MAX_BASIC] group limit before you can join more. + +[https://secondlife.com/my/account/membership.php Upgrade today!] + <tag>group</tag> + <usetemplate + name="okbutton" + yestext="Close"/> + </notification> + + <notification + icon="alert.tga" name="KickUser" type="alert"> <tag>win</tag> @@ -4468,6 +4812,90 @@ Remove estate manager for this estate only or for [ALL_ESTATES]? <notification icon="alert.tga" + label="Select estate" + name="EstateAllowedExperienceAdd" + type="alert"> + Add to allowed list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateAllowedExperienceRemove" + type="alert"> + Remove from allowed list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateBlockedExperienceAdd" + type="alert"> + Add to blocked list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateBlockedExperienceRemove" + type="alert"> + Remove from blocked list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateTrustedExperienceAdd" + type="alert"> + Add to key list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateTrustedExperienceRemove" + type="alert"> + Remove from key list for this estate only or for [ALL_ESTATES]? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" label="Confirm Kick" name="EstateKickUser" type="alert"> @@ -4503,6 +4931,13 @@ Are you sure you want to change the Estate Covenant? </notification> <notification + icon="alertmodal.tga" + name="SLM_UPDATE_FOLDER" + type="alertmodal"> + [MESSAGE] + </notification> + + <notification icon="alertmodal.tga" name="RegionEntryAccessBlocked_AdultsOnlyContent" type="alertmodal"> @@ -5376,16 +5811,19 @@ You cannot undo this action. notext="Cancel" yestext="OK"/> </notification> - + <notification - icon="alertmodal.tga" - name="HelpReportAbuseEmailLL" - type="alert"> + icon="alertmodal.tga" + name="ConfirmUnlink" + type="alertmodal"> <unique/> - -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. + This is a large selection with linksets. If you unlink it, you may not be able to link it again. You may wish to take copies of linksets into your inventory as a precaution. + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm when unlinking a linkset" + name="okcancelignore" + notext="Cancel" + yestext="Unlink"/> </notification> <notification @@ -6693,15 +7131,6 @@ No valid circuit code. <notification icon="notify.tga" - name="NoValidTimestamp" - persist="true" - type="notify"> - <tag>fail</tag> -No valid timestamp. - </notification> - - <notification - icon="notify.tga" name="NoPendingConnection" persist="true" type="notify"> @@ -7173,6 +7602,154 @@ Is this OK? </notification> <notification + icon="alertmodal.tga" + name="ExperienceAcquireFailed" + type="alertmodal"> +Unable to acquire a new experience: + [ERROR_MESSAGE] + <tag>fail</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="notify.tga" + name="NotInGroupExperienceProfileMessage" + persist="false" + type="notify"> + A change to the experience group was ignored because the owner is not a member of the selected group. + </notification> + + <notification + icon="notify.tga" + name="UneditableExperienceProfileMessage" + persist="false" + type="notify"> + The uneditable field '[field]' was ignored when updating the experience profile. + </notification> + + <notification + icon="notify.tga" + name="RestrictedToOwnerExperienceProfileMessage" + persist="false" + type="notify"> + Ignored changes to the field '[field]' which can only be set by the experience owner. + </notification> + + <notification + icon="notify.tga" + name="MaturityRatingExceedsOwnerExperienceProfileMessage" + persist="false" + type="notify"> + You may not set the maturity rating of an experience higher than that of the owner. + </notification> + + <notification + icon="notify.tga" + name="RestrictedTermExperienceProfileMessage" + persist="false" + type="notify"> + The following terms prevented the update of the experience profile name and/or description: [extra_info] + </notification> + + <notification + icon="notify.tga" + name="TeleportedHomeExperienceRemoved" + persist="false" + type="notify"> + You have been teleported from the region [region_name] for removing the experience secondlife:///app/experience/[public_id]/profile and are no longer permitted in the region. + <form name="form"> + <ignore name="ignore" + text="Kicked from region for removing an experience"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="TrustedExperienceEntry" + persist="false" + type="notify"> + You have been allowed into the region [region_name] by participating in the key experience secondlife:///app/experience/[public_id]/profile removing this experience may kick you from the region. + <form name="form"> + <ignore name="ignore" + text="Allowed into a region by an experience"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="TrustedExperiencesAvailable" + persist="false" + type="notify"> +You do not have access to this destination. You may be allowed into the region by Accepting an experience below: + +[EXPERIENCE_LIST] + +Other Key Experiences may be available. + </notification> + + + <notification + icon="notify.tga" + name="ExperienceEvent" + persist="false" + type="notifytip"> + An object was allowed to [EventType] by the secondlife:///app/experience/[public_id]/profile experience. + Owner: secondlife:///app/agent/[OwnerID]/inspect + Object Name: [ObjectName] + Parcel Name: [ParcelName] + </notification> + + <notification + icon="notify.tga" + name="ExperienceEventAttachment" + persist="false" + type="notifytip"> + An attachment was allowed to [EventType] by the secondlife:///app/experience/[public_id]/profile experience. + Owner: secondlife:///app/agent/[OwnerID]/inspect + </notification> + + <notification + icon="notify.tga" + name="ScriptQuestionExperience" + persist="false" + type="notify"> +'<nolink>[OBJECTNAME]</nolink>', an object owned by '[NAME]', requests your participation in the [GRID_WIDE] experience: + +[EXPERIENCE] + +Once permission is granted you will not see this message again for this experience unless it is revoked from the experience profile. + +Scripts associated with this experience will be able to do the following on regions where the experience is active: + +[QUESTIONS]Is this OK? + + <unique combine="combine_with_new"> + <context>experience</context> + </unique> + <tag>confirm</tag> + <form name="form"> + <button + index="3" + name="BlockExperience" + text="Block Experience"/> + <button + index="2" + name="Mute" + text="Block Object"/> + <button + index="0" + name="Yes" + text="Yes"/> + <button + index="1" + name="No" + text="No"/> + </form> + </notification> + + <notification icon="notify.tga" name="ScriptQuestionCaution" priority="critical" @@ -7783,9 +8360,8 @@ Select residents to share with. name="MeshUploadError" icon="alert.tga" type="alert"> - [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] - -See the log file for details. + [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] +[DETAILS]See SecondLife.log for details </notification> <notification @@ -8026,7 +8602,7 @@ We cannot display a preview of this texture because it is no-copy and/or no-tran <notification icon="alertmodal.tga" name="ConfirmLeaveCall" - type="alert"> + type="alertmodal"> Are you sure you want to leave this call? <tag>confirm</tag> <tag>voice</tag> diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml index 2a24c74feb..2a24c74feb 100755..100644 --- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml index 3e3271b181..3e3271b181 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml 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 aa1b929412..aa1b929412 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml index b779b08a63..b779b08a63 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index 53d0252215..53d0252215 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml index 752321b949..752321b949 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml index 216a265164..216a265164 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml index dc123f13f4..dc123f13f4 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml 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 1c0b205c4f..1c0b205c4f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 5c5c718bdf..5c5c718bdf 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml index 1ef99649e6..1ef99649e6 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml index 357dbc07cc..357dbc07cc 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml index fc321fdd23..fc321fdd23 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index d4a2745d1d..d4a2745d1d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml index 27c653bc35..27c653bc35 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml index 5b3f0b17a9..5b3f0b17a9 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml index cc0541e65c..cc0541e65c 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml index aa8e3d07a6..aa8e3d07a6 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml index 4372cf69bf..4372cf69bf 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml index 78d4c174d2..78d4c174d2 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml index de2ff0afc9..de2ff0afc9 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml index 4b05ab27e4..4b05ab27e4 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml index 813aa5d7a9..813aa5d7a9 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index 3509eaa285..3509eaa285 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml index f173a2f3cb..f173a2f3cb 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml index 8c0c543d71..8c0c543d71 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml index 6bb5d2fa9b..6bb5d2fa9b 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml index 0f8c37c691..0f8c37c691 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml index dd749a9259..dd749a9259 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml index 0092ceb0dd..0092ceb0dd 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index 553c112e6f..553c112e6f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml 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 2c7c8133d1..2c7c8133d1 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml index d295f5fe4a..d295f5fe4a 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml index 5424b805e1..5424b805e1 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml index 859e7454a4..859e7454a4 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml index b61f65a3d1..b61f65a3d1 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml index 76d66cc5dc..76d66cc5dc 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml index 5f978174b3..5f978174b3 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml index 97f1a1a658..97f1a1a658 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml index 16f28377fb..16f28377fb 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml index 059485cfb4..059485cfb4 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index f34b913218..f34b913218 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/en/panel_experience_info.xml b/indra/newview/skins/default/xui/en/panel_experience_info.xml new file mode 100644 index 0000000000..70d8a4fc64 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experience_info.xml @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + follows="all" + height="570" + layout="topleft" + left="5" + min_height="350" + top="5" + width="348" + name="panel_experience_info"> + <text + follows="top|left|right" + font="SansSerifHugeBold" + height="26" + layout="topleft" + left_pad="4" + name="title" + text_color="White" + top="2" + value="Experience Profile" + use_ellipses="true" + left="3" + right="-3"/> + <scroll_container + color="DkGray2" + follows="all" + height="532" + layout="topleft" + left="9" + name="xp_scroll" + opaque="true" + top_pad="10" + width="330"> + <panel + bg_alpha_color="DkGray2" + follows="top|left" + height="480" + layout="topleft" + left="0" + min_height="480" + name="scrolling_panel" + top="0" + width="315" + min_width="315"> + <layout_stack + follows="all" + height="480" + layout="topleft" + left="0" + top="0" + orientation="vertical" + width="315"> + <layout_panel + follows="all" + height="197" + layout="topleft" + left="0" + top="0" + auto_resize="false" + visible="true" + width="315" + name="image_panel"> + <texture_picker + enabled="false" + fallback_image="default_land_picture.j2c" + follows="left|top" + height="197" + layout="topleft" + left="10" + name="logo" + top="10" + width="290" /> + </layout_panel> + <layout_panel + follows="all" + height="19" + layout="topleft" + left="0" + top="5" + width="313" + auto_resize="false" + > + <text + follows="left|top|right" + font="SansSerifLarge" + height="14" + layout="topleft" + left="10" + name="experience_title" + text_color="white" + top="0" + use_ellipses="true" + value="Kyle's Superhero RPG" + width="288"/> + </layout_panel> + <layout_panel + follows="" + height="50" + layout="topleft" + left="0" + top="0" + auto_resize="false" + width="315" + name="description panel"> + <expandable_text + follows="left|top|right" + font="SansSerif" + height="50" + layout="topleft" + left="7" + name="experience_description" + top="0" + value="" + width="293"/> + </layout_panel> + <layout_panel + follows="all" + height="69" + layout="topleft" + left="0" + top="5" + width="313" + visible="true" + auto_resize="false" + name="location panel" + > + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Location" + width="290"> + Location: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left="10" + valign="center" + name="LocationTextText" + width="288"> + someplace + </text> + <button + follows="bottom|left" + height="23" + label="Teleport" + layout="topleft" + name="teleport_btn" + width="151" + left="10"/> + <button + follows="bottom|left" + height="23" + label="Map" + layout="topleft" + name="map_btn" + top_pad="-23" + width="101" + left_pad="5"/> + </layout_panel> + <layout_panel + follows="all" + height="53" + layout="topleft" + left="0" + top="5" + width="313" + visible="true" + auto_resize="false" + name="marketplace panel" + + > + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Location" + width="290"> + Marketplace store: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left="10" + valign="center" + name="LocationTextText" + width="288"> + someplace + </text> + </layout_panel> + <layout_panel + follows="left|top|right" + height="69" + left="0" + top="0" + auto_resize="false" + width="315" + > + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="ContentRating" + width="100"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left_pad="2" + valign="center" + name="ContentRatingText" + top_delta="-2" + width="188"> + Adult + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Owner" + width="100"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="18" + layout="topleft" + left_pad="2" + valign="center" + name="OwnerText" + top_delta="-2" + width="188"> + Kyle + </text> + <button + follows="bottom|left" + height="23" + label="Edit" + layout="topleft" + name="edit_btn" + top_pad="0" + width="151" + left="10"/> + <!-- + + + <expandable_text + allow_scroll="false" + bg_visible="false" + follows="left|top|right" + h_pad="0" + height="35" + width="280" + layout="topleft" + font="SansSerifBig" + font.style="BOLD" + left="10" + top_pad="10" + name="pick_name" + read_only="false" + text_color="white" + v_pad="0" + use_ellipses="true" + value="It's an experience" /> + + <text + follows="left|top" + height="16" + layout="topleft" + left="10" + top_pad="10" + value="Maturity level:" + width="130" /> + <icon + follows="top|left" + height="16" + image_name="unknown" + layout="topleft" + left_pad="10" + name="maturity_icon" + top_pad="-18" + width="18" /> + <text + follows="top|left" + height="16" + layout="topleft" + left_pad="5" + name="maturity_value" + top_pad="-14" + value="unknown" + width="118" /> + <panel + follows="left|top|right" + name="location_panel" + left="10" + width="280" + visible="false" + top_pad="10" + height="42"> + <text + follows="left|top|right" + height="16" + layout="topleft" + left="00" + top="0" + value="Location:" + width="280" /> + + <text + follows="left|top|right" + height="16" + layout="topleft" + left="0" + top_pad="10" + value="Location:" + width="280" /> + </panel> + + <panel + follows="left|top|right" + name="location_panel" + left="10" + width="280" + top_pad="10" + height="42"> + <text + follows="left|top|right" + height="16" + layout="topleft" + left="00" + top="0" + value="Location:" + width="280" /> + + <text + follows="left|top|right" + height="16" + layout="topleft" + left="0" + top_pad="10" + value="Location:" + width="280" /> + </panel> + +--> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml new file mode 100644 index 0000000000..c357f9e7d5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + layout="topleft" + left="0" + top="0" + width="300" + height="100" + min_height="100" + follows="all" + border="true" + name="experince_list_editor"> + <panel.string + name="loading"> + loading... + </panel.string> + <panel.string + name="panel_allowed"> + Allowed Experiences: + </panel.string> + <panel.string + name="panel_blocked"> + Blocked Experiences: + </panel.string> + <panel.string + name="panel_trusted"> + Key Experiences: + </panel.string> + <panel.string + name="no_results"> + (empty) + </panel.string> + <text + layout="topleft" + name="text_name" + left="3" + right="120" + height="12" + follows="left|top"> + Experience List + </text> + <text + layout="topleft" + name="text_count" + left="125" + top_pad="-12" + right="-1" + height="12" + follows="top|left"> + </text> + <name_list + draw_heading="false" + left="3" + width="225" + height="75" + follows="all" + name="experience_list"> + <name_list.columns + width="225" + user_resize="false" + name="experience_name" + label="Name"/> + </name_list> + <button + layout="topleft" + follows="top|right" + top_pad="-77" + left_pad="3" + width="65" + name="btn_add" + label="Add..."/> + <button + layout="topleft" + follows="top|right" + width="64" + name="btn_remove" + label="Remove"/> + <button + layout="topleft" + follows="top|right" + width="64" + name="btn_profile" + label="Profile..."/> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_item.xml b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml new file mode 100644 index 0000000000..a9777c51e7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> + +<panel + layout="topleft" + top="100" + left="5" + width="100" + height="19" + label="Experiences" + follows="top|right|left"> + <text + left="3" + top="3" + height="16" + width="177" + follows="all" + name="experience_name" + > + Dummy Name + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_experience_log.xml b/indra/newview/skins/default/xui/en/panel_experience_log.xml new file mode 100644 index 0000000000..6869a135d8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experience_log.xml @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> + +<panel + layout="topleft" + top="3" + left="3" + width="500" + height="300" + label="EVENTS" + bg_opaque_color="0 0.5 0 0.3" + follows="all"> + <string + name="no_events" + value="No events."/> + <string + name="loading" + value="loading..."/> + <layout_stack + layout="topleft" + top="0" + left="4" + right="-1" + bottom="-4" + orientation="vertical" + follows="all"> + <layout_panel + layout="topleft" + top="0" + left="1" + right="-1" + height="250" + follows="all"> + <scroll_list + draw_heading="true" + left="1" + right="-86" + height="250" + follows="all" + name="experience_log_list"> + <columns + width="100" + user_resize="true" + name="time" + label="Time"/> + <columns + width="100" + user_resize="true" + name="event" + label="Event"/> + <columns + width="100" + user_resize="true" + name="experience_name" + label="Experience"/> + <columns + width="100" + user_resize="true" + name="object_name" + label="Object"/> + </scroll_list> + + <button + layout="topleft" + follows="top|right" + name="btn_notify" + label="Notify" + top_pad="-225" + left_pad="5" + right="-1" + enabled="false"/> + + <button + layout="topleft" + follows="top|right" + name="btn_profile_xp" + label="Profile" + top_pad="5" + right="-1" + enabled="false"/> + + <button + layout="topleft" + follows="top|right" + name="btn_report_xp" + label="Report" + top_pad="5" + right="-1" + enabled="false"/> + </layout_panel> + <layout_panel + layout="topleft" + top="0" + left="1" + right="-1" + height="30" + min_height="30" + follows="all" + name="button_panel" + visible="true"> + <check_box + top="0" + follows="top|left" + height="26" + label="Notify All Events Days" + width="140" + name="notify_all" /> + + <spinner + top="5" + control_name="LogDays" + decimal_digits="0" + follows="left|top" + height="23" + increment="1" + initial_value="7" + label_width="30" + layout="topleft" + left_pad="5" + max_val="14" + min_val="0" + name="logsizespinner" + width="40" /> + <button + top="5" + left="280" + layout="topleft" + follows="top|left" + name="btn_clear" + label="Clear" + width="80" + enabled="false"/> + <button + top="5" + layout="topleft" + left_pad="5" + width="20" + follows="top|left" + name="btn_prev" + label="<" + enabled="false"/> + <button + top="5" + layout="topleft" + follows="top|left" + name="btn_next" + label=">" + left_pad="5" + width="20" + enabled="false"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_experience_search.xml b/indra/newview/skins/default/xui/en/panel_experience_search.xml new file mode 100644 index 0000000000..99ad3e7fe3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experience_search.xml @@ -0,0 +1,182 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + layout="topleft" + top="18" + left="0" + width="350" + height="330" + label="SEARCH" + follows="all"> + + <string + name="not_found"> + '[TEXT]' not found + </string> + <string + name="no_results"> + No results + </string> + <string + name="searching"> + Searching... + </string> + <string + name="loading"> + Loading... + </string> + <string + name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string + name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string + name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel + follows="all" + left="5" + right="-3" + bottom="-2" + top="0" + name="search_panel"> + <text + left="0" + follows="top|left|right" + right="-1"> + Enter part of the name: + </text> + <line_editor + left="0" + follows="left|top|right" + name="edit" + height="18" + right="-60"/> + <button label="Go" + follows="top|right" + top_pad="-18" + left_pad="2" + right="-1" + height="18" + name="find"/> + <text + top_pad="6" + left="0" + follows="top|left" + width="180"> + Max Content Rating: + </text> + <icons_combo_box + follows="left|top" + height="20" + label="Moderate" + layout="topleft" + name="maturity" + top_pad="-13" + left_pad="0" + right="-1"> + <icons_combo_box.drop_down_button + image_overlay="Parcel_M_Light" + image_overlay_alignment="left" + imgoverlay_label_space="3" + pad_left="3"/> + <icons_combo_box.item + label="Adult" + name="Adult" + value="42"> + <item.columns + halign="center" + type="icon" + value="Parcel_R_Light" + width="20"/> + </icons_combo_box.item> + <icons_combo_box.item + label="Moderate" + name="Mature" + value="21"> + <item.columns + halign="center" + type="icon" + value="Parcel_M_Light" + width="20"/> + </icons_combo_box.item> + <icons_combo_box.item + label="General" + name="PG" + value="13"> + <item.columns + halign="center" + type="icon" + value="Parcel_PG_Light" + width="20"/> + </icons_combo_box.item> + </icons_combo_box> + <scroll_list + draw_heading="true" + left="0" + right="-1" + height="239" + top_pad="4" + follows="all" + column_padding="5" + name="search_results"> + <columns + halign="center" + width="24" + name="maturity" + label=""/> + <columns + user_resize="true" + name="experience_name" + label="Name"/> + <columns + user_resize="true" + name="owner" + label="Owner"/> + </scroll_list> + + <button + follows="left|bottom" + height="23" + label="OK" + label_selected="OK" + name="ok_btn" + top_pad="3" + left="0" + width="95" /> + <button + follows="left|bottom" + height="23" + label="Cancel" + name="cancel_btn" + width="95" + left_pad="3" /> + <button + follows="left|bottom" + height="23" + label="View Profile" + name="profile_btn" + width="95" + left_pad="3" /> + <button + follows="left|bottom" + height="23" + label="<" + name="left_btn" + width="23" + left_pad="3" + enabled="false"/> + <button + follows="left|bottom" + height="23" + label=">" + name="right_btn" + width="23" + left_pad="3" + enabled="false" /> + + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_experiences.xml b/indra/newview/skins/default/xui/en/panel_experiences.xml new file mode 100644 index 0000000000..7691e684c0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_experiences.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> + +<panel + layout="topleft" + top="3" + left="3" + width="200" + height="300" + label="Experiences" + bg_opaque_color="0 0.5 0 0.3" + follows="all"> + <string + name="loading_experiences" + value="Loading experiences..."/> + <string + name="no_experiences" + value="No experiences."/> + <string + name="acquire" + value="Acquire an Experience" /> + <layout_stack + layout="topleft" + top="0" + left="4" + right="-1" + bottom="-4" + orientation="vertical" + follows="all"> + <layout_panel + layout="topleft" + top="0" + left="1" + right="-1" + height="250" + follows="all"> + <flat_list_view + name="experiences_list" + layout="topleft" + top="0" + left="1" + right="-1" + bottom="-1" + follows="all"> + </flat_list_view> + </layout_panel> + <layout_panel + layout="topleft" + top="0" + left="1" + right="-1" + height="24" + min_height="24" + follows="all" + name="button_panel" + visible="false"> + <button + layout="topleft" + left="2" + top="0" + follows="top|left" + name="btn_action" + enabled="true"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_generic_tip.xml b/indra/newview/skins/default/xui/en/panel_generic_tip.xml index eea92895f5..eea92895f5 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_generic_tip.xml +++ b/indra/newview/skins/default/xui/en/panel_generic_tip.xml diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 26f54bacbc..26f54bacbc 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml 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 b3326d8da6..95312edfb9 100755..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 @@ -176,6 +176,22 @@ background_visible="true" name="group_land_tab_panel" top="0" /> </accordion_tab> + <accordion_tab + expanded="false" + layout="topleft" + name="group_experiences_tab" + title="Experiences" + fit_panel="false"> + <panel + border="false" + class="panel_group_experiences" + filename="panel_experiences.xml" + follows="left|top|right" + layout="topleft" + left="0" + name="group_experiences_tab_panel" + top="0" /> + </accordion_tab> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml index ebb460deb0..ebb460deb0 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml 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 d4da55e32e..d4da55e32e 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index cfe3aeb7c9..cfe3aeb7c9 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index c8ce5cdebf..c8ce5cdebf 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml 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 cded4cf31a..cded4cf31a 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index dac4371a38..dac4371a38 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/en/panel_hint.xml b/indra/newview/skins/default/xui/en/panel_hint.xml index f7434f0330..f7434f0330 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_hint.xml +++ b/indra/newview/skins/default/xui/en/panel_hint.xml diff --git a/indra/newview/skins/default/xui/en/panel_hint_image.xml b/indra/newview/skins/default/xui/en/panel_hint_image.xml index df05d50dc5..df05d50dc5 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_hint_image.xml +++ b/indra/newview/skins/default/xui/en/panel_hint_image.xml diff --git a/indra/newview/skins/default/xui/en/panel_hud.xml b/indra/newview/skins/default/xui/en/panel_hud.xml index 3e9614a9b7..3e9614a9b7 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_hud.xml +++ b/indra/newview/skins/default/xui/en/panel_hud.xml diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml index 433a3181cd..433a3181cd 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 2e5d650902..2e5d650902 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml index 2e38835810..2e38835810 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/en/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index fd6e96b9a7..fd6e96b9a7 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 67a09949ce..67a09949ce 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 183ae2e824..183ae2e824 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 0518688f45..0a85477bf4 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -21,7 +21,7 @@ </panel.string> <panel.string name="ItemcountUnknown"> - + Fetched [ITEM_COUNT] Items [FILTER] </panel.string> <text type="string" diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml new file mode 100644 index 0000000000..2b17473a84 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + label="Marketplace" + name="Marketplace Panel" + follows="all" + layout="topleft" + width="308" + height="440"> + <panel + name="tool_panel" + follows="left|top|right" + layout="topleft" + height="30" + width="308" + top="0" + left="0"> + <menu_button + name="sort_btn" + tool_tip="View/sort options" + layout="topleft" + follows="top|left" + width="31" + height="25" + left="2" + menu_filename="menu_marketplace_view.xml" + image_hover_unselected="Toolbar_Middle_Over" + image_overlay="Conv_toolbar_sort" + image_selected="Toolbar_Middle_Selected" + image_unselected="Toolbar_Middle_Off" + menu_position="bottomleft"/> + <button + name="add_btn" + tool_tip="Create a new listing folder" + layout="topleft" + follows="top|left" + width="31" + height="25" + left_pad="2" + image_hover_unselected="Toolbar_Middle_Over" + image_overlay="Conv_toolbar_plus" + image_selected="Toolbar_Middle_Selected" + image_unselected="Toolbar_Middle_Off"/> + <button + name="audit_btn" + label="Check for Errors" + tool_tip="Check your marketplace listings" + layout="topleft" + follows="top|right" + width="97" + height="26" + left_pad="143"/> + </panel> + <panel + name="tab_container_panel" + follows="all" + layout="topleft" + default_tab_group="1" + width="308" + height="350"> + <filter_editor + text_pad_left="10" + follows="left|top|right" + height="23" + label="Filter Marketplace Listings" + layout="topleft" + left="0" + max_length_chars="300" + name="filter_editor" + top="0" + width="308" /> + <tab_container + name="marketplace_filter_tabs" + follows="all" + layout="topleft" + top="30" + left="0" + top_pad="0" + width="308" + height="320" + halign="center" + tab_height="30" + tab_group="1" + tab_position="top" + tab_min_width="50"> + </tab_container> + </panel> + <panel + name="marketplace_drop_zone" + mouse_opaque="true" + follows="bottom|left|right" + left="2" + width="306" + height="40" + background_visible="true" + background_opaque="true" + bg_alpha_image="none" + bg_alpha_color="EmphasisColor_35" + bg_opaque_image="Marketplace_Dropzone_Background" + border="true" + bevel_style="in" + visible="true"> + <text + type="string" + follows="bottom|left|right" + layout="topleft" + top="13" + height="20" + left="2" + width="306" + halign="center" + font="SansSerifMedium" + font_shadow="hard" + valign="top"> + Drop folders here to create new listings + </text> + </panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..8d5fa265e2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="ALL" + name="All Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + top="16" + left="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + start_folder.type="merchant" + tool_tip="Drag and drop items here to list them" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..44f507ad84 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="LISTED" + name="Active Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + allow_drop_on_root="false" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..871e8773c4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="UNASSOCIATED" + name="Unassociated Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..98bef04aa7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="UNLISTED" + name="Inactive Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + allow_drop_on_root="false" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml index 23e7814cad..23e7814cad 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_me.xml +++ b/indra/newview/skins/default/xui/en/panel_me.xml diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml index e844a15118..e844a15118 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml index d3a58fed58..d3a58fed58 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml index 1f580831f9..1f580831f9 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index c7edba21f8..c7edba21f8 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml index 4de56b424e..4de56b424e 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 1e43db08f7..1e43db08f7 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml index d1cb64f7ad..d1cb64f7ad 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index 94c468e1bb..94c468e1bb 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml diff --git a/indra/newview/skins/default/xui/en/panel_notification_list_item.xml b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml new file mode 100644 index 0000000000..efaaefd0e4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> +<panel + translate="false" + name="main_panel" + title="panel_notification_list_item" + visible="true" + top="0" + left="0" + width="331" + height="202" + layout="topleft" + follows="left|top|right|bottom" > + <!-- background_opaque="false" --> + <!-- background_visible="true"> --> + <!-- bg_alpha_color="PanelNotificationListItem"> --> + <panel.string + name="sender_resident_text"> + Sender: "[SENDER_RESIDENT]" + </panel.string> + <panel.string + name="group_name_text"> + Group: "[GROUP_NAME]" + </panel.string> + <panel.string + name="group_fee_text"> + Fee: [GROUP_FEE] + </panel.string> + <panel.string + name="item_condensed_height"> + 50 + </panel.string> + <panel.string + name="item_expanded_height"> + 87 + </panel.string> + <panel.string + name="expanded_height_resize_for_attachment"> + 27 + </panel.string> + + <panel top="0" left="0" width="331" height="196" bevel_style="none" layout="topleft" follows="left|top|right|bottom" name="panel_total_view"> + <layout_stack top="0" left="0" width="331" height="196" orientation="vertical" follows="left|top|right|bottom" name="item_vertical_stack"> + <layout_panel top="0" left="0" height="30" follows="left|top|right|bottom" layout="topleft" name="layout_panel_condensed_view" visible="false" background_opaque="false" background_visible="true" bg_alpha_color="SysWellItemUnselected"> + <panel border="true" top="0" left="5" height="30" bevel_style="none" layout="topleft" follows="left|top|right|bottom" name="panel_condensed_view"> + <layout_stack top="0" left="0" width="325" height="50" orientation="horizontal" follows="left|top|right|bottom" name="horizontal_stack"> + <layout_panel width="30" height="39" follows="left|top|right|bottom" name="layout_panel_right"> + <group_icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="group_icon" tool_tip="Group" default_icon_name="Generic_Group" visible="true"/> + <avatar_icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="avatar_icon" tool_tip="Avatar" default_icon_name="Generic_Person" visible="false"/> + <icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="system_notification_icon" tool_tip="Icon" image_name="System_Notification" visible="false"/> + </layout_panel> + <layout_panel width="260" height="50" name="layout_panel_middle"> + <panel border="false" top="0" width="260" height="38" bevel_style="none" follows="left|top|right" layout="topleft" name="main_info_panel"> + <panel border="false" top="0" left="0" width="260" height="19" bevel_style="none" follows="left|top|right|bottom" layout="topleft" name="notification_title_panel"> + <text allow_scroll="false" font="SansSerifSmall" top="6" left="0" width="260" height="12" layout="topleft" follows="right|left" text_color="White" + use_ellipses="true" word_wrap="true" mouse_opaque="false" name="notification_title" > + Group Name:Notice Title N o t i c e T i t l e N o t i c e T i t l e N o t i c e T i t l e N oticeTitle + </text> + <icon top="1" left="242" width="21" height="21" image_name="Icon_Attachment_Small" follows="right" mouse_opaque="true" name="attachment_icon" tool_tip="Attachment" visible="false"/> + </panel> + <panel border="false" top="23" left="0" width="260" height="15" bevel_style="none" follows="left|top|right|bottom" layout="topleft" name="sender_time_panel"> + <text allow_scroll="false" font="SansSerifSmall" top="0" left="0" width="170" height="13" layout="topleft" follows="right|left" + use_ellipses="true" word_wrap="false" mouse_opaque="false" name="sender_or_fee_box" visible="false"> + Sender: "Resident R e s i d e n t R e s i d e n t" + </text> + <text allow_scroll="false" font="SansSerifSmall" top="0" right="-5" width="95" height="13" follows="right" halign="right" layout="topleft" left_pad="5" + name="notification_time" value="2014/12/24 23:30" /> + </panel> + </panel> + </layout_panel> + <layout_panel width="18" height="48" follows="right|top|bottom" name="layout_panel_right"> + <panel top="0" left="0" width="17" height="39" follows="left|top|right|bottom" layout="topleft" name="close_expand_panel"> + <button top="0" left="0" width="17" height="17" layout="topleft" follows="top" name="close_btn" mouse_opaque="true" + tab_stop="false" image_unselected="Icon_Close_Foreground" image_selected="Icon_Close_Press" /> + <button bottom="-16" right="15" width="17" height="17" layout="topleft" follows="bottom" name="expand_btn" mouse_opaque="true" + tab_stop="false" image_unselected="Notification_Expand" image_selected="Notification_Expand" /> + </panel> + </layout_panel> + </layout_stack> + </panel> + </layout_panel> + <layout_panel top="0" left="0" height="196" follows="left|top|right|bottom" layout="topleft" name="layout_panel_expanded_view" visible="true" background_opaque="false" background_visible="true" bg_alpha_color="SysWellItemUnselected"> + <panel border="true" top="0" left="5" height="196" bevel_style="none" follows="left|top|right|bottom" layout="topleft" name="panel_expanded_view"> + <layout_stack top="0" left="0" width="325" height="196" orientation="horizontal" follows="left|top|right|bottom" name="horizontal_stack"> + <layout_panel width="30" height="170" follows="left|top|bottom" name="layout_panel_right_exp"> + <group_icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="group_icon_exp" tool_tip="Group" default_icon_name="Generic_Group" visible="true"/> + <avatar_icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="avatar_icon_exp" tool_tip="Avatar" default_icon_name="Generic_Person" visible="false"/> + <icon left="5" top="6" width="25" height="25" mouse_opaque="true" name="system_notification_icon_exp" tool_tip="Icon" image_name="System_Notification" visible="false"/> + <icon left="12" top="144" width="20" height="20" name="attachment_icon_exp" tool_tip="Attachment" image_name="Icon_Attachment_Large" follows="left" mouse_opaque="true" visible="false"/> + </layout_panel> + <layout_panel width="230" height="196" follows="left|top|right|bottom" name="layout_panel_middle_exp"> + <panel border="false" top="0" width="230" height="196" bevel_style="none" follows="left|top|right|bottom" layout="topleft" name="main_info_panel_expanded"> + <panel border="false" top="0" left="0" width="230" height="30" bevel_style="none" follows="left|top|right" layout="topleft" name="notification_title_panel_exp" > + <text allow_scroll="false" font="SansSerif" top="6" left="0" width="233" height="10" layout="topleft" follows="right|left" text_color="White" + use_ellipses="true" word_wrap="false" mouse_opaque="false" name="notification_title_exp"> + Notice Title Notice Title N o t i c e T i t l e N o t i c e T i t l e + </text> + <text allow_scroll="false" font="SansSerif" left="0" width="233" height="10" layout="topleft" follows="right|left" text_color="White" + use_ellipses="true" word_wrap="false" mouse_opaque="false" name="group_name_exp" parse_urls="false" visible="false"> + Group Name Group Name Group Na m e e + </text> + </panel> + <panel border="false" left="0" width="230" height="15" bevel_style="none" follows="left|top|right" layout="topleft" name="sender_time_panel_exp"> + <text allow_scroll="false" font="SansSerifSmall" top="0" left="0" width="145" height="13" layout="topleft" follows="right|left" + use_ellipses="true" word_wrap="false" mouse_opaque="false" name="sender_or_fee_box_exp" visible="false"> + Sender: "Resident R e s i d e n t R e s i d e n t" + </text> + <text allow_scroll="false" font="SansSerifSmall" top="0" right="-1" width="95" height="13" follows="right" halign="right" layout="topleft" left_pad="5" + name="notification_time_exp" value="2014/12/24 23:30" /> + </panel> + <panel border="false" left="0" height="115" width="230" bevel_style="none" follows="all" layout="topleft" name="notification_text_panel_exp" visible="true"> + <chat_editor is_expandable="true" top="0" left="0" width="230" height="110" layout="topleft" follows="left|right" + word_wrap="true" max_length="65536" name="notification_text_exp" parse_urls="true"> + Notice text goes here b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. bla bla bla bla bla bla bla bla bla bla bla bla bla . + </chat_editor> + </panel> + <panel border="false" left="1" bottom="-5" width="230" height="22" bevel_style="none" follows="left|right|bottom" layout="topleft" name="attachment_panel" visible="false"> + <text allow_scroll="false" font="SansSerifSmall" top="4" left="5" width="220" height="12" layout="topleft" follows="left|top|right|bottom" + use_ellipses="true" word_wrap="true" max_length="96" name="attachment_text"> + Attachment goes here b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a b l a bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla . + </text> + </panel> + <panel border="false" left="1" bottom="-5" height="55" bevel_style="none" follows="left|right|bottom" layout="topleft" name="button_panel" visible="false"> + <button top="2" left="0" width="65" height="23" layout="topleft" follows="left|top|bottom" name="join_btn" mouse_opaque="true" tab_stop="false" label = "Join"/> + <button top="2" left_pad="12" width="65" height="23" layout="topleft" follows="left|top|bottom" name="decline_btn" mouse_opaque="true" tab_stop="false" label = "Decline"/> + <button top="2" left_pad="12" width="65" height="23" layout="topleft" follows="left|top|bottom" name="info_btn" mouse_opaque="true" tab_stop="false" label = "Info"/> + </panel> + </panel> + </layout_panel> + <layout_panel width="18" follows="right|top|bottom" name="layout_panel_left_exp"> + <panel top="0" left="0" width="17" follows="left|top|right|bottom" layout="topleft" name="close_expand_panel_exp"> + <button top="0" left="2" width="17" height="17" layout="topleft" follows="top" name="close_expanded_btn" mouse_opaque="true" + tab_stop="false" image_unselected="Icon_Close_Foreground" image_selected="Icon_Close_Press" /> + <button bottom="5" left="0" width="17" height="17" layout="topleft" follows="bottom" name="condense_btn" mouse_opaque="true" + tab_stop="false" image_unselected="Notification_Condense" image_selected="Notification_Condense" /> + </panel> + </layout_panel> + </layout_stack> + </panel> + </layout_panel> + </layout_stack> + </panel> +</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 c3dc588ba2..c3dc588ba2 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml diff --git a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml index d5b6057233..d5b6057233 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml index dadbd9c9ab..dadbd9c9ab 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml index c80e5b168a..b2d8bb874b 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml @@ -3,7 +3,6 @@ name="inventory_outbox" start_folder.name="Outbox" show_empty_message="false" - show_load_status="false" start_folder.type="outbox" follows="all" layout="topleft" top="0" left="0" height="165" width="308" @@ -28,5 +27,5 @@ text_pad_right="4" arrow_size="12" max_folder_item_overlap="2"/> - <item allow_open="false"/> + <item allow_wear="false"/> </inventory_panel> 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 3f13cea58e..3f13cea58e 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 405d9513db..405d9513db 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml index 2c7a51f0e7..2c7a51f0e7 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index a0096adc01..a0096adc01 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml index d85b778db2..d85b778db2 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 2d4665c128..2cb06d6877 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -53,6 +53,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <string name="AltMiniMapToolTipMsg" value="[REGION](Double-click to teleport, shift-drag to pan)"/> + <string + name="GroupCountWithInfo" + value="You belong to [COUNT] groups, and can join [REMAINING] more. [secondlife:/// Want more?]"/> <tab_container bottom="-10" follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 79d190e1e0..79d190e1e0 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml 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 43d580844f..43d580844f 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 8def96cada..8def96cada 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 0dd75b1b55..0dd75b1b55 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 7d171490e8..7d171490e8 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml index 331a08b4bb..331a08b4bb 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index 525149d7ee..525149d7ee 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 2e778014c5..3e96160834 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -216,7 +216,7 @@ control_name="QAMode" follows="top|left" height="15" - label="Show Developer Menu" + label="Show Develop Menu" layout="topleft" left="30" name="show_develop_menu_check" 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 714dca7fac..714dca7fac 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index 8e867259c5..8e867259c5 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 9e825fe516..9e825fe516 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index f6665a1d5d..f6665a1d5d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml 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 6c485c0595..6c485c0595 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml index 8794e3bf95..8794e3bf95 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 323da2be38..323da2be38 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml 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 1e9a1aa27c..45b2b6ec27 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -224,19 +224,6 @@ 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"/> <text type="string" length="1" @@ -270,7 +257,7 @@ value="1" /> --> <combo_box.item - label="Download and install updates manually" + label="I will download and install updates manually" name="Install_manual" value="0" /> </combo_box> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 615abbaa89..615abbaa89 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml 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 8f90521bb2..8f90521bb2 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 860caf2d21..860caf2d21 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml index 112f12500d..112f12500d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml index fea5f1b19f..fea5f1b19f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml index aa38c49fae..aa38c49fae 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index 76a82212ae..76a82212ae 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_experiences.xml b/indra/newview/skins/default/xui/en/panel_region_experiences.xml new file mode 100644 index 0000000000..bced46f7dc --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_experiences.xml @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="320" + help_topic="panel_region_experience_tab" + label="Experiences" + name="Experiences" + layout="topleft" + left="0" + top="320" + width="480"> + <panel.string + name="trusted_estate_text"> +Any Experience may be Key. + +Key Experiences have permission to run on this estate. + +Additionally, if the estate does not allow public access, Residents participating in any Key Experience may enter the estate and can remain as long as they are in a Key Experience. + </panel.string> + <panel.string + name="allowed_estate_text"> +Only Experiences that are Land-Scope may be Allowed. + +Allowed Experiences have permission to run on this estate. + </panel.string> + <panel.string + name="blocked_estate_text"> +Only Grid-Scope Experiences may be Blocked. + +Blocked Experiences may not run on this estate. + </panel.string> + <panel.string + name="estate_caption"> + Changes to settings on this tab will affect all regions in the estate. + </panel.string> + <panel.string + name="allowed_parcel_text">Only Experiences that are Land-Scope may be Allowed. + +Allowed Experiences have permission to run on this parcel if they are not Blocked by the estate. + </panel.string> + <panel.string + name="blocked_parcel_text">Any Resident Experience may be Blocked. + +Blocked Experiences may not run on this parcel. + </panel.string> + <panel.string + name="parcel_caption"> + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="32" + layout="topleft" + left="10" + name="experiences_help_text" + top="14" + word_wrap="true"/> + <layout_stack + left="5" + layout="topleft" + follows="all" + right="-5" + height="260" + orientation="vertical"> + <layout_panel + follows="all" + height="93" + min_height="50" + width="530" + visible="false" + name="trusted_layout_panel"> + <panel follows="all" + width="330" + name="panel_trusted" + class="panel_experience_list_editor" + filename="panel_experience_list_editor.xml" /> + <text + layout="topleft" + name="trusted_text_help" + length="1" + top="5" + left_pad="5" + width="200" + height="200" + follows="top|right" + word_wrap="true"> + </text> + </layout_panel> + <layout_panel + height="93" + min_height="50" + follows="all" + width="530"> + <panel + width="330" + name="panel_allowed" + class="panel_experience_list_editor" + filename="panel_experience_list_editor.xml"/> + <text + layout="topleft" + name="allowed_text_help" + length="1" + top="5" + left_pad="5" + width="200" + height="200" + follows="top|right" + word_wrap="true"> + </text> + </layout_panel> + <layout_panel + height="93" + min_height="50" + follows="all" + width="530"> + <panel + width="330" + name="panel_blocked" + class="panel_experience_list_editor" + filename="panel_experience_list_editor.xml"/> + <text + layout="topleft" + name="blocked_text_help" + length="1" + top="5" + left_pad="5" + width="200" + height="200" + follows="top|right" + word_wrap="true"> + </text> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index 489d286e67..489d286e67 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml index 5d060c0a0d..5d060c0a0d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml index eb1b954e61..c56a5e17cd 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml @@ -1,75 +1,75 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - bevel_style="none" - border_style="line" - follows="left|top|right|bottom" + bevel_style="none" + border_style="line" + follows="left|top|right|bottom" height="522" - layout="topleft" - left="0" - name="script panel" - width="497"> - <panel.string - name="loading"> - Loading... - </panel.string> - <panel.string - name="can_not_view"> - You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. - </panel.string> - <panel.string - name="public_objects_can_not_run"> - Public Objects cannot run scripts - </panel.string> - <panel.string - name="script_running"> - Running - </panel.string> - <panel.string - name="Title"> - Script: [NAME] - </panel.string> - <panel.string - name="external_editor_not_set"> - Select an editor by setting the environment variable LL_SCRIPT_EDITOR or the ExternalEditor setting. - </panel.string> - <menu_bar - bg_visible="false" - follows="left|top" - height="18" - layout="topleft" - left="0" - mouse_opaque="false" - name="script_menu" - width="476"> - <menu - top="0" - height="62" - label="File" - layout="topleft" - left="0" - mouse_opaque="false" - name="File" - width="138"> - <menu_item_call - label="Save" - layout="topleft" - name="Save" /> - <menu_item_separator - layout="topleft" /> - <menu_item_call - label="Revert All Changes" - layout="topleft" - name="Revert All Changes" /> - <menu_item_separator - layout="topleft" /> - <menu_item_call - label="Load from file..." - layout="topleft" - name="LoadFromFile" /> - <menu_item_call - label="Save to file..." - layout="topleft" - name="SaveToFile" /> + layout="topleft" + left="0" + name="script panel" + width="497"> + <panel.string + name="loading"> + Loading... + </panel.string> + <panel.string + name="can_not_view"> + You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. + </panel.string> + <panel.string + name="public_objects_can_not_run"> + Public Objects cannot run scripts + </panel.string> + <panel.string + name="script_running"> + Running + </panel.string> + <panel.string + name="Title"> + Script: [NAME] + </panel.string> + <panel.string + name="external_editor_not_set"> + Select an editor by setting the environment variable LL_SCRIPT_EDITOR or the ExternalEditor setting. + </panel.string> + <menu_bar + bg_visible="false" + follows="left|top" + height="18" + layout="topleft" + left="0" + mouse_opaque="false" + name="script_menu" + width="476"> + <menu + top="0" + height="62" + label="File" + layout="topleft" + left="0" + mouse_opaque="false" + name="File" + width="138"> + <menu_item_call + label="Save" + layout="topleft" + name="Save" /> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Revert All Changes" + layout="topleft" + name="Revert All Changes" /> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Load from file..." + layout="topleft" + name="LoadFromFile" /> + <menu_item_call + label="Save to file..." + layout="topleft" + name="SaveToFile" /> <menu_item_separator layout="topleft" /> <menu_item_call @@ -80,95 +80,95 @@ function="Floater.Toggle" parameter="script_colors"/> </menu_item_call> - </menu> - <menu - top="0" - height="198" - label="Edit" - layout="topleft" - mouse_opaque="false" - name="Edit" - width="139"> - <menu_item_call - enabled="false" - label="Undo" - layout="topleft" - name="Undo" /> - <menu_item_call - enabled="false" - label="Redo" - layout="topleft" - name="Redo" /> - <menu_item_separator - layout="topleft" /> - <menu_item_call - enabled="false" - label="Cut" - layout="topleft" - name="Cut" /> - <menu_item_call - enabled="false" - label="Copy" - layout="topleft" - name="Copy" /> - <menu_item_call - enabled="false" - label="Paste" - layout="topleft" - name="Paste" /> - <menu_item_separator - layout="topleft" - name="separator2" /> - <menu_item_call - label="Select All" - layout="topleft" - name="Select All" /> - <menu_item_call - enabled="false" - label="Deselect" - layout="topleft" - name="Deselect" /> - <menu_item_separator - layout="topleft" - name="separator3" /> - <menu_item_call - label="Search / Replace..." - layout="topleft" - name="Search / Replace..." /> + </menu> + <menu + top="0" + height="198" + label="Edit" + layout="topleft" + mouse_opaque="false" + name="Edit" + width="139"> + <menu_item_call + enabled="false" + label="Undo" + layout="topleft" + name="Undo" /> + <menu_item_call + enabled="false" + label="Redo" + layout="topleft" + name="Redo" /> + <menu_item_separator + layout="topleft" /> + <menu_item_call + enabled="false" + label="Cut" + layout="topleft" + name="Cut" /> + <menu_item_call + enabled="false" + label="Copy" + layout="topleft" + name="Copy" /> + <menu_item_call + enabled="false" + label="Paste" + layout="topleft" + name="Paste" /> + <menu_item_separator + layout="topleft" + name="separator2" /> + <menu_item_call + label="Select All" + layout="topleft" + name="Select All" /> + <menu_item_call + enabled="false" + label="Deselect" + layout="topleft" + name="Deselect" /> + <menu_item_separator + layout="topleft" + name="separator3" /> + <menu_item_call + label="Search / Replace..." + layout="topleft" + name="Search / Replace..." /> <menu_item_call label="Go to line..." layout="topleft" name="Go to line..." /> - </menu> - <menu - top="0" - height="34" - label="Help" - layout="topleft" - mouse_opaque="false" - name="Help" - width="112"> - <menu_item_call - label="Help..." - layout="topleft" - name="Help..." /> - <menu_item_call - label="Keyword Help..." - layout="topleft" - name="Keyword Help..." /> - </menu> - </menu_bar> + </menu> + <menu + top="0" + height="34" + label="Help" + layout="topleft" + mouse_opaque="false" + name="Help" + width="112"> + <menu_item_call + label="Help..." + layout="topleft" + name="Help..." /> + <menu_item_call + label="Keyword Help..." + layout="topleft" + name="Keyword Help..." /> + </menu> + </menu_bar> <script_editor - left="0" - type="string" - length="1" - follows="left|top|right|bottom" - font="Monospace" + left="0" + type="string" + length="1" + follows="left|top|right|bottom" + font="Monospace" height="376" - ignore_tab="false" - layout="topleft" + ignore_tab="false" + layout="topleft" max_length="262144" - name="Script Editor" + name="Script Editor" width="487" text_color="ScriptText" default_color="ScriptText" @@ -177,51 +177,51 @@ text_readonly_color="ScriptText" bg_readonly_color="ScriptBackground" cursor_color="ScriptCursorColor" - enable_tooltip_paste="true" + enable_tooltip_paste="true" word_wrap="true" show_context_menu="true"> - Loading... + Loading... </script_editor> - <scroll_list + <scroll_list top_pad="10" left="0" - follows="left|right|bottom" - height="60" - layout="topleft" - name="lsl errors" + follows="left|right|bottom" + height="60" + layout="topleft" + name="lsl errors" width="487" /> - <text - follows="left|bottom" - height="12" - layout="topleft" + <text + follows="left|bottom" + height="12" + layout="topleft" left="0" - name="line_col" - width="128" /> - <combo_box - follows="left|bottom" - height="23" - label="Insert..." - layout="topleft" - name="Insert..." + name="line_col" + width="128" /> + <combo_box + follows="left|bottom" + height="23" + label="Insert..." + layout="topleft" + name="Insert..." width="128" /> - <button - follows="right|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - top_pad="-35" + <button + follows="right|bottom" + height="23" + label="Save" + label_selected="Save" + layout="topleft" + top_pad="-35" right="487" - name="Save_btn" - width="81" /> - <button - enabled="false" - follows="right|bottom" - height="23" - label="Edit..." - layout="topleft" - top_pad="-23" + name="Save_btn" + width="81" /> + <button + enabled="false" + follows="right|bottom" + height="23" + label="Edit..." + layout="topleft" + top_pad="-23" right="400" - name="Edit_btn" - width="81" /> + name="Edit_btn" + width="81" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_script_experience.xml b/indra/newview/skins/default/xui/en/panel_script_experience.xml new file mode 100644 index 0000000000..e798638751 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_script_experience.xml @@ -0,0 +1,97 @@ +<panel + name="script_experience" + title="EXPERIENCE" + width="400" + follows="top|left|right" + top="0" + left="0" + layout="topleft"> + <!-- <floater.string name="EXPERIENCE">EXPERIENCE!!!!</floater.string> + + <floater.string name="Script:">Script:</floater.string> + <floater.string name="Associated with:">Associated with:</floater.string> + <floater.string name="You can contribute:">You can contribute:</floater.string> + <floater.string name="Associate with:">Associate with:</floater.string> + <floater.string name="Yes">Yes</floater.string> + <floater.string name="No">No</floater.string> + <floater.string name="(none)"></floater.string> + <floater.string name="Choose Experience...">Choose Experience...</floater.string> + <floater.string name="You are not a contributor to any experiences.">You are not a contributor to any experiences.</floater.string> + --> + + <button name="Expand Experience" width="200" + height="35" + is_toggle="true" + tab_stop="false" + pad_left="35" + top="0" + left="3" + label="Experience" + halign="left" + handle_right_mouse="false" + follows="top|left|right" + image_unselected="MarketplaceBtn_Off" + image_selected="MarketplaceBtn_Selected"> + </button> + <check_box + follows="top|right" height="25" label="Uses Experience" left="215" width="0" top="0" name="enable_xp" + /> + <layout_stack + follows="top|left|right" + + width="384" + height="140" + name="xp_details" + left="4" + top="45" + orientation="horizontal" + layout="topleft" + visible="false"> + <layout_panel width="120" + height="140"> + <text > + Script: + </text> + <text bottom_delta="25"> + Associated with: + </text> + <text bottom_delta="25"> + You can contribute: + </text> + <text bottom_delta="25"> + Associate with: + </text> + </layout_panel> + + <layout_panel width="250" + height="140"> + <text > + EasySit Animator 1.2.4 + </text> + <text bottom_delta="25" + text_color="HTMLLinkColor" font.style="UNDERLINE"> + Kyle's Superhero RPG + </text> + <text bottom_delta="25"> + Yes + </text> + <combo_box left="0" bottom_delta="33" + label="Choose Experience..." + name="Experiences..." + follows="top|left|right" + /> + </layout_panel> + </layout_stack> + <text + follows="top|left|right" + width="400" + height="15" + bottom_delta="-12" + left="0" + halign="center" + name="No Experiences" + visible="false" + text_color="AlertCautionTextColor"> + You are not a contributor to any experiences. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml index 629d8567d1..629d8567d1 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml 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 c5e8bf5803..c5e8bf5803 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml index b0436bb6dc..b0436bb6dc 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml index a8cd380f20..a8cd380f20 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml index 1351f75623..1351f75623 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml index 557b04d281..557b04d281 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml 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 912f81f915..912f81f915 100755..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 diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml index ea579c6dae..d019a0a310 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml @@ -60,6 +60,10 @@ name="Large(512x512)" value="[i512,i512]" /> <combo_box.item + label="Current Window(512x512)" + name="CurrentWindow" + value="[i0,i0]" /> + <combo_box.item label="Custom" name="Custom" value="[i-1,i-1]" /> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index 188c9f8707..188c9f8707 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index 265217ef60..265217ef60 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml index 975b08be05..975b08be05 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml index d86cb92981..d86cb92981 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml index 46cbc1e87f..46cbc1e87f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml index 07642946f8..07642946f8 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml 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 dbf7bc031f..dbf7bc031f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml index 007b73a4bc..007b73a4bc 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml index 768efc2f3f..768efc2f3f 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 5c728718ef..5c728718ef 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index 37a904bca8..37a904bca8 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml index f5c559fe1d..f5c559fe1d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml +++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index cb6b2fafd8..2dae1025ec 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -117,26 +117,37 @@ name="Media" value="Media" /> </combo_box> - <combo_box - height="23" - layout="topleft" - left_pad="10" - name="combobox mattype" - top_delta="0" - width="155"> - <combo_box.item - label="Texture (diffuse)" - name="Texture (diffuse)" - value="Texture (diffuse)" /> - <combo_box.item - label="Bumpiness (normal)" - name="Bumpiness (normal)" - value="Bumpiness (normal)" /> - <combo_box.item - label="Shininess (specular)" - name="Shininess (specular)" - value="Shininess (specular)" /> - </combo_box> + <radio_group + control_name="ComboMaterialType" + height="50" + layout="topleft" + left_pad="20" + top_delta="-10" + width="150" + visible = "false" + name="radio_material_type"> + <radio_item + label="Texture (diffuse)" + name="Texture (diffuse)" + top="0" + layout="topleft" + height="16" + value="0"/> + <radio_item + label="Bumpiness (normal)" + layout="topleft" + top_pad="1" + height="16" + name="Bumpiness (normal)" + value="1"/> + <radio_item + label="Shininess (specular)" + name="Shininess (specular)" + height="16" + layout="topleft" + top_pad="1" + value="2"/> + </radio_group> <texture_picker can_apply_immediately="true" default_image_name="Default" @@ -148,7 +159,7 @@ left="10" name="texture control" tool_tip="Click to choose a picture" - top_pad="8" + top_pad="7" width="64" /> <text type="string" @@ -350,7 +361,7 @@ name="label shininess" left_pad="10" text_readonly_color="LabelDisabledColor" - top_delta="6" + top_delta="4" width="90"> Shininess </text> @@ -394,7 +405,7 @@ left_delta="-100" name="label glossiness" text_readonly_color="LabelDisabledColor" - top_pad="8" + top_pad="7" width="116"> Glossiness </text> @@ -520,7 +531,7 @@ left="10" name="tex gen" text_readonly_color="LabelDisabledColor" - top_pad="60" + top_pad="46" width="140"> Mapping </text> diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml index fc527f5f9d..fc527f5f9d 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml index 93e79b7328..93e79b7328 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/en/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml index 6adede0362..6adede0362 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/en/panel_world_map.xml b/indra/newview/skins/default/xui/en/panel_world_map.xml index 16860a6117..16860a6117 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_world_map.xml +++ b/indra/newview/skins/default/xui/en/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml index 1044cbfd2e..c2e7c706d6 100755..100644 --- a/indra/newview/skins/default/xui/en/role_actions.xml +++ b/indra/newview/skins/default/xui/en/role_actions.xml @@ -190,4 +190,16 @@ longdescription="Members in a Role with this Ability can control access and participation in group voice and text chat sessions." name="moderate group chat" value="37" /> </action_set> + <action_set + description="These Abilities include power to modify experiences owned by this group." + name="experience_tools_experience"> + <action description="Experience Admin" + longdescription="Members in a role with this ability can edit the meta-data for an experience." + name="experience admin" + value ="49" /> + <action description="Experience Contributor" + longdescription="Members in a role with this ability can contribute scripts for an experience." + name="experience contributor" + value ="50" /> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml index 1d98a84e25..1d98a84e25 100755..100644 --- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index d3e24a19ef..d3e24a19ef 100755..100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index 9be01c5d4f..fd14b13ed6 100755..100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -1,444 +1,476 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - follows="all" - height="570" - layout="topleft" - name="item properties" - help_topic="item_properties" - title="Item Profile" - width="333"> - <panel.string - name="unknown"> - (unknown) - </panel.string> - <panel.string - name="unknown_multiple"> - (unknown / multiple) - </panel.string> - <panel.string - name="public"> - (public) - </panel.string> - <panel.string - name="you_can"> - You can: - </panel.string> - <panel.string - name="owner_can"> - Owner can: - </panel.string> - <panel.string - name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </panel.string> - <panel.string - name="origin_inventory"> - (Inventory) - </panel.string> - <panel.string - name="origin_inworld"> - (Inworld) - </panel.string> - <icon - follows="top|right" - height="18" - image_name="Lock" - layout="topleft" - right="-15" - mouse_opaque="true" - name="IconLocked" - top="8" - width="18" /> - <button - follows="top|left" - height="24" - image_hover_unselected="BackButton_Over" - image_pressed="BackButton_Press" - image_unselected="BackButton_Off" - layout="topleft" - left="12" - name="back_btn" - tab_stop="false" - top="2" - width="30" - use_draw_context_alpha="false" /> - <text - follows="top|left|right" - font="SansSerifHugeBold" - height="26" - layout="topleft" - left_pad="3" - name="title" - text_color="LtGray" - top="2" - use_ellipses="true" - value="Item Profile" - width="275" /> - <text - follows="top|left|right" - height="13" - layout="topleft" - left="45" - name="origin" - text_color="LtGray_50" - use_ellipses="true" - value="(Inventory)" - width="275" /> - <scroll_container - color="DkGray2" - follows="all" - layout="topleft" - left="9" - name="item_profile_scroll" - opaque="true" - height="493" - width="313" - top="45"> - <panel - follows="left|top|right" - height="390" - help_topic="" - label="" - layout="topleft" - left="0" - name="item_profile" - top="0" - width="295"> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="5" - name="LabelItemNameTitle" - top="10" - width="78"> - Name: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|top|right" - height="20" - layout="topleft" - left_delta="78" - max_length_bytes="63" - name="LabelItemName" - top_delta="0" - width="210" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="5" - name="LabelItemDescTitle" - top_pad="10" - width="78"> - Description: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|top|right" - height="23" - layout="topleft" - left_delta="78" - max_length_bytes="127" - name="LabelItemDesc" - top_delta="-5" - width="210" /> - <text - type="string" - length="1" - follows="left|top" - height="23" - layout="topleft" - left="5" - name="LabelCreatorTitle" - top_pad="10" - width="78"> - Creator: - </text> - <avatar_icon - follows="top|left" - height="20" - default_icon_name="Generic_Person" - layout="topleft" - left_pad="0" - top_delta="-6" - mouse_opaque="true" - width="20" /> - <text - type="string" - follows="left|right|top" - font="SansSerifSmall" - height="15" - layout="topleft" - left_pad="5" - name="LabelCreatorName" - top_delta="6" - use_ellipses="true" - width="165"> - </text> - <button - follows="top|right" - height="16" + follows="all" + height="570" + layout="topleft" + name="item properties" + help_topic="item_properties" + title="Item Profile" + width="333"> + <panel.string + name="loading_experience"> + (loading) + </panel.string> + <panel.string + name="unknown"> + (unknown) + </panel.string> + <panel.string + name="unknown_multiple"> + (unknown / multiple) + </panel.string> + <panel.string + name="public"> + (public) + </panel.string> + <panel.string + name="you_can"> + You can: + </panel.string> + <panel.string + name="owner_can"> + Owner can: + </panel.string> + <panel.string + name="acquiredDate"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </panel.string> + <panel.string + name="origin_inventory"> + (Inventory) + </panel.string> + <panel.string + name="origin_inworld"> + (Inworld) + </panel.string> + <icon + follows="top|right" + height="18" + image_name="Lock" + layout="topleft" + right="-15" + mouse_opaque="true" + name="IconLocked" + top="8" + width="18" /> + <button + follows="top|left" + height="24" + image_hover_unselected="BackButton_Over" + image_pressed="BackButton_Press" + image_unselected="BackButton_Off" + layout="topleft" + left="12" + name="back_btn" + tab_stop="false" + top="2" + width="30" + use_draw_context_alpha="false" /> + <text + follows="top|left|right" + font="SansSerifHugeBold" + height="26" + layout="topleft" + left_pad="3" + name="title" + text_color="LtGray" + top="2" + use_ellipses="true" + value="Item Profile" + width="275" /> + <text + follows="top|left|right" + height="13" + layout="topleft" + left="45" + name="origin" + text_color="LtGray_50" + use_ellipses="true" + value="(Inventory)" + width="275" /> + <scroll_container + color="DkGray2" + follows="all" + layout="topleft" + left="9" + name="item_profile_scroll" + opaque="true" + height="493" + width="313" + top="45"> + <panel + follows="left|top|right" + height="390" + help_topic="" + label="" + layout="topleft" + left="0" + name="item_profile" + top="0" + width="295"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="5" + name="LabelItemNameTitle" + top="10" + width="78"> + Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="20" + layout="topleft" + left_delta="78" + max_length_bytes="63" + name="LabelItemName" + top_delta="0" + width="210" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="5" + name="LabelItemDescTitle" + top_pad="10" + width="78"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="23" + layout="topleft" + left_delta="78" + max_length_bytes="127" + name="LabelItemDesc" + top_delta="-5" + width="210" /> + <text + type="string" + length="1" + follows="left|top" + height="23" + layout="topleft" + left="5" + name="LabelCreatorTitle" + top_pad="10" + width="78"> + Creator: + </text> + <avatar_icon + follows="top|left" + height="20" + default_icon_name="Generic_Person" + layout="topleft" + left_pad="0" + top_delta="-6" + mouse_opaque="true" + width="20" /> + <text + type="string" + follows="left|right|top" + font="SansSerifSmall" + height="15" + layout="topleft" + left_pad="5" + name="LabelCreatorName" + top_delta="6" + use_ellipses="true" + width="165"> + </text> + <button + follows="top|right" + height="16" + image_selected="Inspector_I" + image_unselected="Inspector_I" + layout="topleft" + right="-5" + name="BtnCreator" + top_delta="-6" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + height="23" + layout="topleft" + left="5" + name="LabelOwnerTitle" + top_pad="10" + width="78"> + Owner: + </text> + <avatar_icon + follows="top|left" + height="20" + default_icon_name="Generic_Person" + layout="topleft" + left_pad="0" + top_delta="-6" + mouse_opaque="true" + width="20" /> + <text + type="string" + follows="left|right|top" + font="SansSerifSmall" + height="15" + layout="topleft" + left_pad="5" + name="LabelOwnerName" + top_delta="6" + use_ellipses="true" + width="165"> + </text> + <button + follows="top|right" + height="16" image_selected="Inspector_I" image_unselected="Inspector_I" + layout="topleft" + right="-5" + name="BtnOwner" + top_delta="-3" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + height="23" + layout="topleft" + left="5" + name="LabelAcquiredTitle" + top_pad="10" + width="78"> + Acquired: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="23" + layout="topleft" + left_delta="78" + name="LabelAcquiredDate" + top_delta="0" + width="210"> + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="5" + name="LabelItemExperienceTitle" + top_pad="0" + width="78" + visible="true"> + Experience: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="10" + layout="topleft" + left_delta="78" + name="LabelItemExperience" + top_delta="0" + width="210" + visible="true" + /> + <panel + border="false" + follows="left|top|right" + layout="topleft" + mouse_opaque="false" + name="perms_inv" + left="0" + top_pad="25" + height="155" + width="313"> + <text + type="string" + length="1" + left="10" + top_pad="13" + text_color="EmphasisColor" + height="15" + follows="left|top|right" + layout="topleft" + name="perm_modify" + width="200"> + You can: + </text> + <check_box + height="18" + label="Modify" + layout="topleft" + left="20" + name="CheckOwnerModify" + top_pad="0" + width="90" /> + <check_box + height="18" + label="Copy" + layout="topleft" + left_pad="0" + name="CheckOwnerCopy" + width="90" /> + <check_box + height="18" + label="Transfer" + layout="topleft" + left_pad="0" + name="CheckOwnerTransfer" + width="106" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="AnyoneLabel" + top_pad="8" + width="100"> + Anyone: + </text> + <check_box + height="18" + label="Copy" layout="topleft" - right="-5" - name="BtnCreator" - top_delta="-6" - width="16" /> - <text + left_pad="0" + name="CheckEveryoneCopy" + top_delta="-2" + width="150" /> + <text type="string" length="1" follows="left|top" - height="23" + height="16" layout="topleft" - left="5" - name="LabelOwnerTitle" - top_pad="10" - width="78"> - Owner: - </text> - <avatar_icon - follows="top|left" - height="20" - default_icon_name="Generic_Person" - layout="topleft" - left_pad="0" - top_delta="-6" - mouse_opaque="true" - width="20" /> - <text + left="10" + name="GroupLabel" + top_pad="8" + width="100"> + Group: + </text> + <check_box + height="18" + label="Share" + layout="topleft" + left_pad="0" + top_delta="-2" + name="CheckShareWithGroup" + tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." + width="150" /> + <text type="string" - follows="left|right|top" - font="SansSerifSmall" - height="15" - layout="topleft" - left_pad="5" - name="LabelOwnerName" - top_delta="6" - use_ellipses="true" - width="165"> - </text> - <button - follows="top|right" - height="16" - image_selected="Inspector_I" - image_unselected="Inspector_I" - layout="topleft" - right="-5" - name="BtnOwner" - top_delta="-3" - width="16" /> - <text - type="string" - length="1" - follows="left|top" - height="23" - layout="topleft" - left="5" - name="LabelAcquiredTitle" - top_pad="10" - width="78"> - Acquired: - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="23" - layout="topleft" - left_delta="78" - name="LabelAcquiredDate" - top_delta="0" - width="210"> - </text> - <panel - border="false" - follows="left|top|right" - layout="topleft" - mouse_opaque="false" - name="perms_inv" - left="0" - top_pad="25" - height="155" - width="313"> - <text - type="string" - length="1" - left="10" - top_pad="13" - text_color="EmphasisColor" - height="15" - follows="left|top|right" - layout="topleft" - name="perm_modify" - width="200"> - You can: - </text> - <check_box - height="18" - label="Modify" - layout="topleft" - left="20" - name="CheckOwnerModify" - top_pad="0" - width="90" /> - <check_box - height="18" - label="Copy" - layout="topleft" - left_pad="0" - name="CheckOwnerCopy" - width="90" /> - <check_box - height="18" - label="Transfer" - layout="topleft" - left_pad="0" - name="CheckOwnerTransfer" - width="106" /> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="AnyoneLabel" - top_pad="8" - width="100"> - Anyone: - </text> - <check_box - height="18" - label="Copy" - layout="topleft" - left_pad="0" - name="CheckEveryoneCopy" - top_delta="-2" - width="150" /> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="GroupLabel" - top_pad="8" - width="100"> - Group: - </text> - <check_box - height="18" - label="Share" - layout="topleft" - left_pad="0" - top_delta="-2" - name="CheckShareWithGroup" - tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." - width="150" /> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="NextOwnerLabel" - top_pad="8" - width="200" - word_wrap="true"> - Next owner: - </text> - <check_box - height="18" - label="Modify" - layout="topleft" - left="20" - top_pad="0" - name="CheckNextOwnerModify" - width="90" /> - <check_box - height="18" - label="Copy" - layout="topleft" - left_pad="0" - name="CheckNextOwnerCopy" - width="90" /> - <check_box - height="18" - label="Transfer" - layout="topleft" - left_pad="0" - name="CheckNextOwnerTransfer" - tool_tip="Next owner can give away or resell this object" - width="106" /> - </panel> + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="NextOwnerLabel" + top_pad="8" + width="200" + word_wrap="true"> + Next owner: + </text> <check_box - height="18" - label="For Sale" - layout="topleft" - left="20" - name="CheckPurchase" - top_pad="20" - width="100" /> - <combo_box - height="23" - left_pad="0" - layout="topleft" - follows="left|top" - name="ComboBoxSaleType" - width="170"> - <combo_box.item - name="Copy" - label="Copy" - value="2" /> - <combo_box.item - name="Contents" - label="Contents" - value="3" /> - <combo_box.item - name="Original" - label="Original" - value="1" /> - </combo_box> - <spinner - follows="left|top" - decimal_digits="0" - increment="1" - control_name="Edit Cost" - name="Edit Cost" - label="Price: L$" - label_width="75" - left="120" - width="170" - min_val="0" - height="23" - max_val="999999999" - top_pad="10"/> - </panel> - </scroll_container> - <panel - height="30" - layout="topleft" - name="button_panel" - left="5" - top_pad="0" - width="313"> - <button - height="23" - label="Cancel" - layout="topleft" - name="cancel_btn" - right="-1" - width="100" /> - </panel> - </panel> + height="18" + label="Modify" + layout="topleft" + left="20" + top_pad="0" + name="CheckNextOwnerModify" + width="90" /> + <check_box + height="18" + label="Copy" + layout="topleft" + left_pad="0" + name="CheckNextOwnerCopy" + width="90" /> + <check_box + height="18" + label="Transfer" + layout="topleft" + left_pad="0" + name="CheckNextOwnerTransfer" + tool_tip="Next owner can give away or resell this object" + width="106" /> + </panel> + <check_box + height="18" + label="For Sale" + layout="topleft" + left="20" + name="CheckPurchase" + top_pad="20" + width="100" /> + <combo_box + height="23" + left_pad="0" + layout="topleft" + follows="left|top" + name="ComboBoxSaleType" + width="170"> + <combo_box.item + name="Copy" + label="Copy" + value="2" /> + <combo_box.item + name="Contents" + label="Contents" + value="3" /> + <combo_box.item + name="Original" + label="Original" + value="1" /> + </combo_box> + <spinner + follows="left|top" + decimal_digits="0" + increment="1" + control_name="Edit Cost" + name="Edit Cost" + label="Price: L$" + label_width="75" + left="120" + width="170" + min_val="0" + height="23" + max_val="999999999" + top_pad="10"/> + </panel> + + </scroll_container> + <panel + height="30" + layout="topleft" + name="button_panel" + left="5" + top_pad="0" + width="313" + follows="top|right|left"> + <button + follows="top|right" + height="23" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="-1" + width="100" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index b84dce222f..b84dce222f 100755..100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f77678e5f8..60e2c0dcc7 100755..100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -22,10 +22,11 @@ <!-- about dialog/support string--> <string name="AboutHeader"> -[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> - <string name="AboutCompiler">Built with [COMPILER] version [COMPILER_VERSION]</string> + <string name="BuildConfig">Build Configuration [BUILD_CONFIG]</string> + <string name="AboutPosition"> You are at [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP]) SLURL: <nolink>[SLURL]</nolink> @@ -47,15 +48,15 @@ Graphics Card: [GRAPHICS_CARD] <string name="AboutLibs"> OpenGL Version: [OPENGL_VERSION] -libcurl Version: [LIBCURL_VERSION] J2C Decoder Version: [J2C_VERSION] Audio Driver Version: [AUDIO_DRIVER_VERSION] -Qt Webkit Version: [QT_WEBKIT_VERSION] +LLCEFLib/CEF Version: [LLCEFLIB_VERSION] Voice Server Version: [VOICE_VERSION] </string> <string name="AboutTraffic">Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)</string> <string name="ErrorFetchingServerReleaseNotesURL">Error fetching server release notes URL.</string> - + <string name="BuildConfiguration">Build Configuration</string> + <!-- progress --> <string name="ProgressRestoring">Restoring...</string> <string name="ProgressChangingResolution">Changing resolution...</string> @@ -96,7 +97,10 @@ Voice Server Version: [VOICE_VERSION] <string name="LoginFailed">Login failed.</string> <string name="Quit">Quit</string> <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string> - + + <string name="AgniGridLabel">Second Life Main Grid (Agni)</string> + <string name="AditiGridLabel">Second Life Beta Test Grid (Aditi)</string> + <string name="ViewerDownloadURL">http://secondlife.com/download</string> <string name="LoginFailedViewerNotPermitted"> The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer: @@ -235,15 +239,22 @@ Please try logging in again in a minute.</string> <string name="TooltipMustSingleDrop">Only a single item can be dragged here</string> <string name="TooltipTooManyWearables">You can't wear a folder containing more than [AMOUNT] items. You can change this limit in Advanced > Show Debug Settings > WearFolderLimit.</string> <string name="TooltipPrice" value="L$[AMOUNT]: "/> - - <string name="TooltipOutboxDragToWorld">You can not rez items in your merchant outbox</string> - <string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred.</string> - <string name="TooltipOutboxNotInInventory">Your merchant outbox can only accept items directly from your inventory</string> - <string name="TooltipOutboxWorn">You can not put items you are wearing into your merchant outbox</string> - <string name="TooltipOutboxCallingCard">You can not put calling cards into your merchant outbox</string> - <string name="TooltipOutboxFolderLevels">Depth of nested folders exceeds 3</string> - <string name="TooltipOutboxTooManyFolders">Subfolder count in top-level folder exceeds 20</string> - <string name="TooltipOutboxTooManyObjects">Item count in top-level folder exceeds 200</string> + <string name="TooltipSLIcon">This links to a page on the official SecondLife.com or LindenLab.com domain.</string> + + <string name="TooltipOutboxDragToWorld">You can't rez items from the Marketplace Listings folder</string> + <string name="TooltipOutboxWorn">You can't put items you are wearing in the Marketplace Listings folder</string> + <string name="TooltipOutboxFolderLevels">Depth of nested folders exceeds [AMOUNT]. Decrease the depth of folders-within-folders; box items if necessary.</string> + <string name="TooltipOutboxTooManyFolders">Subfolder count exceeds [AMOUNT]. Decrease the number of folders in your listing; box items if necessary.</string> + <string name="TooltipOutboxTooManyObjects">Item count exceeds [AMOUNT]. In order to sell more than [AMOUNT] items in one listing, you must box some of them.</string> + <string name="TooltipOutboxTooManyStockItems">Stock items count exceeds [AMOUNT].</string> + <string name="TooltipOutboxCannotDropOnRoot">You can only drop items or folders in the ALL or UNASSOCIATED tabs. Please select one of those tabs and move your item(s) or folder(s) again.</string> + <string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred</string> + <string name="TooltipOutboxNotInInventory">You can only put items from your inventory on the marketplace</string> + <string name="TooltipOutboxLinked">You can't put linked items or folders on the marketplace</string> + <string name="TooltipOutboxCallingCard">You can't put calling cards on the marketplace</string> + <string name="TooltipOutboxDragActive">You can't move a listed listing</string> + <string name="TooltipOutboxCannotMoveRoot">You can't move the marketplace listings root folder</string> + <string name="TooltipOutboxMixedStock">All items in a stock folder must have the same type and permission</string> <string name="TooltipDragOntoOwnChild">You can't move a folder into its child</string> <string name="TooltipDragOntoSelf">You can't move a folder into itself</string> @@ -268,6 +279,7 @@ Please try logging in again in a minute.</string> <string name="TooltipMapUrl">Click to view this location on a map</string> <string name="TooltipSLAPP">Click to run the secondlife:// command</string> <string name="CurrentURL" value=" CurrentURL: [CurrentURL]" /> + <string name="TooltipEmail">Click to compose an email</string> <!-- text for SLURL labels --> <string name="SLurlLabelTeleport">Teleport to</string> @@ -489,7 +501,7 @@ Please try logging in again in a minute.</string> <string name="NotConnected">Not Connected</string> <string name="AgentNameSubst">(You)</string> <!-- Substitution for agent name --> - <string name="JoinAnExperience">Join an experience</string> <!-- not used --> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess">Suppress alerts when managing estate access lists</string> <string name="OverrideYourAnimations">Replace your default animations</string> <string name="ScriptReturnObjects">Return objects on your behalf</string> @@ -2256,6 +2268,7 @@ For AI Character: Get the closest navigable point to the point provided. <string name="InventoryNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> <string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string> <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string> + <string name="MarketplaceNoMatchingItems">No items found. Check the spelling of your search string and try again.</string> <string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string> <string name="InventoryInboxNoItems">Your Marketplace purchases will appear here. You may then drag them into your inventory to use them.</string> <string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string> @@ -2283,16 +2296,45 @@ We are accessing your account on the [[MARKETPLACE_CREATE_STORE_URL] Marketplace <string name="InventoryOutboxError"> The [[MARKETPLACE_CREATE_STORE_URL] Marketplace store] is returning errors. </string> - + <string name="InventoryMarketplaceError"> +This feature is currently in Beta. Please add your name to this [http://goo.gl/forms/FCQ7UXkakz Google form] if you would like to participate. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle">Your Marketplace Listings folder is empty.</string> + <string name="InventoryMarketplaceListingsNoItemsTooltip"></string> + <string name="InventoryMarketplaceListingsNoItems"> + Drag folders to this area to list them for sale on the [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + + <string name="Marketplace Validation Log"></string> + <string name="Marketplace Validation Warning Stock">stock folder must be contained by a version folder</string> + <string name="Marketplace Validation Error Mixed Stock">: Error: all items in a stock folder must be no-copy and of the same type</string> + <string name="Marketplace Validation Error Subfolder In Stock">: Error: stock folder cannot contain subfolders</string> + <string name="Marketplace Validation Warning Empty">: Warning: folder doesn't contain any items</string> + <string name="Marketplace Validation Warning Create Stock">: Warning: creating stock folder</string> + <string name="Marketplace Validation Warning Create Version">: Warning: creating version folder</string> + <string name="Marketplace Validation Warning Move">: Warning : moving items</string> + <string name="Marketplace Validation Warning Delete">: Warning: folder content transfered to stock folder, removing empty folder</string> + <string name="Marketplace Validation Error Stock Item">: Error: no-copy items must be contained by a stock folder</string> + <string name="Marketplace Validation Warning Unwrapped Item">: Warning: items must be contained by a version folder</string> + <string name="Marketplace Validation Error">: Error: </string> + <string name="Marketplace Validation Warning">: Warning: </string> + <string name="Marketplace Validation Error Empty Version">: Warning: version folder must contain at least 1 item</string> + <string name="Marketplace Validation Error Empty Stock">: Warning: stock folder must contain at least 1 item</string> + + <string name="Marketplace Validation No Error">No errors or warnings to report</string> <string name="Marketplace Error None">No errors</string> - <string name="Marketplace Error Not Merchant">Error: Before sending items to the Marketplace you will need to set yourself up as a merchant (free of charge).</string> - <string name="Marketplace Error Empty Folder">Error: This folder has no contents.</string> - <string name="Marketplace Error Unassociated Products">Error: This item failed to upload because your merchant account has too many items unassociated with products. To fix this error, log in to the marketplace website and reduce your unassociated item count.</string> - - <string name="Marketplace Error Object Limit">Error: This item contains too many objects. Fix this error by placing objects together in boxes to reduce the total count to less than 200.</string> - <string name="Marketplace Error Folder Depth">Error: This item contains too many levels of nested folders. Reorganize it to a maximum of 3 levels of nested folders.</string> - <string name="Marketplace Error Unsellable Item">Error: This item can not be sold on the marketplace.</string> - <string name="Marketplace Error Internal Import">Error: There was a problem with this item. Try again later.</string> + <string name="Marketplace Error Prefix">Error: </string> + <string name="Marketplace Error Not Merchant">Before sending items to the Marketplace you will need to set yourself up as a merchant (free of charge).</string> + <string name="Marketplace Error Not Accepted">Cannot move item in that folder.</string> + <string name="Marketplace Error Unsellable Item">This item cannot be sold on the Marketplace.</string> + + <string name="MarketplaceNoID">no Mkt ID</string> + <string name="MarketplaceLive">listed</string> + <string name="MarketplaceActive">active</string> + <string name="MarketplaceMax">max</string> + <string name="MarketplaceStock">stock</string> + <string name="MarketplaceNoStock">out of stock</string> + <string name="MarketplaceUpdating">updating...</string> <string name="Open landmarks">Open landmarks</string> <string name="Unconstrained">Unconstrained</string> @@ -2500,6 +2542,7 @@ The [[MARKETPLACE_CREATE_STORE_URL] Marketplace store] is returning errors. <string name="CompileQueueInsufficientPermDownload">Insufficient permissions to download a script.</string> <string name="CompileQueueInsufficientPermFor">Insufficient permissions for</string> <string name="CompileQueueUnknownFailure">Unknown failure to download</string> + <string name="CompileNoExperiencePerm">Skipping script [SCRIPT] with Experience [EXPERIENCE].</string> <string name="CompileQueueTitle">Recompilation Progress</string> <string name="CompileQueueStart">recompile</string> <string name="ResetQueueTitle">Reset Progress</string> @@ -3955,6 +3998,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Inventory_Label">Inventory</string> <string name="Command_Map_Label">Map</string> <string name="Command_Marketplace_Label">Marketplace</string> + <string name="Command_MarketplaceListings_Label">Marketplace</string> <string name="Command_MiniMap_Label">Mini-map</string> <string name="Command_Move_Label">Walk / run / fly</string> <string name="Command_Outbox_Label">Merchant outbox</string> @@ -3985,6 +4029,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Inventory_Tooltip">View and use your belongings</string> <string name="Command_Map_Tooltip">Map of the world</string> <string name="Command_Marketplace_Tooltip">Go shopping</string> + <string name="Command_MarketplaceListings_Tooltip">Sell your creation</string> <string name="Command_MiniMap_Tooltip">Show nearby people</string> <string name="Command_Move_Tooltip">Moving your avatar</string> <string name="Command_Outbox_Tooltip">Transfer items to your marketplace for sale</string> @@ -4033,6 +4078,36 @@ Try enclosing path to the editor with double quotes. <!-- Spell check settings floater --> <string name="UserDictionary">[User]</string> + <!-- Experience Tools strings --> + <string name="experience_tools_experience">Experience</string> + <string name="ExperienceNameNull">(no experience)</string> + <string name="ExperienceNameUntitled">(untitled experience)</string> + <string name="Land-Scope">Land-Scope</string> + <string name="Grid-Scope">Grid-Scope</string> + <string name="Allowed_Experiences_Tab">ALLOWED</string> + <string name="Blocked_Experiences_Tab">BLOCKED</string> + <string name="Contrib_Experiences_Tab">CONTRIBUTOR</string> + <string name="Admin_Experiences_Tab">ADMIN</string> + <string name="Recent_Experiences_Tab">RECENT</string> + <string name="Owned_Experiences_Tab">OWNED</string> + <string name="ExperiencesCounter">([EXPERIENCES], max [MAXEXPERIENCES])</string> + <string name="ExperiencePermission1">take over your controls</string> + <string name="ExperiencePermission3">trigger animations on your avatar</string> + <string name="ExperiencePermission4">attach to your avatar</string> + <string name="ExperiencePermission9">track your camera</string> + <string name="ExperiencePermission10">control your camera</string> + <string name="ExperiencePermission11">teleport you</string> + <string name="ExperiencePermission12">automatically accept experience permissions</string> + <string name="ExperiencePermissionShortUnknown">perform an unknown operation: [Permission]</string> + <string name="ExperiencePermissionShort1">Take Controls</string> + <string name="ExperiencePermissionShort3">Trigger Animations</string> + <string name="ExperiencePermissionShort4">Attach</string> + <string name="ExperiencePermissionShort9">Track Camera</string> + <string name="ExperiencePermissionShort10">Control Camera</string> + <string name="ExperiencePermissionShort11">Teleport</string> + <string name="ExperiencePermissionShort12">Permission</string> + <string name="ExperiencePermissionShortUnknown">Unknown: [Permission]</string> + <!-- Conversation log messages --> <string name="logging_calls_disabled_log_empty"> Conversations are not being logged. To begin keeping a log, choose "Save: Log only" or "Save: Log and transcripts" under Preferences > Chat. @@ -4046,5 +4121,17 @@ Try enclosing path to the editor with double quotes. <string name="loading_chat_logs"> Loading... </string> - - </strings> + + <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES"> + The physics shape contains triangles which are too small. Try simplifying the physics model. + </string> + + <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH"> + The physics shape contains bad confirmation data. Try to correct the physics model. + </string> + + <string name="Mav_Details_MAV_UNKNOWN_VERSION"> + The physics shape does not have correct version. Set the correct version for the physics model. + </string> + +</strings> diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml index 5a9a16d344..5a9a16d344 100755..100644 --- a/indra/newview/skins/default/xui/en/teleport_strings.xml +++ b/indra/newview/skins/default/xui/en/teleport_strings.xml diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml index 55dde492ca..55dde492ca 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/accordion.xml +++ b/indra/newview/skins/default/xui/en/widgets/accordion.xml diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml index 6f68c99021..6f68c99021 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml index 7f8fac04d0..7f8fac04d0 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml index 8a4ccb19f9..8a4ccb19f9 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml index 738d150f64..738d150f64 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/badge.xml +++ b/indra/newview/skins/default/xui/en/widgets/badge.xml diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml index 0016a8cf53..0016a8cf53 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 2b2c3faf91..2b2c3faf91 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml index f9facb593a..f9facb593a 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml index c0a948931c..c0a948931c 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml 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 8947024e45..8947024e45 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/check_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 4bc295f747..4bc295f747 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml index 5f51f4afd9..5f51f4afd9 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index db6a9434df..db6a9434df 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml index d83f44737e..d83f44737e 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml index ab3de1eaab..ab3de1eaab 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml +++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml index 65f9a143e9..65f9a143e9 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml diff --git a/indra/newview/skins/default/xui/en/widgets/context_menu.xml b/indra/newview/skins/default/xui/en/widgets/context_menu.xml index 459706c689..459706c689 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/context_menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/context_menu.xml diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml index b8c39eec1d..b8c39eec1d 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml +++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml index 0534485ddd..0534485ddd 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/drop_down.xml b/indra/newview/skins/default/xui/en/widgets/drop_down.xml index 602250ace6..602250ace6 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/drop_down.xml +++ b/indra/newview/skins/default/xui/en/widgets/drop_down.xml diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml index 8c805da048..8c805da048 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml index c6331ec87b..c6331ec87b 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml +++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml index 2cc4abdd30..2cc4abdd30 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml index e05ddf9815..e05ddf9815 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index 807b67d112..807b67d112 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml index 83df10e417..83df10e417 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml index bbd53ccb12..bbd53ccb12 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml index 808683864d..808683864d 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml diff --git a/indra/newview/skins/default/xui/en/widgets/group_icon.xml b/indra/newview/skins/default/xui/en/widgets/group_icon.xml index 36ee6dd7eb..36ee6dd7eb 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/group_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/group_icon.xml diff --git a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml index 92080df154..92080df154 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml +++ b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml index cf8edfcedb..cf8edfcedb 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/icon.xml diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml index 590a4730a9..590a4730a9 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml index 7a7a6e9a09..7a7a6e9a09 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml index d5b10e7f51..92f815d4bf 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml @@ -1,3 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<inbox_inventory_panel show_load_status="false" - start_folder.type="inbox"/> +<inbox_inventory_panel start_folder.type="inbox"/> diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml index 8c171c387f..8c171c387f 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inspector.xml +++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml index da9059c819..da9059c819 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml index eaf148c5e4..d5efd723c4 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -3,7 +3,6 @@ bg_opaque_color="InventoryBackgroundColor" background_visible="true" background_opaque="true" - show_load_status="true" accepts_drag_and_drop="true" > <scroll diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml index a190da3909..a190da3909 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml +++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml diff --git a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml index 48bcb46533..48bcb46533 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml +++ b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml index a054960bf8..a054960bf8 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/line_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/list_view.xml b/indra/newview/skins/default/xui/en/widgets/list_view.xml index 2e976bc755..2e976bc755 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/list_view.xml diff --git a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml index ea1d89c975..ea1d89c975 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml +++ b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 61ec046649..61ec046649 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml index 13ac84beb2..13ac84beb2 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml index 27efa72563..27efa72563 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml index 563f3dc5c2..563f3dc5c2 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml index 24bda97f44..24bda97f44 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml index f6b06cb50b..f6b06cb50b 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml index 7452d685eb..7452d685eb 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml index 72af3924c1..72af3924c1 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml index 90b0625982..90b0625982 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml index bbcb008df4..bbcb008df4 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/name_editor.xml b/indra/newview/skins/default/xui/en/widgets/name_editor.xml index 21ba5c77f8..21ba5c77f8 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/name_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/name_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/name_list.xml b/indra/newview/skins/default/xui/en/widgets/name_list.xml index 3ae0f68227..3ae0f68227 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/name_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/name_list.xml diff --git a/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml new file mode 100644 index 0000000000..150225af27 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<notification_list_view + allow_select="false" + color="PanelFocusBackgroundColor" + item_pad="0" + keep_one_selected="false" + multi_select="false" + opaque="true"> + <flat_list_view + color="FloaterDefaultBackgroundColor" + follows="all" + layout="topleft" + name="notification_list" + left="1" + top="20" + height="0" + width="318"/> +</notification_list_view>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml index 9d71ceca2f..9d71ceca2f 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml +++ b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index b36f723831..b36f723831 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml diff --git a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml index 98707b8495..98707b8495 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml index 339e53fbb8..339e53fbb8 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/radio_group.xml b/indra/newview/skins/default/xui/en/widgets/radio_group.xml index ab3184d34b..ab3184d34b 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/radio_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/radio_group.xml diff --git a/indra/newview/skins/default/xui/en/widgets/radio_item.xml b/indra/newview/skins/default/xui/en/widgets/radio_item.xml index 3ddf18b2cb..3ddf18b2cb 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/radio_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/radio_item.xml 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 682dcf40d8..682dcf40d8 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml index 8a48fcb32d..8a48fcb32d 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml index a6d096a964..a6d096a964 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml index e43989c6c7..e43989c6c7 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml diff --git a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml index 40cbf5977a..40cbf5977a 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml diff --git a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml index ce84cfedc0..ce84cfedc0 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml index faa0404b35..faa0404b35 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/search_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml index 022564c12f..022564c12f 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/side_tray.xml +++ b/indra/newview/skins/default/xui/en/widgets/side_tray.xml diff --git a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml index aa8461d367..aa8461d367 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml +++ b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml 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 a120b1aec8..a120b1aec8 100755..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 diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml index f735d09476..f735d09476 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/slider.xml +++ b/indra/newview/skins/default/xui/en/widgets/slider.xml diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml index 0335213ed6..0335213ed6 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/spinner.xml b/indra/newview/skins/default/xui/en/widgets/spinner.xml index d7af6077e5..d7af6077e5 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/spinner.xml +++ b/indra/newview/skins/default/xui/en/widgets/spinner.xml diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml index 2ff9ada90a..2ff9ada90a 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/split_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/split_button.xml diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml index 0586119681..0586119681 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index d792e9f29c..d792e9f29c 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml diff --git a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml index 4f574d75d5..4f574d75d5 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml index 2102074674..2102074674 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/text.xml +++ b/indra/newview/skins/default/xui/en/widgets/text.xml 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 100571cc01..100571cc01 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml index b2da2147c1..b2da2147c1 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/textbase.xml +++ b/indra/newview/skins/default/xui/en/widgets/textbase.xml diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml index ba2fdf4f1f..ba2fdf4f1f 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml +++ b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml diff --git a/indra/newview/skins/default/xui/en/widgets/time.xml b/indra/newview/skins/default/xui/en/widgets/time.xml index b5bdd564a6..b5bdd564a6 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/time.xml +++ b/indra/newview/skins/default/xui/en/widgets/time.xml diff --git a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml index 48950a98ad..48950a98ad 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml index 9ca15ae50d..9ca15ae50d 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml +++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml index 0ace37a5dc..0ace37a5dc 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml +++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml diff --git a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml index f4dbb8f404..f4dbb8f404 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml +++ b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml diff --git a/indra/newview/skins/default/xui/en/widgets/view_border.xml b/indra/newview/skins/default/xui/en/widgets/view_border.xml index bf40e3086b..bf40e3086b 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/view_border.xml +++ b/indra/newview/skins/default/xui/en/widgets/view_border.xml diff --git a/indra/newview/skins/default/xui/en/widgets/web_browser.xml b/indra/newview/skins/default/xui/en/widgets/web_browser.xml index 676fafd828..676fafd828 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/web_browser.xml +++ b/indra/newview/skins/default/xui/en/widgets/web_browser.xml diff --git a/indra/newview/skins/default/xui/en/widgets/window_shade.xml b/indra/newview/skins/default/xui/en/widgets/window_shade.xml index 23eb2f13fb..23eb2f13fb 100755..100644 --- a/indra/newview/skins/default/xui/en/widgets/window_shade.xml +++ b/indra/newview/skins/default/xui/en/widgets/window_shade.xml diff --git a/indra/newview/skins/default/xui/en/xui_version.xml b/indra/newview/skins/default/xui/en/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/en/xui_version.xml +++ b/indra/newview/skins/default/xui/en/xui_version.xml diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index e0a2375067..9bf485ce40 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -1,82 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="ACERCA DE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Compilado con [COMPILER], versión [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordenadas globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memoria: [MEMORY_MB] MB -Versión del Sistema Operativo: [OS_VERSION] -Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR] -Tarjeta gráfica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Versión de OpenGL: [OPENGL_VERSION] - -Versión de libcurl: [LIBCURL_VERSION] -Versión de J2C Decoder: [J2C_VERSION] -Versión de Audio Driver: [AUDIO_DRIVER_VERSION] -Versión de Qt Webkit: [QT_WEBKIT_VERSION] -Versión del servidor de voz: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (no hay) - </floater.string> - <floater.string name="AboutTraffic"> - Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Error al obtener la URL de las notas de la versión del servidor. - </floater.string> <tab_container name="about_tab"> <panel label="Información" name="support_panel"> <button label="Copiar al portapapeles" name="copy_btn" width="165"/> </panel> <panel label="Créditos" name="credits_panel"> - <text name="linden_intro"> - Second Life ofrecido por los Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - con contribuciones de código abierto de: - </text> - <text_editor name="contrib_names"> - Dummy Name sustituido durante la ejecución - </text_editor> - <text name="trans_intro"> - y traducido por: - </text> - <text_editor name="trans_names"> - Dummy Name sustituido durante la ejecución - </text_editor> + <text name="linden_intro">Second Life ofrecido por los Lindens, +con contribuciones de código abierto de:</text> + <text_editor name="contrib_names">Dummy Name sustituido durante la ejecución</text_editor> </panel> <panel label="Licencias" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm y Werner Lemberg. GL Copyright (C) 1999-2004 Brian Paul. - GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University y David Luebke, Brenden Schubert, University of Virginia. google-perftools Copyright (c) 2005, Google Inc. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) @@ -87,7 +29,7 @@ Versión del servidor de voz: [VOICE_VERSION] SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + zlib Copyright (C) 1995-2012 Jean-loup Gailly y Mark Adler. El visor de Second Life usa Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (y sus licenciadores). Reservados todos los derechos. Vea los detalles en www.havok.com. @@ -95,8 +37,7 @@ Versión del servidor de voz: [VOICE_VERSION] Reservados todos los derechos. Consulte los detalles en licenses.txt. - Codificación del audio del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codificación del audio del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index f8c40d798a..10907344ae 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -308,9 +308,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <panel.string name="push_restrict_region_text"> Sin 'empujones' (prevalece lo marcado en la región) </panel.string> - <panel.string name="see_avs_text"> - Los avatares de otras parcelas pueden ver - </panel.string> <text name="allow_label"> Permitir a otros Residentes: </text> @@ -336,22 +333,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en 'seguro', desactivando el daño en combate. Si no, se activa el daño en combate."/> <check_box label="Sin 'empujones'" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/> <check_box label="Mostrar el sitio en la búsqueda (30 L$/semana)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> - <combo_box name="land category with adult"> - <combo_box.item label="Cualquier categoría" name="item0"/> - <combo_box.item label="Localización Linden" name="item1"/> - <combo_box.item label="Adulto" name="item2"/> - <combo_box.item label="Arte y Cultura" name="item3"/> - <combo_box.item label="Negocios" name="item4"/> - <combo_box.item label="Educativo" name="item5"/> - <combo_box.item label="Juegos de azar" name="item6"/> - <combo_box.item label="Entretenimiento" name="item7"/> - <combo_box.item label="Para recién llegados" name="item8"/> - <combo_box.item label="Parques y Naturaleza" name="item9"/> - <combo_box.item label="Residencial" name="item10"/> - <combo_box.item label="Compras" name="item11"/> - <combo_box.item label="Terreno en alquiler" name="item13"/> - <combo_box.item label="Otra" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Cualquier categoría" name="item0"/> <combo_box.item label="Localización Linden" name="item1"/> @@ -451,15 +432,9 @@ los media: <panel.string name="access_estate_defined"> (Definido por el Estado) </panel.string> - <panel.string name="allow_public_access"> - Permitir el acceso público ([MATURITY]) (Nota: Si no seleccionas esta opción, se crearán líneas de prohibición) - </panel.string> <panel.string name="estate_override"> Una o más de esta opciones está configurada a nivel del estado </panel.string> - <text name="Limit access to this parcel to:"> - Acceso a esta parcela - </text> <check_box label="Permitir el acceso público (si no seleccionas esta opción, se crearán líneas de prohibición)" name="public_access"/> <text name="Only Allow"> Permitir únicamente el acceso a los Residentes que: @@ -491,5 +466,6 @@ los media: <button label="Quitar" label_selected="Quitar" name="remove_banned"/> </panel> </panel> + <panel label="EXPERIENCIAS" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_activeim.xml b/indra/newview/skins/default/xui/es/floater_activeim.xml index 988786c1ae..988786c1ae 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_activeim.xml +++ b/indra/newview/skins/default/xui/es/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/es/floater_associate_listing.xml b/indra/newview/skins/default/xui/es/floater_associate_listing.xml new file mode 100644 index 0000000000..128382b277 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASOCIAR ARTÍCULOS"> + <text name="message">Id. de artículos:</text> + <line_editor name="listing_id">Escribe aquí el Id.</line_editor> + <button label="OK" name="OK"/> + <button label="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_auction.xml b/indra/newview/skins/default/xui/es/floater_auction.xml index 6faf19dbb5..6faf19dbb5 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_auction.xml +++ b/indra/newview/skins/default/xui/es/floater_auction.xml diff --git a/indra/newview/skins/default/xui/es/floater_autoreplace.xml b/indra/newview/skins/default/xui/es/floater_autoreplace.xml index 15abccc376..15abccc376 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/es/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/es/floater_avatar.xml b/indra/newview/skins/default/xui/es/floater_avatar.xml index 21d202309f..21d202309f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_avatar.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml index 49fce5d4ec..49fce5d4ec 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml index 54ef34264c..54ef34264c 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/es/floater_beacons.xml b/indra/newview/skins/default/xui/es/floater_beacons.xml index 49f990c84d..49f990c84d 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_beacons.xml +++ b/indra/newview/skins/default/xui/es/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/es/floater_build_options.xml b/indra/newview/skins/default/xui/es/floater_build_options.xml index a3e656cc17..a3e656cc17 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_build_options.xml +++ b/indra/newview/skins/default/xui/es/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml index 5cd8b3c01f..5cd8b3c01f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/es/floater_bumps.xml b/indra/newview/skins/default/xui/es/floater_bumps.xml index 6d4196ca7c..6d4196ca7c 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_bumps.xml +++ b/indra/newview/skins/default/xui/es/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/es/floater_buy_contents.xml b/indra/newview/skins/default/xui/es/floater_buy_contents.xml index 3563d4bd0f..3563d4bd0f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index 2c8848265f..2c8848265f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml index 08ea67d4cb..08ea67d4cb 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml index 005fe90318..005fe90318 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/es/floater_buy_object.xml b/indra/newview/skins/default/xui/es/floater_buy_object.xml index a774bc6d05..a774bc6d05 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml index b0704ab788..b0704ab788 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_camera.xml +++ b/indra/newview/skins/default/xui/es/floater_camera.xml diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml index 02369c9a43..02369c9a43 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/es/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/es/floater_choose_group.xml b/indra/newview/skins/default/xui/es/floater_choose_group.xml index a5967b814e..a5967b814e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/es/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/es/floater_color_picker.xml b/indra/newview/skins/default/xui/es/floater_color_picker.xml index ed168c09d5..ed168c09d5 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/es/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/es/floater_critical.xml b/indra/newview/skins/default/xui/es/floater_critical.xml index e5cbea8810..e5cbea8810 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_critical.xml +++ b/indra/newview/skins/default/xui/es/floater_critical.xml diff --git a/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml index 5e7df8530e..5e7df8530e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/es/floater_destinations.xml b/indra/newview/skins/default/xui/es/floater_destinations.xml index df18698d2f..df18698d2f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_destinations.xml +++ b/indra/newview/skins/default/xui/es/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/es/floater_display_name.xml b/indra/newview/skins/default/xui/es/floater_display_name.xml index f1a31a6776..f1a31a6776 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_display_name.xml +++ b/indra/newview/skins/default/xui/es/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml index 6ac46351db..6ac46351db 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml new file mode 100644 index 0000000000..d2130228bc --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="CONFIGURAR ALTURA DEL AVATAR"> + <slider label="Altura" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml index d2197b80fa..d2197b80fa 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml index f90ad59f78..f90ad59f78 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/es/floater_environment_settings.xml b/indra/newview/skins/default/xui/es/floater_environment_settings.xml index a9c5705d52..a9c5705d52 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/es/floater_event.xml b/indra/newview/skins/default/xui/es/floater_event.xml index d2724bf8b0..d2724bf8b0 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_event.xml +++ b/indra/newview/skins/default/xui/es/floater_event.xml diff --git a/indra/newview/skins/default/xui/es/floater_experience_search.xml b/indra/newview/skins/default/xui/es/floater_experience_search.xml new file mode 100644 index 0000000000..315b3363fa --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="ELEGIR EXPERIENCIA"/> diff --git a/indra/newview/skins/default/xui/es/floater_experienceprofile.xml b/indra/newview/skins/default/xui/es/floater_experienceprofile.xml new file mode 100644 index 0000000000..c37208647a --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (ninguno) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Perfil de experiencia"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Calificación: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Ubicación: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Propietario: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Grupo: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Permitir" name="allow_btn"/> + <button label="Olvidar" name="forget_btn"/> + <button label="Bloquear" name="block_btn"/> + <text name="privileged"> + Esta experiencia está habilitada para todos los residentes. + </text> + <button label="Denunciar una infracción" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Nombre:"/> + <text name="edit_experience_desc_label" value="Descripción:"/> + <button label="Grupo" name="Group_btn"/> + <text name="edit_ContentRating"> + Calificación: + </text> + <icons_combo_box label="Moderado" name="edit_ContentRatingText" tool_tip="Al aumentar el nivel de calificación de una experiencia se restablecen los permisos de todos los residentes que han permitido la experiencia."> + <icons_combo_box.item label="Adulto" name="Adult" value="42"/> + <icons_combo_box.item label="Moderado" name="Mature" value="21"/> + <icons_combo_box.item label="General" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Ubicación: + </text> + <button label="Configurar en mi posición" name="location_btn"/> + <button label="Borrar lugar" name="clear_btn"/> + <check_box label="Habilitar experiencia" name="edit_enable_btn" tool_tip=""/> + <check_box label="Ocultar en la búsqueda" name="edit_private_btn"/> + <text name="changes" value="Los cambios de una experiencia pueden tardar varios minutos en mostrarse en todas las regiones.+"/> + <button label="Anterior" name="cancel_btn"/> + <button label="Guardar" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_experiences.xml b/indra/newview/skins/default/xui/es/floater_experiences.xml new file mode 100644 index 0000000000..1a95aa3da8 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="EXPERIENCIAS"/> diff --git a/indra/newview/skins/default/xui/es/floater_facebook.xml b/indra/newview/skins/default/xui/es/floater_facebook.xml index 3b0e05b193..4bccc6ee57 100644 --- a/indra/newview/skins/default/xui/es/floater_facebook.xml +++ b/indra/newview/skins/default/xui/es/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="PUBLICAR EN FACEBOOK"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="ESTADO" name="panel_facebook_status"/> - <panel label="FOTO" name="panel_facebook_photo"/> - <panel label="ESTOY AQUÍ" name="panel_facebook_place"/> - <panel label="AMIGOS" name="panel_facebook_friends"/> - <panel label="CUENTA" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Error - </text> - <text name="connection_loading_text"> - Cargando... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="ESTADO" name="panel_facebook_status"/> + <panel label="FOTO" name="panel_facebook_photo"/> + <panel label="ESTOY AQUÍ" name="panel_facebook_place"/> + <panel label="AMIGOS" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Error + </text> + <text name="connection_loading_text"> + Cargando... + </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_fast_timers.xml b/indra/newview/skins/default/xui/es/floater_fast_timers.xml index eeb39583ef..eeb39583ef 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/es/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/es/floater_font_test.xml b/indra/newview/skins/default/xui/es/floater_font_test.xml index 9a665321a4..9a665321a4 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_font_test.xml +++ b/indra/newview/skins/default/xui/es/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/es/floater_gesture.xml b/indra/newview/skins/default/xui/es/floater_gesture.xml index d90de8c9f4..d90de8c9f4 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_gesture.xml +++ b/indra/newview/skins/default/xui/es/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/es/floater_god_tools.xml b/indra/newview/skins/default/xui/es/floater_god_tools.xml index 218a5effe8..218a5effe8 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml index c2327c96c4..c2327c96c4 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/es/floater_help_browser.xml b/indra/newview/skins/default/xui/es/floater_help_browser.xml index 5ebd7ad6e0..5ebd7ad6e0 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/es/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/es/floater_how_to.xml b/indra/newview/skins/default/xui/es/floater_how_to.xml index 4a57dc3643..4a57dc3643 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_how_to.xml +++ b/indra/newview/skins/default/xui/es/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/es/floater_hud.xml b/indra/newview/skins/default/xui/es/floater_hud.xml index e458913452..e458913452 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_hud.xml +++ b/indra/newview/skins/default/xui/es/floater_hud.xml diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml index f772441141..f772441141 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_im_container.xml +++ b/indra/newview/skins/default/xui/es/floater_im_container.xml 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 e5f48e3fd5..e5f48e3fd5 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_im_session.xml +++ b/indra/newview/skins/default/xui/es/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/es/floater_image_preview.xml b/indra/newview/skins/default/xui/es/floater_image_preview.xml index 84c5bfc824..84c5bfc824 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/es/floater_import_collada.xml b/indra/newview/skins/default/xui/es/floater_import_collada.xml index 7e9a00797a..7e9a00797a 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/es/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml index acbb25b713..acbb25b713 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/es/floater_inspect.xml b/indra/newview/skins/default/xui/es/floater_inspect.xml index d95653ddd0..d95653ddd0 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_inspect.xml +++ b/indra/newview/skins/default/xui/es/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml index bf84c3d808..a8a3ad08f8 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPIEDADES DEL ÍTEM DEL INVENTARIO"> - <floater.string name="unknown"> - (desconocido) - </floater.string> - <floater.string name="public"> - (público) - </floater.string> - <floater.string name="you_can"> - Usted puede: - </floater.string> - <floater.string name="owner_can"> - El propietario puede: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nombre: - </text> - <text name="LabelItemDescTitle"> - Descripción: - </text> - <text name="LabelCreatorTitle"> - Creador: - </text> + <floater.string name="unknown">(desconocido)</floater.string> + <floater.string name="public">(público)</floater.string> + <floater.string name="you_can">Usted puede:</floater.string> + <floater.string name="owner_can">El propietario puede:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nombre:</text> + <text name="LabelItemDescTitle">Descripción:</text> + <text name="LabelCreatorTitle">Creador:</text> <button label="Perfil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propietario: - </text> + <text name="LabelOwnerTitle">Propietario:</text> <button label="Perfil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Adquirido: - </text> - <text name="LabelAcquiredDate"> - May Mié 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Tú: - </text> + <text name="LabelAcquiredTitle">Adquirido:</text> + <text name="LabelAcquiredDate">May Mié 24 12:50:46 2006</text> + <text name="OwnerLabel">Tú:</text> <check_box label="Editar" name="CheckOwnerModify"/> <check_box label="Copiarlo" left_delta="88" name="CheckOwnerCopy"/> <check_box label="Revender" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Cualquiera: - </text> + <text name="AnyoneLabel">Cualquiera:</text> <check_box label="Copiar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartir" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Próximo propietario: - </text> + <text name="NextOwnerLabel" width="230">Próximo propietario:</text> <check_box label="Editar" name="CheckNextOwnerModify"/> <check_box label="Copiarlo" left_delta="88" name="CheckNextOwnerCopy"/> <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="En venta" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copia" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Contenidos" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Precio:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml index 6004034504..5d16ccd271 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Ropa" name="check_clothing"/> <check_box label="Gestos" name="check_gesture"/> <check_box label="Hitos" name="check_landmark"/> - <check_box label="Redes" name="check_mesh"/> <check_box label="Notas" name="check_notecard"/> + <check_box label="Redes" name="check_mesh"/> <check_box label="Objetos" name="check_object"/> <check_box label="Scripts" name="check_script"/> <check_box label="Sonidos" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - o - </text> + <radio_group name="date_search_direction"> + <radio_item label="Posteriores a" name="newer"/> + <radio_item label="Anteriores a" name="older"/> + </radio_group> <spinner label="horas atrás" name="spin_hours_ago"/> <spinner label="días atrás" name="spin_days_ago"/> <button bottom_delta="-30" label="Cerrar" label_selected="Cerrar" name="Close"/> diff --git a/indra/newview/skins/default/xui/es/floater_item_properties.xml b/indra/newview/skins/default/xui/es/floater_item_properties.xml new file mode 100644 index 0000000000..b5fd595c24 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPIEDADES DEL ARTÍCULO"/> diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml index 2c1804bd90..2c1804bd90 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_joystick.xml +++ b/indra/newview/skins/default/xui/es/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml index 227689a194..64a2124cd6 100644 --- a/indra/newview/skins/default/xui/es/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/es/floater_lagmeter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="MEDIDOR DEL LAG"> +<floater name="floater_lagmeter" title="MEDIDOR DE LAG"> <floater.string name="max_title_msg"> - Medidor del lag + Medidor de lag </floater.string> <floater.string name="max_width_px"> 360 @@ -25,25 +25,25 @@ Normal, ventana en segundo plano </floater.string> <floater.string name="client_frame_time_critical_msg"> - Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL] + Velocidad de fotogramas del cliente inferior a [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> - Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] + Velocidad de fotogramas del cliente entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> Normal </floater.string> <floater.string name="client_draw_distance_cause_msg"> - Posible causa: distancia de dibujo fijada muy alta + Causa posible: la distancia de dibujo configurada es demasiado grande </floater.string> <floater.string name="client_texture_loading_cause_msg"> - Posible causa: imágenes cargándose + Causa posible: se están cargando las imágenes </floater.string> <floater.string name="client_texture_memory_cause_msg"> - Posible causa: demasiadas imágenes en la memoria + Causa posible: demasiadas imágenes en la memoria </floater.string> <floater.string name="client_complex_objects_cause_msg"> - Posible causa: demasiados objetos complejos en la escena + Causa posible: la escena contiene demasiados objetos complejos </floater.string> <floater.string name="network_text_msg"> Red @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - La conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + La conexión pierde más de un [NETWORK_PACKET_LOSS_CRITICAL] % de paquetes </floater.string> <floater.string name="network_packet_loss_warning_msg"> - La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + La conexión pierde entre un [NETWORK_PACKET_LOSS_WARNING] % y un [NETWORK_PACKET_LOSS_CRITICAL] % de paquetes </floater.string> <floater.string name="network_performance_normal_msg"> Normal @@ -70,16 +70,16 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms + Tiempo de ping de la conexión superior a [NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_ping_warning_msg"> - El tiempo de conexión -ping- es de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + Tiempo de ping de la conexión de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_packet_loss_cause_msg"> - Quizá una mala conexión o un ancho de banda fijado demasiado alto. + Posible conexión deficiente o la preferencia 'Bandwidth' tiene un valor demasiado alto. </floater.string> <floater.string name="network_ping_cause_msg"> - Quizá una mala conexión o una aplicación de archivos compartidos. + Posible conexión deficiente o aplicación de archivos compartidos. </floater.string> <floater.string name="server_text_msg"> Servidor @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Frecuencia (framerate) por debajo de [SERVER_FRAME_RATE_CRITICAL] + Velocidad de fotogramas del simulador inferior a [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Frecuencia (framerate) entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] + Velocidad de fotogramas del simulador entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> Normal </floater.string> <floater.string name="server_physics_cause_msg"> - Posible causa: demasiados objetos físicos + Causa posible: demasiados objetos físicos </floater.string> <floater.string name="server_scripts_cause_msg"> - Posible causa: demasiados objetos con script + Causa posible: demasiados objetos programados </floater.string> <floater.string name="server_net_cause_msg"> - Posible causa: demasiado tráfico en la red + Causa posible: tráfico excesivo en la red </floater.string> <floater.string name="server_agent_cause_msg"> - Posible causa: demasiada gente moviéndose en la región + Causa posible: demasiadas personas moviéndose en la región </floater.string> <floater.string name="server_images_cause_msg"> - Posible causa: demasiados cálculos de imáganes + Causa posible: demasiados cálculos de imagen </floater.string> <floater.string name="server_generic_cause_msg"> - Posible causa: carga del simulador muy pesada + Causa posible: carga del simulador excesiva </floater.string> <floater.string name="smaller_label"> >> @@ -126,7 +126,7 @@ <floater.string name="bigger_label"> << </floater.string> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado de lag del cliente"/> <text name="client"> Cliente </text> @@ -134,7 +134,7 @@ Normal </text> <text left="30" name="client_lag_cause" right="-10"/> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado de lag de la red"/> <text name="network"> Red </text> @@ -142,7 +142,7 @@ Normal </text> <text left="30" name="network_lag_cause" right="-10"/> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado de lag del servidor"/> <text name="server"> Servidor </text> diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml index ed7055b3a1..ed7055b3a1 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/es/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml index 4ff54bccb5..9672f910ea 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> SCRIPT: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Anular la selección para quitar la experiencia actual + </floater.string> + <floater.string name="no_experiences"> + No tienes autorización para ninguna experiencia + </floater.string> + <floater.string name="add_experiences"> + Seleccionar para agregar una experiencia + </floater.string> + <floater.string name="show_experience_profile"> + Pulsar para ver el perfil de la experiencia + </floater.string> + <floater.string name="loading"> + Cargando... + </floater.string> <button label="Reiniciar" label_selected="Reiniciar" name="Reset"/> <check_box initial_value="true" label="Ejecutándose" left="4" name="running"/> <check_box initial_value="true" label="Mono" left="106" name="mono"/> + <check_box label="Usar experiencia(s):" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml index 43a7ede030..43a7ede030 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml index 69f638418e..69f638418e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_map.xml +++ b/indra/newview/skins/default/xui/es/floater_map.xml diff --git a/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml new file mode 100644 index 0000000000..2869af87f3 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ARTÍCULOS DEL MERCADO"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Cargando...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml new file mode 100644 index 0000000000..aab4b223dc --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditar artículos del Mercado"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_media_browser.xml b/indra/newview/skins/default/xui/es/floater_media_browser.xml index 9c4ef1eb2f..9c4ef1eb2f 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/es/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/es/floater_media_settings.xml b/indra/newview/skins/default/xui/es/floater_media_settings.xml index 3f7cef5785..3f7cef5785 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml index da8ba780bc..da8ba780bc 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml index a7c17fc136..a7c17fc136 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml index e2313bce99..e2313bce99 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml index 0e7b950bd3..0e7b950bd3 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_moveview.xml +++ b/indra/newview/skins/default/xui/es/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/es/floater_mute_object.xml b/indra/newview/skins/default/xui/es/floater_mute_object.xml index 4cd16a59ed..4cd16a59ed 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/es/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/es/floater_my_appearance.xml b/indra/newview/skins/default/xui/es/floater_my_appearance.xml index 774babf04e..774babf04e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/es/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/es/floater_my_inventory.xml b/indra/newview/skins/default/xui/es/floater_my_inventory.xml index 0efd9f1c6d..0efd9f1c6d 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/es/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/es/floater_object_weights.xml b/indra/newview/skins/default/xui/es/floater_object_weights.xml index 50c4f0518d..50c4f0518d 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/es/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/es/floater_openobject.xml b/indra/newview/skins/default/xui/es/floater_openobject.xml index b8b688df60..ab5bec3301 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_openobject.xml +++ b/indra/newview/skins/default/xui/es/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copiar al inventario" label_selected="Copiar al inventario" name="copy_to_inventory_button"/> - <button label="Copiar y vestirse" label_selected="Copiar y vestirse" name="copy_and_wear_button"/> + <text name="border_note"> + Copiar en el inventario y vestir + </text> + <button label="Añadir a vestuario" label_selected="Añadir a vestuario" name="copy_and_wear_button"/> + <button label="Reemplazar vestuario" label_selected="Reemplazar vestuario" name="copy_and_replace_button"/> + <button label="Solo copiar en el inventario" label_selected="Solo copiar en el inventario" name="copy_to_inventory_button"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_button"/> </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 index f48d0d2d0c..f48d0d2d0c 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/es/floater_outgoing_call.xml b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml index 5fd9dba9ac..5fd9dba9ac 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml index e3ee0563d2..e3ee0563d2 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml index e93ecc9e10..e93ecc9e10 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml index e6f864eef5..e6f864eef5 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml index ad9a43ad71..567f980446 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_pay.xml +++ b/indra/newview/skins/default/xui/es/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Pagar al grupo - </string> - <string name="payee_resident"> - Pagar al residente - </string> - <text left="5" name="payee_label" width="105"> - Pagar: - </text> - <icon name="icon_person" tool_tip="Persona"/> - <text left="115" name="payee_name"> - Nombre de prueba demasiado largo para comprobar la función de recorte - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text left="4" name="amount text"> - O elige cuánto: - </text> - <line_editor left="60" name="amount" width="55"/> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <string name="payee_group">Pagar al grupo</string> + <string name="payee_resident">Pagar al residente</string> + <text name="paying_text">Vas a pagar:</text> + <text left="115" name="payee_name">Nombre de prueba demasiado largo para comprobar la función de recorte</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar 1 L$" label_selected="Pagar 1 L$" name="fastpay 1"/> + <button label="Pagar 5 L$" label_selected="Pagar 5 L$" name="fastpay 5"/> + <button label="Pagar 10 L$" label_selected="Pagar 10 L$" name="fastpay 10"/> + <button label="Pagar 20 L$" label_selected="Pagar 20 L$" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Otra cantidad:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_pay_object.xml b/indra/newview/skins/default/xui/es/floater_pay_object.xml index 4767f4dfa0..8a5b028927 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/es/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string left="5" name="payee_group" width="110"> - Pagar al grupo - </string> - <string left="5" name="payee_resident" width="110"> - Pagar al residente - </string> - <icon name="icon_person" tool_tip="Persona"/> - <text left="120" name="payee_name" width="180"> - Ericacita Moostopolison - </text> - <text left="5" name="object_name_label" width="110"> - A través del objeto: - </text> + <string left="5" name="payee_group" width="110">Pagar al grupo</string> + <string left="5" name="payee_resident" width="110">Pagar al residente</string> + <text name="paying_text">Vas a pagar:</text> + <text left="120" name="payee_name" width="180">Ericacita Moostopolison</text> + <text left="5" name="object_name_label" width="110">A través del objeto:</text> <icon name="icon_object" tool_tip="Objetos"/> - <text left="120" name="object_name_text" width="180"> - El muy largo nombre de mi objeto - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - O elige cuánto: - </text> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <text left="120" name="object_name_text" width="180">El muy largo nombre de mi objeto</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar 1 L$" label_selected="Pagar 1 L$" name="fastpay 1"/> + <button label="Pagar 5 L$" label_selected="Pagar 5 L$" name="fastpay 5"/> + <button label="Pagar 10 L$" label_selected="Pagar 10 L$" name="fastpay 10"/> + <button label="Pagar 20 L$" label_selected="Pagar 20 L$" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Otra cantidad:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_people.xml b/indra/newview/skins/default/xui/es/floater_people.xml index f5a3eab008..f5a3eab008 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_people.xml +++ b/indra/newview/skins/default/xui/es/floater_people.xml diff --git a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml index 93e2088aba..93e2088aba 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/es/floater_picks.xml b/indra/newview/skins/default/xui/es/floater_picks.xml index 255aa5dcdc..255aa5dcdc 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_picks.xml +++ b/indra/newview/skins/default/xui/es/floater_picks.xml diff --git a/indra/newview/skins/default/xui/es/floater_places.xml b/indra/newview/skins/default/xui/es/floater_places.xml index 12c6548205..12c6548205 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_places.xml +++ b/indra/newview/skins/default/xui/es/floater_places.xml diff --git a/indra/newview/skins/default/xui/es/floater_post_process.xml b/indra/newview/skins/default/xui/es/floater_post_process.xml index 5c62ccde36..5c62ccde36 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_post_process.xml +++ b/indra/newview/skins/default/xui/es/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml index 372680f55d..372680f55d 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preferences.xml +++ b/indra/newview/skins/default/xui/es/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml index f656f5d662..f656f5d662 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/es/floater_preview_animation.xml b/indra/newview/skins/default/xui/es/floater_preview_animation.xml index c3f377a71a..c3f377a71a 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml index bd13262dcd..bd13262dcd 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml index d05a023279..d05a023279 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/es/floater_preview_sound.xml b/indra/newview/skins/default/xui/es/floater_preview_sound.xml index 62525c9536..62525c9536 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/es/floater_preview_texture.xml b/indra/newview/skins/default/xui/es/floater_preview_texture.xml index 4012191c78..4012191c78 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/es/floater_price_for_listing.xml b/indra/newview/skins/default/xui/es/floater_price_for_listing.xml index 8d6cdc86c0..8d6cdc86c0 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/es/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/es/floater_publish_classified.xml b/indra/newview/skins/default/xui/es/floater_publish_classified.xml index a1645f0c64..a1645f0c64 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/es/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/es/floater_region_debug_console.xml b/indra/newview/skins/default/xui/es/floater_region_debug_console.xml index 40851f897e..40851f897e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/es/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/es/floater_region_info.xml b/indra/newview/skins/default/xui/es/floater_region_info.xml index 46d0839238..46d0839238 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_region_info.xml +++ b/indra/newview/skins/default/xui/es/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml index fe37f125b8..8d8906c617 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/es/floater_report_abuse.xml @@ -76,7 +76,7 @@ <combo_box.item label="Terreno > Invasión > Objetos o texturas" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Terreno > Invasión > Partículas" name="Land__Encroachment__Particles"/> <combo_box.item label="Terreno > Invasión > Árboles/Plantas" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Apostar" name="Wagering_gambling"/> + <combo_box.item label="Incumplimiento de la política de juegos" name="Wagering_gambling"/> <combo_box.item label="Otra" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/es/floater_script_debug.xml b/indra/newview/skins/default/xui/es/floater_script_debug.xml index e7eddfd9f3..e7eddfd9f3 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/es/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml index db9fd5f36e..db9fd5f36e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/es/floater_script_limits.xml b/indra/newview/skins/default/xui/es/floater_script_limits.xml index 410f7b5e36..410f7b5e36 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/es/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/es/floater_script_preview.xml b/indra/newview/skins/default/xui/es/floater_script_preview.xml index 5c190a4682..5c190a4682 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/es/floater_script_queue.xml b/indra/newview/skins/default/xui/es/floater_script_queue.xml index 39c84103c4..39c84103c4 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/es/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/es/floater_script_search.xml b/indra/newview/skins/default/xui/es/floater_script_search.xml index 1ab6682023..1ab6682023 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_script_search.xml +++ b/indra/newview/skins/default/xui/es/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/es/floater_search.xml b/indra/newview/skins/default/xui/es/floater_search.xml index e24d8064a1..e24d8064a1 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_search.xml +++ b/indra/newview/skins/default/xui/es/floater_search.xml diff --git a/indra/newview/skins/default/xui/es/floater_select_key.xml b/indra/newview/skins/default/xui/es/floater_select_key.xml index 6503a3d5cb..6503a3d5cb 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_select_key.xml +++ b/indra/newview/skins/default/xui/es/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/es/floater_sell_land.xml b/indra/newview/skins/default/xui/es/floater_sell_land.xml index d883683945..d883683945 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/es/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml index 1da2e491e1..1da2e491e1 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml index 5e02bc52b7..c2c996aa8a 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Error al guardar en el equipo. </string> - <button name="advanced_options_btn" tool_tip="Opciones avanzadas"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [SIZE] kB - </text> + <button label="ACTUALIZAR" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - OPCIONES AVANZADAS - </text> <text name="layer_type_label"> Captura: </text> @@ -68,4 +59,10 @@ <combo_box.item label="Sin filtro" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] px (ancho) × [HEIGHT] px (alto) + </text> + <text name="file_size_label"> + [SIZE] kB + </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml index 0291f9e796..0291f9e796 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/es/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/es/floater_sound_preview.xml b/indra/newview/skins/default/xui/es/floater_sound_preview.xml index 8b8d9f13ce..8b8d9f13ce 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/es/floater_spellcheck.xml b/indra/newview/skins/default/xui/es/floater_spellcheck.xml index b664b96928..b664b96928 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/es/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml index bd86ed00da..bd86ed00da 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml index d1c5e867db..d1c5e867db 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_stats.xml +++ b/indra/newview/skins/default/xui/es/floater_stats.xml diff --git a/indra/newview/skins/default/xui/es/floater_sys_well.xml b/indra/newview/skins/default/xui/es/floater_sys_well.xml index 8c8190be55..8c8190be55 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/es/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/es/floater_telehub.xml b/indra/newview/skins/default/xui/es/floater_telehub.xml index 87cc9c1659..87cc9c1659 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_telehub.xml +++ b/indra/newview/skins/default/xui/es/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml index 01b024bc3e..01b024bc3e 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml index 59aaf7f74a..59aaf7f74a 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 159619decc..159619decc 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml diff --git a/indra/newview/skins/default/xui/es/floater_top_objects.xml b/indra/newview/skins/default/xui/es/floater_top_objects.xml index bb53f116c2..4eaa552fda 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/es/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> No se ha encontrado ninguno. </floater.string> + <floater.string name="URLs"> + URL + </floater.string> + <floater.string name="memory"> + Memoria (KB) + </floater.string> <text name="title_text"> Cargando... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Propietario" name="owner"/> <scroll_list.columns label="Posición" name="location"/> <scroll_list.columns label="Parcela" name="parcel"/> - <scroll_list.columns label="Tiempo" name="time"/> + <scroll_list.columns label="Fecha" name="time"/> <scroll_list.columns label="URLs" name="URLs"/> <scroll_list.columns label="Memoria (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml index 89092201d9..89092201d9 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_tos.xml +++ b/indra/newview/skins/default/xui/es/floater_tos.xml diff --git a/indra/newview/skins/default/xui/es/floater_toybox.xml b/indra/newview/skins/default/xui/es/floater_toybox.xml index 7275b0546b..7275b0546b 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_toybox.xml +++ b/indra/newview/skins/default/xui/es/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/es/floater_translation_settings.xml b/indra/newview/skins/default/xui/es/floater_translation_settings.xml index 765c9a05a2..765c9a05a2 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/es/floater_twitter.xml b/indra/newview/skins/default/xui/es/floater_twitter.xml index 050ee1a391..92f4fc5bba 100644 --- a/indra/newview/skins/default/xui/es/floater_twitter.xml +++ b/indra/newview/skins/default/xui/es/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="REDACTAR" name="panel_twitter_photo"/> - <panel label="CUENTA" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Error - </text> - <text name="connection_loading_text"> - Cargando... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="REDACTAR" name="panel_twitter_photo"/> + <panel label="CUENTA" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Error + </text> + <text name="connection_loading_text"> + Cargando... + </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_url_entry.xml b/indra/newview/skins/default/xui/es/floater_url_entry.xml index f7c85ff068..f7c85ff068 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/es/floater_url_entry.xml 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 eff21239be..eff21239be 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml index 02ebe80ff7..02ebe80ff7 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/es/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/es/floater_web_content.xml b/indra/newview/skins/default/xui/es/floater_web_content.xml index 5e02fad2dd..5e02fad2dd 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_web_content.xml +++ b/indra/newview/skins/default/xui/es/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml index 7dc47ca367..7dc47ca367 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/es/floater_window_size.xml b/indra/newview/skins/default/xui/es/floater_window_size.xml index 6c1ad02319..6c1ad02319 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_window_size.xml +++ b/indra/newview/skins/default/xui/es/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml index acc63e52a0..acc63e52a0 100755..100644 --- a/indra/newview/skins/default/xui/es/floater_world_map.xml +++ b/indra/newview/skins/default/xui/es/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml index 1d70fa6a90..1d70fa6a90 100755..100644 --- a/indra/newview/skins/default/xui/es/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/es/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/es/inspect_group.xml b/indra/newview/skins/default/xui/es/inspect_group.xml index ba10b19f41..ba10b19f41 100755..100644 --- a/indra/newview/skins/default/xui/es/inspect_group.xml +++ b/indra/newview/skins/default/xui/es/inspect_group.xml diff --git a/indra/newview/skins/default/xui/es/inspect_object.xml b/indra/newview/skins/default/xui/es/inspect_object.xml index d608b4a0f7..d608b4a0f7 100755..100644 --- a/indra/newview/skins/default/xui/es/inspect_object.xml +++ b/indra/newview/skins/default/xui/es/inspect_object.xml diff --git a/indra/newview/skins/default/xui/es/inspect_remote_object.xml b/indra/newview/skins/default/xui/es/inspect_remote_object.xml index f814e84a6f..f814e84a6f 100755..100644 --- a/indra/newview/skins/default/xui/es/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/es/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml index 997293a741..997293a741 100755..100644 --- a/indra/newview/skins/default/xui/es/language_settings.xml +++ b/indra/newview/skins/default/xui/es/language_settings.xml 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 index f2367c72a3..f2367c72a3 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml index 7698348c00..7698348c00 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml 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 5acd0c327a..02819e6816 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mi apariencia" name="Change Outfit"/> <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/> <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/> + <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml index e3299b0a6b..e3299b0a6b 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml index 244099214a..244099214a 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml 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 717b46ac74..d60a3434cf 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mi apariencia" name="Chenge Outfit"/> <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/> <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/> + <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml index 7541530601..7541530601 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/es/menu_cof_body_part.xml b/indra/newview/skins/default/xui/es/menu_cof_body_part.xml index 56b95bdc3b..56b95bdc3b 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/es/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/es/menu_cof_clothing.xml b/indra/newview/skins/default/xui/es/menu_cof_clothing.xml index 3c0c588284..3c0c588284 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/es/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml index a889992b8a..a889992b8a 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/es/menu_edit.xml b/indra/newview/skins/default/xui/es/menu_edit.xml index 96fc9d8881..96fc9d8881 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_edit.xml +++ b/indra/newview/skins/default/xui/es/menu_edit.xml diff --git a/indra/newview/skins/default/xui/es/menu_favorites.xml b/indra/newview/skins/default/xui/es/menu_favorites.xml index 85210d5c49..85210d5c49 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_favorites.xml +++ b/indra/newview/skins/default/xui/es/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml index 24706eb2c8..24706eb2c8 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/es/menu_group_plus.xml b/indra/newview/skins/default/xui/es/menu_group_plus.xml index 6b26ba42c4..6b26ba42c4 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/es/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml index 9945908c4f..9945908c4f 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml index e11e9bdc58..e11e9bdc58 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml index a5e60ea40b..a5e60ea40b 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml index 492801026c..492801026c 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml index 82fc8ddd39..82fc8ddd39 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml 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 9d0a8c50ef..9d0a8c50ef 100755..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 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 29ad718fdd..29ad718fdd 100755..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 diff --git a/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml index 20d99afde1..20d99afde1 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index cd5bc7917d..5d108abf67 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Crear artículos" name="Marketplace Create Listing"/> + <menu_item_call label="Asociar artículos" name="Marketplace Associate Listing"/> + <menu_item_call label="Obtener (actualizar) artículos" name="Marketplace Get Listing"/> + <menu_item_call label="Comprobar errores" name="Marketplace Check Listing"/> + <menu_item_call label="Editar artículos" name="Marketplace Edit Listing"/> + <menu_item_call label="Incluir en la lista" name="Marketplace List"/> + <menu_item_call label="Retirar de la lista" name="Marketplace Unlist"/> + <menu_item_call label="Activar" name="Marketplace Activate"/> + <menu_item_call label="Desactivar" name="Marketplace Deactivate"/> <menu_item_call label="Compartir" name="Share"/> <menu_item_call label="Comprar" name="Task Buy"/> <menu_item_call label="Abrir" name="Task Open"/> @@ -86,6 +95,7 @@ <menu_item_call label="Añadir" name="Wearable Add"/> <menu_item_call label="Quitarse" name="Take Off"/> <menu_item_call label="Copiar al Buzón de salida de comerciante" name="Merchant Copy"/> - <menu_item_call label="Enviar al Mercado" name="Marketplace Send"/> + <menu_item_call label="Copiar en artículos del Mercado" name="Marketplace Copy"/> + <menu_item_call label="Mover a artículos del Mercado" name="Marketplace Move"/> <menu_item_call label="--sin opciones--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_inventory_add.xml b/indra/newview/skins/default/xui/es/menu_inventory_add.xml index f17cfe4ceb..f17cfe4ceb 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml index 0e9644629e..c24910066b 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Ordenar por los más recientes" name="sort_by_recent"/> <menu_item_check label="Ordenar las carpetas siempre alfabéticamente" name="sort_folders_by_name"/> <menu_item_check label="Las carpetas del sistema, arriba" name="sort_system_folders_to_top"/> - <menu_item_call label="Ver los filtros" name="show_filters"/> + <menu_item_call label="Ver los filtros..." name="show_filters"/> <menu_item_call label="Restablecer los filtros" name="reset_filters"/> <menu_item_call label="Cerrar todas las carpetas" name="close_folders"/> <menu_item_call label="Vaciar Objetos Perdidos" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml index 2097628356..2097628356 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_land.xml +++ b/indra/newview/skins/default/xui/es/menu_land.xml diff --git a/indra/newview/skins/default/xui/es/menu_landmark.xml b/indra/newview/skins/default/xui/es/menu_landmark.xml index f69b1539b8..f69b1539b8 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_landmark.xml +++ b/indra/newview/skins/default/xui/es/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 336572f0cb..336572f0cb 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml diff --git a/indra/newview/skins/default/xui/es/menu_marketplace_view.xml b/indra/newview/skins/default/xui/es/menu_marketplace_view.xml new file mode 100644 index 0000000000..c46a9f490e --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordenar por cantidad en stock (de baja a alta)" name="sort_by_stock_amount"/> + <menu_item_check label="Mostrar solamente las carpetas de artículos" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_media_ctrl.xml b/indra/newview/skins/default/xui/es/menu_media_ctrl.xml index b4dfe9907a..b4dfe9907a 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/es/menu_media_ctrl.xml 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 07d1b08572..07d1b08572 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/es/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml index 0d4f1314c9..0d4f1314c9 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/es/menu_navbar.xml b/indra/newview/skins/default/xui/es/menu_navbar.xml index 63e5468020..63e5468020 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_navbar.xml +++ b/indra/newview/skins/default/xui/es/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/es/menu_nearby_chat.xml b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml index 94b281b6c7..94b281b6c7 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/es/menu_notification_well_button.xml b/indra/newview/skins/default/xui/es/menu_notification_well_button.xml index 0562d35be7..0562d35be7 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/es/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml index 0de9907660..0de9907660 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_object.xml +++ b/indra/newview/skins/default/xui/es/menu_object.xml diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml index a99c889bb0..a99c889bb0 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml index 56e64c729f..56e64c729f 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/es/menu_outfit_tab.xml b/indra/newview/skins/default/xui/es/menu_outfit_tab.xml index 4136082a62..4136082a62 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/es/menu_outfit_tab.xml 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 f6eedd1170..f6eedd1170 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml 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 3899ad9e96..3899ad9e96 100755..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 diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml index 125e25cd1a..125e25cd1a 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/es/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml index 1bd3efb611..1bd3efb611 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml index 09bb119d5a..09bb119d5a 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml 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 9df160f5ad..9df160f5ad 100755..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 diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml index 1403e4db01..1403e4db01 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml index e4aaa89110..e4aaa89110 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/es/menu_picks.xml b/indra/newview/skins/default/xui/es/menu_picks.xml index 9da68d7c9b..9da68d7c9b 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_picks.xml +++ b/indra/newview/skins/default/xui/es/menu_picks.xml diff --git a/indra/newview/skins/default/xui/es/menu_picks_plus.xml b/indra/newview/skins/default/xui/es/menu_picks_plus.xml index cc59bf1d29..cc59bf1d29 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/es/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/es/menu_place.xml b/indra/newview/skins/default/xui/es/menu_place.xml index 675f0699e9..675f0699e9 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_place.xml +++ b/indra/newview/skins/default/xui/es/menu_place.xml diff --git a/indra/newview/skins/default/xui/es/menu_place_add_button.xml b/indra/newview/skins/default/xui/es/menu_place_add_button.xml index 4b2f908a06..4b2f908a06 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/es/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml index 4051ff4075..4051ff4075 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml index c92bd19787..c92bd19787 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/es/menu_profile_overflow.xml b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml index 5ee8c50949..5ee8c50949 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/es/menu_save_outfit.xml b/indra/newview/skins/default/xui/es/menu_save_outfit.xml index a04ec75b60..a04ec75b60 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/es/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/es/menu_script_chiclet.xml b/indra/newview/skins/default/xui/es/menu_script_chiclet.xml index f517baf566..f517baf566 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/es/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/es/menu_slurl.xml b/indra/newview/skins/default/xui/es/menu_slurl.xml index ca19acec6e..ca19acec6e 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_slurl.xml +++ b/indra/newview/skins/default/xui/es/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml index b708f3bc20..b708f3bc20 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml index 1ff555b727..1ff555b727 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml index 17e90422a5..17e90422a5 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/es/menu_text_editor.xml b/indra/newview/skins/default/xui/es/menu_text_editor.xml index 6253463725..6253463725 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/es/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/es/menu_toolbars.xml b/indra/newview/skins/default/xui/es/menu_toolbars.xml index 63f3dc43bd..63f3dc43bd 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/es/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/es/menu_topinfobar.xml b/indra/newview/skins/default/xui/es/menu_topinfobar.xml index 2125fd51b2..2125fd51b2 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/es/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml index 610d65465d..610d65465d 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_experience.xml b/indra/newview/skins/default/xui/es/menu_url_experience.xml new file mode 100644 index 0000000000..a18cb0e8e8 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_group.xml b/indra/newview/skins/default/xui/es/menu_url_group.xml index 79374b9739..79374b9739 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_group.xml +++ b/indra/newview/skins/default/xui/es/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_http.xml b/indra/newview/skins/default/xui/es/menu_url_http.xml index 585c059ff3..585c059ff3 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_http.xml +++ b/indra/newview/skins/default/xui/es/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_inventory.xml b/indra/newview/skins/default/xui/es/menu_url_inventory.xml index 13a8711c76..13a8711c76 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_map.xml b/indra/newview/skins/default/xui/es/menu_url_map.xml index f96a0c7170..f96a0c7170 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_map.xml +++ b/indra/newview/skins/default/xui/es/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml index c3c8439ea2..c3c8439ea2 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_parcel.xml b/indra/newview/skins/default/xui/es/menu_url_parcel.xml index 9e789ef8ee..9e789ef8ee 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/es/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_slapp.xml b/indra/newview/skins/default/xui/es/menu_url_slapp.xml index 7147dcd3cf..7147dcd3cf 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/es/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_slurl.xml b/indra/newview/skins/default/xui/es/menu_url_slurl.xml index 4ab47c2f61..4ab47c2f61 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/es/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/es/menu_url_teleport.xml b/indra/newview/skins/default/xui/es/menu_url_teleport.xml index 8f86a91be3..8f86a91be3 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/es/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 9596a8277e..f6ebb498ec 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -8,19 +8,21 @@ <menu_item_call label="Nueva ventana del inventario" name="NewInventoryWindow"/> <menu_item_call label="Lugares..." name="Places"/> <menu_item_call label="Destacados..." name="Picks"/> + <menu_item_call label="Experiencias..." name="Experiences"/> <menu_item_call label="Controles de la cámara..." name="Camera Controls"/> <menu label="Movimiento" name="Movement"> <menu_item_call label="Sentarte" name="Sit Down Here"/> <menu_item_check label="Volar" name="Fly"/> <menu_item_check label="Correr siempre" name="Always Run"/> <menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/> - <menu_item_call label="Caminar / Correr / Volar..." name="Walk / run / fly"/> + <menu_item_call label="Caminar / Correr / Volar..." name="WalkRunFly"/> </menu> <menu label="Estado" name="Status"> <menu_item_check label="Ausente" name="Away"/> <menu_item_check label="No molestar" name="Do Not Disturb"/> </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> + <menu_item_call label="Artículos del Mercado..." name="MarketplaceListings"/> <menu_item_call label="Panel de control de la cuenta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/> </menu_item_call> @@ -47,7 +49,7 @@ <menu_item_check label="Amigos" name="My Friends"/> <menu_item_check label="Grupos" name="My Groups"/> <menu_item_check label="Gente cerca" name="Active Speakers"/> - <menu_item_call label="Lista de ignorados" name="Block List"/> + <menu_item_check label="Lista de ignorados" name="Block List"/> <menu_item_check label="No molestar" name="Do Not Disturb"/> </menu> <menu label="Mundo" name="World"> @@ -61,7 +63,7 @@ <menu_item_call label="Foto" name="Take Snapshot"/> <menu_item_call label="Perfil del lugar" name="Place Profile"/> <menu_item_call label="Acerca del terreno" name="About Land"/> - <menu_item_call label="Región/Estado" name="Region/Estate"/> + <menu_item_call label="Región/Estado" name="RegionEstate"/> <menu_item_call label="Mis terrenos..." name="My Land"/> <menu_item_call label="Comprar este terreno" name="Buy Land"/> <menu label="Mostrar" name="LandShow"> @@ -248,6 +250,7 @@ <menu_item_check label="Texture Console" name="Texture Console"/> <menu_item_check label="Debug Console" name="Debug Console"/> <menu_item_call label="Notifications Console" name="Notifications"/> + <menu_item_check label="Consola de depuración de región" name="Region Debug Console"/> <menu_item_check label="Fast Timers" name="Fast Timers"/> <menu_item_check label="Memory" name="Memory"/> <menu_item_check label="Datos de la escena" name="Scene Statistics"/> @@ -323,7 +326,7 @@ <menu label="Red" name="Network"> <menu_item_check label="Pause Avatar" name="AgentPause"/> <menu_item_call label="Drop a Packet" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mundo virtual" name="DevelopWorld"> <menu_item_check label="Anular el sol del Sim" name="Sim Sun Override"/> <menu_item_check label="Meteorología fija" name="Fixed Weather"/> 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 4bffa689e7..4bffa689e7 100755..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 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 ec13f99a01..ec13f99a01 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml 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 64fd7ce4cf..64fd7ce4cf 100755..100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/es/mime_types.xml b/indra/newview/skins/default/xui/es/mime_types.xml index 85ff4cfb48..eb212344ce 100755..100644 --- a/indra/newview/skins/default/xui/es/mime_types.xml +++ b/indra/newview/skins/default/xui/es/mime_types.xml @@ -27,7 +27,7 @@ No hay contenido </label> <tooltip name="none_tooltip"> - Aquí no hay multimedia + Aquí no hay contenido multimedia </tooltip> </widgetset> <widgetset name="image"> diff --git a/indra/newview/skins/default/xui/es/mime_types_linux.xml b/indra/newview/skins/default/xui/es/mime_types_linux.xml index 77d05934f4..e5887e7d96 100755..100644 --- a/indra/newview/skins/default/xui/es/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/es/mime_types_linux.xml @@ -44,6 +44,14 @@ Oír el audio de este sitio </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No hay contenido + </label> + <tooltip name="none_tooltip"> + Aquí no hay contenido multimedia + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Streaming en 'Real Time' diff --git a/indra/newview/skins/default/xui/es/mime_types_mac.xml b/indra/newview/skins/default/xui/es/mime_types_mac.xml index 77d05934f4..e5887e7d96 100755..100644 --- a/indra/newview/skins/default/xui/es/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/es/mime_types_mac.xml @@ -44,6 +44,14 @@ Oír el audio de este sitio </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No hay contenido + </label> + <tooltip name="none_tooltip"> + Aquí no hay contenido multimedia + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Streaming en 'Real Time' diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 01407dc69e..1e367b33fc 100755..100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -73,6 +73,10 @@ Detalles del error: la notificación de nombre '[_NAME]' no se ha enco [MESSAGE] <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Ha habido un error actualizando [APP_NAME]. Por favor, [http://get.secondlife.com descarga la última versión] del Visor. <usetemplate name="okbutton" yestext="OK"/> @@ -125,6 +129,88 @@ No se han enviado carpetas al Mercado a causa de un error del sistema o de la re La inicialización del mercado ha fallado por un error del sistema o de la red. Vuelve a intentarlo más tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Ha ocurrido el siguiente error al copiar o mover a la carpeta de stock: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Ha ocurrido el siguiente error al copiar o mover a artículos del Mercado: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transacción con el Mercado ha fallado por el siguiente error: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + No hemos podido incluir este producto en tus artículos o activar la carpeta de versión. Normalmente esto ocurre porque falta información en el formulario de descripción de los artículos, aunque también puede deberse a errores en la estructura de carpetas. Puedes editar los artículos o comprobar si la carpeta de artículos tiene algún error. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Ha ocurrido el siguiente error en la lista de artículos del Mercado: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Ha ocurrido el siguiente error al activar esta carpeta de versión: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Esta acción cambiará el contenido activo de esta lista de artículos. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que cambie una lista de artículos activa en el Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Los artículos arrastrados a la ventana Artículos del mercado se mueven desde sus ubicaciones originales, no se copian. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de mover un artículo desde el inventario al Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Al mover o eliminar una carpeta de artículos, se eliminarán tus artículos del Mercado. Si deseas conservar los artículos del Mercado, mueve o elimina el contenido de la carpeta de versión que desees modificar. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que mueva o elimine una lista de artículos del Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + No tienes permiso para copiar uno o varios de estos artículos en el Mercado. Puedes moverlos o dejártelos. + <usetemplate canceltext="Cancelar" ignoretext="Confirmar cuando intente copiar una selección que contiene artículos que no se pueden copiar en el Mercado" name="yesnocancelbuttons" notext="No mover objeto(s)" yestext="Mover objeto(s)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Esta acción retirará esta lista de artículos. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que retire una lista de artículos activa en el Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Esta acción desactivará la carpeta de versión de la lista de artículos actual. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que desactive la carpeta de versión de una lista de artículos del Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + No se ha podido actualizar esta lista de artículos. +[[URL] Haz clic aquí] para editarla en el Mercado. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + No puedes ponerte prendas ni partes del cuerpo que se encuentren en la carpeta Artículos del mercado. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Id. de lista de artículos no válida + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Esta lista de artículos contiene varias carpetas de versión o ninguna. Tendrás que seleccionar y activar una por tu cuenta más tarde. + <usetemplate ignoretext="Mostrar una alerta de la activación de la carpeta de versión cuando cree una lista de artículos con varias carpetas de versión" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Hemos separado los artículos en stock de diferentes tipos en carpetas distintas, para que tu carpeta esté organizada de tal forma que podamos incluirla en el Mercado. + <usetemplate ignoretext="Mostrar alerta cuando la carpeta de stock se divida antes de incluirla en la lista" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Hemos retirado tu lista de artículos porque el stock está vacío. Para volver a publicar tus artículos, añade más unidades a la carpeta de stock. + <usetemplate ignoretext="Mostrar alerta cuando una lista de artículos se retire porque la carpeta de stock está vacía" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtalo más tarde. </notification> @@ -464,6 +550,10 @@ o hacer una puja? ¿Guardar los cambios? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/> </notification> + <notification name="DeleteNotecard"> + ¿Deseas borrar la nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Fallo al guardar el gesto. Este gesto tiene demasiados pasos. @@ -570,6 +660,9 @@ La calidad gráfica puede ajustarse en Preferencias > Gráficos. <notification name="RegionNoTerraforming"> En la región [REGION] no se permite modificar el terreno. </notification> + <notification name="ParcelNoTerraforming"> + No tienes permiso para modificar el terreno de la parcela [PARCEL]. + </notification> <notification name="CannotCopyWarning"> No tienes permiso para copiar los elementos siguientes: [ITEMS] y, si los das, los perderás del inventario. ¿Seguro que quieres ofrecerlos? @@ -1834,6 +1927,30 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se ¿Remover al administrador del estado sólo para este estado o para [ALL_ESTATES]? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> </notification> + <notification label="Seleccionar estado" name="EstateAllowedExperienceAdd"> + ¿Añadir a la lista de permitidos solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar estado" name="EstateAllowedExperienceRemove"> + ¿Quitar de la lista de permitidos solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar estado" name="EstateBlockedExperienceAdd"> + ¿Añadir a la lista de bloqueados solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar estado" name="EstateBlockedExperienceRemove"> + ¿Quitar de la lista de bloqueados solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar estado" name="EstateTrustedExperienceAdd"> + ¿Añadir a la lista de claves solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar estado" name="EstateTrustedExperienceRemove"> + ¿Quitar de la lista de claves solamente en este estado o en [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> <notification label="Confirmar la expulsión" name="EstateKickUser"> ¿Echar a [EVIL_USER] de este estado? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -1846,6 +1963,9 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se Tus preferencias de contenido actuales te impiden visitar la región que has seleccionado. Puedes cambiar las preferencias en Yo > Preferencias > General. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos. <url name="url"> @@ -1908,6 +2028,10 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se Estamos experimentando dificultades técnicas con el teleporte porque tus preferencias no están sincronizadas con el servidor. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + No puedes entrar en la región. '[REGION_NAME]' es una región de juegos de habilidad, y debes cumplir determinados criterios para poder entrar en ella. Consulta los detalles en las [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life P+F de juegos de habilidad]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> No recibirás más notificaciones cuando vayas a visitar una región con un contenido [RATING]. En el futuro, puedes cambiar tus preferencias de contenido en Yo > Preferencias > General en la barra de menús. <usetemplate name="okbutton" yestext="OK"/> @@ -2130,6 +2254,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u <ignore name="ignore" text="He establecido la acción 'Pagar al objeto' cuando construyo uno sin un script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirma que deseas pagar L$[AMOUNT] a [TARGET]. + <usetemplate ignoretext="Confirmar antes de pagar (sumas mayores de 200 L$)" name="okcancelignore" notext="Cancelar" yestext="Pagar"/> + </notification> <notification name="OpenObjectCannotCopy"> En este objeto, no hay ítems que estés autorizado a copiar. </notification> @@ -2214,6 +2342,9 @@ Linden Lab <button ignore="Nunca reemplazar" name="No" text="Cancelar"/> </form> </notification> + <notification name="TooManyWearables"> + No puedes tener una carpeta de prendas que contenga más de [AMOUNT] elementos. Puedes cambiar este límite en Avanzado > Mostrar las configuraciones del depurador > WearFolderLimit. + </notification> <notification label="Advertencia del modo No molestar" name="DoNotDisturbModePay"> Tienes activado No molestar. No podrás recibir ningún objeto ofrecido a cambio de este pago. @@ -2665,9 +2796,6 @@ Por favor, vuelve a intentarlo en unos momentos. <notification name="NoValidCircuit"> Circuito de código inválido. </notification> - <notification name="NoValidTimestamp"> - Fecha inválida. - </notification> <notification name="NoPendingConnection"> No se puede crear la conexión. </notification> @@ -2822,7 +2950,7 @@ Si permaneces en esta región serás desconectado. [MESSAGE] -Del objeto: <nolink>[OBJECTNAME]</nolink>, propietario: [NAME]? +Del objeto: <nolink>[OBJECTNAME]</nolink>, propietario: [NAME] <form name="form"> <button name="Gotopage" text="Cargar"/> <button name="Cancel" text="Cancelar"/> @@ -2848,6 +2976,72 @@ Del objeto: <nolink>[OBJECTNAME]</nolink>, propietario: [NAME]? <button name="Mute" text="Ignorar"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + No se puede adquirir una experiencia nueva: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Se ha omitido un cambio en el grupo de la experiencia porque el propietario no es miembro del grupo seleccionado. + </notification> + <notification name="UneditableExperienceProfileMessage"> + El campo no modificable '[field]' se ha omitido al actualizar el perfil de la experiencia. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Cambios omitidos en el campo '[field]' que solo puede configurar el propietario de la experiencia. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + No puedes definir un nivel de calificación de una experiencia superior al establecido por el propietario. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Las condiciones siguientes han impedido la actualización del nombre o la descripción del perfil de la experiencia: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Te has teleportado desde la región [region_name] porque al quitar la experiencia secondlife:///app/experience/[public_id]/profile ya no tienes permiso para entrar en la región. + <form name="form"> + <ignore name="ignore" text="Expulsado de la región por quitar una experiencia"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + La participación en la experiencia clave secondlife:///app/experience/[public_id]/profile te otorga permiso para entrar en la región [region_name]. Si quitas esta experiencia, puede que te expulsen de la región. + <form name="form"> + <ignore name="ignore" text="Admitido en una región por una experiencia"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + No tienes permiso de acceso a este destino. Puedes obtener el permiso para entrar en la región si aceptas una de las siguientes experiencias: + +[EXPERIENCE_LIST] + +Pueden estar disponibles otras experiencias clave. + </notification> + <notification name="ExperienceEvent"> + La experiencia secondlife:///app/experience/[public_id]/profile permitió la siguiente operación con un objeto: [EventType]. + Propietario: secondlife:///app/agent/[OwnerID]/inspect + Nombre del objeto: [ObjectName] + Nombre de la parcela: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + La experiencia secondlife:///app/experience/[public_id]/profile permitió la siguiente operación con un anexo: [EventType]. + Propietario: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + '<nolink>[OBJECTNAME]</nolink>', un objeto de propiedad de '[NAME]', solicita tu participación en la experiencia [GRID_WIDE]: + +[EXPERIENCE] + +Una vez concedido el permiso, este mensaje no volverá a aparecer para la experiencia salvo que se revoque en el perfil de la experiencia. + +Los scripts asociados a esta experiencia podrán hacer lo siguiente en las regiones donde la experiencia esté activa: + +[QUESTIONS]¿Lo aceptas? + <form name="form"> + <button name="BlockExperience" text="Bloquear experiencia"/> + <button name="Mute" text="Bloquear objeto"/> + <button name="Yes" text="Sí"/> + <button name="No" text="No"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Atención: El objeto '<nolink>[OBJECTNAME]</nolink>' solicita un acceso pleno a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, cuando lo desee y sin más advertencias. @@ -3160,6 +3354,10 @@ Has actualizado una textura obtenida mediante bake de [RESOLUTION] para '[B ( [EXISTENCE] segundos con vida ) Has actualizado de manera local una textura obtenida mediante bake de [RESOLUTION] para '[BODYREGION]' después de [TIME] segundos. </notification> + <notification name="CannotUploadTexture"> + No se puede subir la textura. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> No se puede mostrar una vista previa de esta textura porque es de tipo 'no copiable' y/o 'no transferible'. <usetemplate ignoretext="Advertirme si el modo Vista previa inmediata no está disponible para las texturas 'no copiable' y/o 'no transferible'" name="okignore" yestext="OK"/> @@ -3732,9 +3930,11 @@ Prueba otra vez dentro de un minuto. </notification> <notification name="TeleportedByAttachment"> Has sido teleportado por un anexo de [ITEM_ID] + <usetemplate ignoretext="Teleportarme: has sido teleportado por un anexo" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Has sido teleportado por el objeto '[OBJECT_NAME]' de la parcela '[PARCEL_NAME]' + <usetemplate ignoretext="Teleportarme: has sido teleportado por un objeto de una parcela" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Has sido teleportado por el objeto '[OBJECT_NAME]' que es propiedad de [OWNER_ID] @@ -4066,7 +4266,7 @@ Prueba a seleccionar un terreno más pequeño. <usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ha ocurrido un problema al guardar los permisos predeterminados por el siguiente motivo: [REASON]. Intenta configurar los permisos predeterminados más adelante. + Ha ocurrido un problema al guardar los permisos de objeto predeterminados: [REASON]. Intenta configurar los permisos predeterminados más adelante. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/es/panel_active_object_row.xml b/indra/newview/skins/default/xui/es/panel_active_object_row.xml index 8d4fadb101..8d4fadb101 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/es/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml index c64a93e0e5..c64a93e0e5 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml 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 c73e34b299..c73e34b299 100755..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 diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml index a3de14ae67..a3de14ae67 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml index 8f4e0101aa..8f4e0101aa 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml index 66ae7d868b..66ae7d868b 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml index 8d1b84a5fd..8d1b84a5fd 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml index eaaa5dbe78..eaaa5dbe78 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml 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 3c168b9e53..3c168b9e53 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/es/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml index d3b3d31bd9..d3b3d31bd9 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml index 959b83d658..959b83d658 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_cof_wearables.xml b/indra/newview/skins/default/xui/es/panel_cof_wearables.xml index a2994894c1..a2994894c1 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/es/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml index d1d7d8ec82..d1d7d8ec82 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml index bc3046978c..bc3046978c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_alpha.xml b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml index 829c206ae1..829c206ae1 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml 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 ffad843732..ffad843732 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_eyes.xml b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml index 29a416f698..29a416f698 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_gloves.xml b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml index d536a862f5..d536a862f5 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_hair.xml b/indra/newview/skins/default/xui/es/panel_edit_hair.xml index 25af1ea8cb..25af1ea8cb 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_jacket.xml b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml index 22a46a2f75..22a46a2f75 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_pants.xml b/indra/newview/skins/default/xui/es/panel_edit_pants.xml index fb35e0953b..fb35e0953b 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_physics.xml b/indra/newview/skins/default/xui/es/panel_edit_physics.xml index dfb5ab330a..dfb5ab330a 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_physics.xml 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 cda465da9c..cda465da9c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml 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 8e5e09cfec..8e5e09cfec 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_shape.xml b/indra/newview/skins/default/xui/es/panel_edit_shape.xml index 368be35ed9..368be35ed9 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_shirt.xml b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml index 73b712374e..73b712374e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_shoes.xml b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml index 5e457612d5..5e457612d5 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_skin.xml b/indra/newview/skins/default/xui/es/panel_edit_skin.xml index 8d895a6152..8d895a6152 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_skirt.xml b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml index 416d174298..416d174298 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_socks.xml b/indra/newview/skins/default/xui/es/panel_edit_socks.xml index ac9b2a773e..ac9b2a773e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml index 8776dd6c10..8776dd6c10 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_underpants.xml b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml index aac8af44b9..aac8af44b9 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml index c26c554c1a..c26c554c1a 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml 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 799512968d..799512968d 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/es/panel_experience_info.xml b/indra/newview/skins/default/xui/es/panel_experience_info.xml new file mode 100644 index 0000000000..85fc94ebdc --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Perfil de experiencia"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Ubicación: + </text> + <text name="LocationTextText"> + algún lugar + </text> + <button label="Teleportarte" name="teleport_btn"/> + <button label="Mapa" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Tienda del Mercado: + </text> + <text name="LocationTextText"> + algún lugar + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Calificación: + </text> + <text name="ContentRatingText"> + Adulto + </text> + <text name="Owner"> + Propietario: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/es/panel_experience_list_editor.xml new file mode 100644 index 0000000000..5cc1462605 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + cargando... + </panel.string> + <panel.string name="panel_allowed"> + Experiencias permitidas: + </panel.string> + <panel.string name="panel_blocked"> + Experiencias bloqueadas: + </panel.string> + <panel.string name="panel_trusted"> + Experiencias clave: + </panel.string> + <panel.string name="no_results"> + (vacío) + </panel.string> + <text name="text_name"> + Lista de experiencias + </text> + <scroll_list name="experience_list"> + <columns label="Nombre" name="experience_name"/> + </scroll_list> + <button label="Añadir..." name="btn_add"/> + <button label="Eliminar" name="btn_remove"/> + <button label="Perfil..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_experience_list_item.xml b/indra/newview/skins/default/xui/es/panel_experience_list_item.xml new file mode 100644 index 0000000000..bd2e146223 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Nombre ficticio + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_experience_log.xml b/indra/newview/skins/default/xui/es/panel_experience_log.xml new file mode 100644 index 0000000000..54d0f0fc44 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="No hay eventos."/> + <string name="loading" value="cargando..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Hora" name="time"/> + <columns label="Evento" name="event"/> + <columns label="Experiencia" name="experience_name"/> + <columns label="Objeto" name="object_name"/> + </scroll_list> + <button label="Notificar" name="btn_notify"/> + <button label="Perfil" name="btn_profile_xp"/> + <button label="Denunciar" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Notificar todos los eventos Días" name="notify_all"/> + <button label="Limpiar" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_experience_search.xml b/indra/newview/skins/default/xui/es/panel_experience_search.xml new file mode 100644 index 0000000000..bb05ada5b9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + '[TEXT]' no encontrado + </string> + <string name="no_results"> + No hay resultados + </string> + <string name="searching"> + Buscando... + </string> + <string name="loading"> + Cargando... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Ir" name="find"/> + <icons_combo_box label="Moderado" name="maturity"> + <icons_combo_box.item label="Adulto" name="Adult" value="42"/> + <icons_combo_box.item label="Moderado" name="Mature" value="21"/> + <icons_combo_box.item label="General" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Nombre" name="experience_name"/> + <columns label="Propietario" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Ver el perfil" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_experiences.xml b/indra/newview/skins/default/xui/es/panel_experiences.xml new file mode 100644 index 0000000000..182981fcb0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Cargando experiencias..."/> + <string name="no_experiences" value="No hay experiencias."/> + <string name="acquire" value="Adquirir una experiencia"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_facebook_friends.xml b/indra/newview/skins/default/xui/es/panel_facebook_friends.xml index 6913e87aba..5557c0a73c 100644 --- a/indra/newview/skins/default/xui/es/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/es/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Actualmente no tienes amigos en Facebook que también sean residentes de Second Life. Invita a tus amigos de Facebook a que se unan a Second Life."/> - <string name="facebook_friends_no_connected" value="Actualmente no estás conectado a Facebook. Selecciona la pestaña Cuenta para conectarte y habilitar esta función."/> + <string name="facebook_friends_no_connected" value="Actualmente no estás conectado a Facebook. Selecciona la pestaña Estado para conectarte y habilitar esta función."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="Amigos de SL"/> <accordion_tab name="tab_suggested_friends" title="Agregar estas personas como amigos de SL"/> diff --git a/indra/newview/skins/default/xui/es/panel_facebook_photo.xml b/indra/newview/skins/default/xui/es/panel_facebook_photo.xml index f9e7265d34..5a533f8bcb 100644 --- a/indra/newview/skins/default/xui/es/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/es/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> - <combo_box.item label="Ventana actual" name="CurrentWindow"/> - <combo_box.item label="640 × 480" name="640x480"/> - <combo_box.item label="800 × 600" name="800x600"/> - <combo_box.item label="1024 × 768" name="1024x768"/> - <combo_box.item label="1200 × 630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> - <combo_box.item label="Sin filtro" name="NoFilter"/> - </combo_box> - <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> - <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> - <text name="caption_label"> - Comentario (opcional): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Publicar" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> + <combo_box.item label="Ventana actual" name="CurrentWindow"/> + <combo_box.item label="640 × 480" name="640x480"/> + <combo_box.item label="800 × 600" name="800x600"/> + <combo_box.item label="1024 × 768" name="1024x768"/> + <combo_box.item label="1200 × 630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> + <combo_box.item label="Sin filtro" name="NoFilter"/> + </combo_box> + <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> + <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> + <text name="caption_label"> + Comentario (opcional): + </text> + <button label="Publicar" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_facebook_place.xml b/indra/newview/skins/default/xui/es/panel_facebook_place.xml index 639825818a..5139bd1d0b 100644 --- a/indra/newview/skins/default/xui/es/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/es/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Cuenta algo del lugar donde te encuentras: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Publicar" name="post_place_btn"/> - <button label="Cancelar" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Cuenta algo del lugar donde te encuentras: + </text> + <check_box initial_value="false" label="Incluir una vista general del lugar" name="add_place_view_cb"/> + <button label="Publicar" name="post_place_btn"/> + <button label="Cancelar" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_facebook_status.xml b/indra/newview/skins/default/xui/es/panel_facebook_status.xml index dfaf4089fc..e6f137b750 100644 --- a/indra/newview/skins/default/xui/es/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/es/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - ¿En qué estás pensando? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Publicar" name="post_status_btn"/> - <button label="Cancelar" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Estás conectado a Facebook como:"/> + <string name="facebook_disconnected" value="No conectado a Facebook"/> + <text name="account_caption_label"> + No conectado a Facebook. + </text> + <panel name="panel_buttons"> + <button label="Conectar..." name="connect_btn"/> + <button label="Desconectar" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Aprende a publicar en Facebook] + </text> + </panel> + <text name="status_caption_label"> + ¿En qué estás pensando? + </text> + <button label="Publicar" name="post_status_btn"/> + <button label="Cancelar" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_flickr_photo.xml b/indra/newview/skins/default/xui/es/panel_flickr_photo.xml index 465e80667b..fe80199355 100644 --- a/indra/newview/skins/default/xui/es/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/es/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> - <combo_box.item label="Ventana actual" name="CurrentWindow"/> - <combo_box.item label="640 × 480" name="640x480"/> - <combo_box.item label="800 × 600" name="800x600"/> - <combo_box.item label="1024 × 768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> - <combo_box.item label="Sin filtro" name="NoFilter"/> - </combo_box> - <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> - <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> - <text name="title_label"> - Título: - </text> - <text name="description_label"> - Descripción: - </text> - <check_box initial_value="true" label="Incluir la ubicación de SL al final de la descripción" name="add_location_cb"/> - <text name="tags_label"> - Etiquetas: - </text> - <text name="tags_help_label"> - Separa las etiquetas con espacios + <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> + <combo_box.item label="Ventana actual" name="CurrentWindow"/> + <combo_box.item label="640 × 480" name="640x480"/> + <combo_box.item label="800 × 600" name="800x600"/> + <combo_box.item label="1024 × 768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> + <combo_box.item label="Sin filtro" name="NoFilter"/> + </combo_box> + <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> + <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> + <text name="title_label"> + Título: + </text> + <text name="description_label"> + Descripción: + </text> + <check_box initial_value="true" label="Incluir la ubicación de SL al final de la descripción" name="add_location_cb"/> + <text name="tags_label"> + Etiquetas: + </text> + <text name="tags_help_label"> + Separa las etiquetas con espacios Usa "" para las etiquetas con varias palabras - </text> - <combo_box name="rating_combobox" tool_tip="Calificación de contenido de Flickr"> - <combo_box.item label="Calificación segura de Flickr" name="SafeRating"/> - <combo_box.item label="Calificación moderada de Flickr" name="ModerateRating"/> - <combo_box.item label="Calificación restringida de Flickr" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Subir" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Calificación de contenido de Flickr"> + <combo_box.item label="Calificación segura de Flickr" name="SafeRating"/> + <combo_box.item label="Calificación moderada de Flickr" name="ModerateRating"/> + <combo_box.item label="Calificación restringida de Flickr" name="RestrictedRating"/> + </combo_box> + <button label="Subir" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_control_panel.xml b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml index b398293175..b398293175 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml index b00c300c85..b00c300c85 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_general.xml +++ b/indra/newview/skins/default/xui/es/panel_group_general.xml 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 18eaa834da..8d8f3a9bbb 100755..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 @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Miembros y Roles"/> <accordion_tab name="group_notices_tab" title="Avisos"/> <accordion_tab name="group_land_tab" title="Terreno/Bienes"/> + <accordion_tab name="group_experiences_tab" title="Experiencias"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/es/panel_group_invite.xml b/indra/newview/skins/default/xui/es/panel_group_invite.xml index 8ddeb5a1de..8ddeb5a1de 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/es/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_land_money.xml b/indra/newview/skins/default/xui/es/panel_group_land_money.xml index 3afb0f5665..3afb0f5665 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/es/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml index 4d682068d7..4d682068d7 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_notices.xml b/indra/newview/skins/default/xui/es/panel_group_notices.xml index 1eaa69abff..1eaa69abff 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/es/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_notify.xml b/indra/newview/skins/default/xui/es/panel_group_notify.xml index 7bdacbd1e0..7bdacbd1e0 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/es/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml index 54a5566600..54a5566600 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml index f218324d50..f218324d50 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/es/panel_inventory_item.xml b/indra/newview/skins/default/xui/es/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/es/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_landmark_info.xml b/indra/newview/skins/default/xui/es/panel_landmark_info.xml index 1a0ac3ba79..1a0ac3ba79 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/es/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/es/panel_landmarks.xml b/indra/newview/skins/default/xui/es/panel_landmarks.xml index b92685f0ae..b92685f0ae 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/es/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml index 253d0800e1..5300fce153 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_login.xml +++ b/indra/newview/skins/default/xui/es/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=es - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=es</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nombre de usuario" name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/> <line_editor label="Contraseña" name="password_edit"/> - <check_box label="Recordarme" name="remember_check"/> - <text name="forgot_password_text"> - Contraseña olvidada - </text> - <button label="Iniciar sesión" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - en mi última posición - </text> <combo_box label="Mis lugares favoritos" name="start_location_combo"> + <combo_box.item label="Mi última posición" name="MyLastLocation"/> <combo_box.item label="Mi Base" name="MyHome"/> </combo_box> - <button label="Iniciar sesión" name="connect_favorite_btn"/> - <line_editor label="Especifica una ubicación" name="location_edit"/> - <button label="Iniciar sesión" name="connect_location_btn"/> + <button label="Iniciar sesión" name="connect_btn"/> + <check_box label="Recordarme" name="remember_check"/> + <text name="forgot_password_text">Contraseña olvidada</text> <combo_box label="Seleccionar cuadrícula" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/es/panel_main_inventory.xml b/indra/newview/skins/default/xui/es/panel_main_inventory.xml index 7e318a150b..7e318a150b 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml new file mode 100644 index 0000000000..d9cd93b349 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Mercado" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opciones de vista/orden"/> + <button name="add_btn" tool_tip="Crear una carpeta de artículos nueva"/> + <button label="Comprobar errores" name="audit_btn" tool_tip="Comprobar tus artículos del Mercado"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrar artículos del Mercado" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..77540aee39 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TODOS" name="All Items" tool_tip="Arrastra y suelta aquí los artículos para incluirlos en la lista de artículos"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..ca8ff6aea9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="INCLUIDOS EN LA LISTA" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..2606e035cd --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="SIN ASOCIAR" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..ea568cab8a --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="RETIRADOS DE LA LISTA" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml index 850cd6ec71..850cd6ec71 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_me.xml +++ b/indra/newview/skins/default/xui/es/panel_me.xml diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_general.xml b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml index afc11a4250..afc11a4250 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml index ec9edbfa15..ec9edbfa15 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_security.xml b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml index a1a3ec86cf..a1a3ec86cf 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml index d36c6283bc..d36c6283bc 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml index 4220ab3c9f..4220ab3c9f 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml index e6ca59f912..e6ca59f912 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/es/panel_nearby_media.xml b/indra/newview/skins/default/xui/es/panel_nearby_media.xml index 8d4f9eda18..8d4f9eda18 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/es/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml index dc7c873303..dc7c873303 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/es/panel_online_status_toast.xml b/indra/newview/skins/default/xui/es/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/es/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml index 9e2f3c3adc..9e2f3c3adc 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml 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 9e669995aa..9e669995aa 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml 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 1107e72b54..1107e72b54 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml index 8f805c3d18..8f805c3d18 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/es/panel_outfits_list.xml b/indra/newview/skins/default/xui/es/panel_outfits_list.xml index 3f8057f242..3f8057f242 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml index 8cea619bd5..8cea619bd5 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml index 06150f7619..06150f7619 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_people.xml +++ b/indra/newview/skins/default/xui/es/panel_people.xml 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 3450279b4a..3450279b4a 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/es/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/es/panel_picks.xml b/indra/newview/skins/default/xui/es/panel_picks.xml index 904cdd12f1..904cdd12f1 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_picks.xml +++ b/indra/newview/skins/default/xui/es/panel_picks.xml diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml index e1cf1332e2..e1cf1332e2 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml index e9984b4512..e9984b4512 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_places.xml +++ b/indra/newview/skins/default/xui/es/panel_places.xml diff --git a/indra/newview/skins/default/xui/es/panel_postcard_message.xml b/indra/newview/skins/default/xui/es/panel_postcard_message.xml index 7316d91f5c..7316d91f5c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/es/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/es/panel_postcard_settings.xml b/indra/newview/skins/default/xui/es/panel_postcard_settings.xml index 3931319447..75bcd67f1f 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/es/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Personalizado" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Ancho" name="postcard_snapshot_width"/> - <spinner label="Altura" name="postcard_snapshot_height"/> - <check_box label="Mantener las proporciones" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Calidad de la imagen" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Ancho × alto" name="postcard_snapshot_width"/> + <check_box label="Mantener las proporciones" name="postcard_keep_aspect_check"/> + <slider label="Calidad:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index 2599d951d7..2599d951d7 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml index f34edf149e..f34edf149e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml 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 7feff9005c..7feff9005c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml index d47a6d718a..d47a6d718a 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml 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 e68faf6e99..e68faf6e99 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml 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 a9eab74e2b..a9eab74e2b 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/es/panel_preferences_move.xml b/indra/newview/skins/default/xui/es/panel_preferences_move.xml index b2ff6b61c2..b2ff6b61c2 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml index db98ee088e..db98ee088e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml index 508bfbcd32..7ccad84b55 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="Usar mi navegador (IE, Firefox, Safari)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa." value="true"/> - <radio_item label="Usar el navegador incorporado" name="internal" tool_tip="Usa el navegador incorporado para ayuda, enlaces web, etc. Este navegador se abre en una nueva ventana dentro de [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Usar mi navegador (Chrome, Firefox, IE) para todos los enlaces" name="internal" tool_tip="Usa el navegador predeterminado para obtener ayuda, visitar enlaces web, etc. No es aconsejable si estás a pantalla completa." value="0"/> + <radio_item label="Usar el navegador integrado solo para los enlaces de Second Life" name="external" tool_tip="Usa el navegador predeterminado del sistema para obtener ayuda, visitar enlaces web, etc. El navegador integrado solo se utilizará para los enlaces de LindenLab/SecondLife." value="1"/> </radio_group> <check_box initial_value="true" label="Activar plugins" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Aceptar las 'cookies'" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index dcd6984715..dcd6984715 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml 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 90b9e475e7..90b9e475e7 100755..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 diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml index 2beacda235..2beacda235 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/es/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/es/panel_region_debug.xml b/indra/newview/skins/default/xui/es/panel_region_debug.xml index 2a98fb808d..2a98fb808d 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/es/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/es/panel_region_environment.xml b/indra/newview/skins/default/xui/es/panel_region_environment.xml index a73f1deed4..a73f1deed4 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/es/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml index 6089dfb8db..6089dfb8db 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/es/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/es/panel_region_experiences.xml b/indra/newview/skins/default/xui/es/panel_region_experiences.xml new file mode 100644 index 0000000000..4b7f82d3fb --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiencias" name="Experiences"> + <panel.string name="trusted_estate_text"> + Cualquier experiencia puede ser clave. + +Las experiencias clave tienen permiso de ejecución en este estado. + +Además, si el estado no admite el acceso público, los residentes que participen en una experiencia clave pueden entrar en el estado y permanecer en él mientras se encuentren en dicha experiencia. + </panel.string> + <panel.string name="allowed_estate_text"> + Solo se permiten las experiencias activas en el terreno. + +Las experiencias permitidas tienen permiso de ejecución en este estado. + </panel.string> + <panel.string name="blocked_estate_text"> + Solo pueden bloquearse las experiencias activas en el Grid. + +Las experiencias bloqueadas no pueden ejecutarse en este estado. + </panel.string> + <panel.string name="estate_caption"> + En esta pestaña, los cambios en la configuración afectarán a todas las regiones del estado. + </panel.string> + <panel.string name="allowed_parcel_text"> + Solo se permiten las experiencias activas en el terreno. + +Las experiencias permitidas tienen permiso de ejecución en esta parcela si no las ha bloqueado el estado. + </panel.string> + <panel.string name="blocked_parcel_text"> + Puede bloquearse cualquier experiencia de los residentes. + +Las experiencias bloqueadas no pueden ejecutarse en esta parcela. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml index 82149e1c7c..82149e1c7c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_general.xml +++ b/indra/newview/skins/default/xui/es/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/es/panel_region_terrain.xml b/indra/newview/skins/default/xui/es/panel_region_terrain.xml index cb6c03dbb5..cb6c03dbb5 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/es/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml index 89e9304693..89e9304693 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/es/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/es/panel_script_experience.xml b/indra/newview/skins/default/xui/es/panel_script_experience.xml new file mode 100644 index 0000000000..2629a9fa69 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="EXPERIENCIA"> + <button label="Experiencia" name="Expand Experience"/> + <check_box label="Usa las experiencias" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Elegir experiencia..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + No eres colaborador de ninguna experiencia. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml index 9334d58af2..9334d58af2 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml index 37dc0a576c..37dc0a576c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/es/panel_script_question_toast.xml b/indra/newview/skins/default/xui/es/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/es/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/es/panel_scrolling_param.xml b/indra/newview/skins/default/xui/es/panel_scrolling_param.xml index bafd4e5e55..bafd4e5e55 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/es/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml 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 775e343dc9..775e343dc9 100755..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 diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml index 12c74b5cd1..c9eea9a58e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Guardar en mi inventario + Inventario </text> <text name="hint_lbl"> Guardar una imagen en el inventario cuesta [UPLOAD_COST] L$. Para guardar una imagen como una textura, selecciona uno de los formatos cuadrados. @@ -13,8 +13,8 @@ <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> <combo_box.item label="Personalizado" name="Custom"/> </combo_box> - <spinner label="Ancho" name="inventory_snapshot_width"/> - <spinner label="Altura" name="inventory_snapshot_height"/> + <spinner label="Ancho × alto" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Mantener las proporciones" name="inventory_keep_aspect_check"/> <button label="Cancelar" name="cancel_btn"/> <button label="Guardar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_local.xml b/indra/newview/skins/default/xui/es/panel_snapshot_local.xml index 08c45d2e76..d0ea34d612 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Guardar en mi ordenador + Disco </text> <combo_box label="Resolución" name="local_size_combo"> <combo_box.item label="Ventana actual" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Personalizado" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Ancho" name="local_snapshot_width"/> - <spinner label="Altura" name="local_snapshot_height"/> - <check_box label="Mantener las proporciones" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Formato" name="local_format_combo"> - <combo_box.item label="PNG (sin pérdida)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (sin pérdida)" name="BMP"/> - </combo_box> - <slider label="Calidad de la imagen" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Ancho × alto" name="local_snapshot_width"/> + <check_box label="Mantener las proporciones" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Formato: + </text> + <combo_box label="Formato" name="local_format_combo"> + <combo_box.item label="PNG (sin pérdida)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (sin pérdida)" name="BMP"/> + </combo_box> + <slider label="Calidad:" name="image_quality_slider"/> <button label="Cancelar" name="cancel_btn"/> <flyout_button label="Guardar" name="save_btn" tool_tip="Guardar la imagen en un archivo"> <flyout_button.item label="Guardar" name="save_item"/> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml index f4bfc0e0b5..c1955f1fde 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Publicar en los comentarios de Mi perfil" name="save_to_profile_btn"/> - <button label="Correo-e" name="save_to_email_btn"/> - <button label="Guardar en Mi inventario ([AMOUNT] L$)" name="save_to_inventory_btn"/> - <button label="Guardar en mi ordenador" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Enviar a: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="Guardar en disco" name="save_to_computer_btn"/> + <button label="Guardar en inventario (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Subir al perfil" name="save_to_profile_btn"/> + <button label="Subir a Facebook" name="send_to_facebook_btn"/> + <button label="Subir a Twitter" name="send_to_twitter_btn"/> + <button label="Subir a Flickr" name="send_to_flickr_btn"/> + <button label="Enviar por correo electrónico" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml index 649d547ba0..357b432c4c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml @@ -10,8 +10,12 @@ Enviando... </string> <text name="title"> - Correo-e + Correo electrónico </text> - <button label="Mensaje" name="message_btn"/> - <button label="Ajustes" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="Mensaje" name="panel_postcard_message"/> + <panel label="Opciones" name="panel_postcard_settings"/> + </tab_container> + <button label="Cancelar" name="cancel_btn"/> + <button label="Enviar" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml index 6a0bc22d68..9fc925835f 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Publicar en los comentarios de Mi perfil + Perfil </text> <combo_box label="Resolución" name="profile_size_combo"> <combo_box.item label="Ventana actual" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Personalizado" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Ancho" name="profile_snapshot_width"/> - <spinner label="Altura" name="profile_snapshot_height"/> - <check_box label="Mantener las proporciones" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Título: - </text> - <check_box initial_value="true" label="Incluir ubicación" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Ancho × alto" name="profile_snapshot_width"/> + <check_box label="Mantener las proporciones" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Título: + </text> + <check_box initial_value="true" label="Incluir ubicación" name="add_location_cb"/> <button label="Cancelar" name="cancel_btn"/> <button label="Publicar" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_sound_devices.xml b/indra/newview/skins/default/xui/es/panel_sound_devices.xml index 9531b99cc8..9531b99cc8 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/es/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml index 350aec9c69..350aec9c69 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml index 7eead3bc18..8ea56c5262 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Pérdida de paquetes - </panel.string> - <panel.string name="bandwidth_tooltip"> - Ancho de banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Pérdida de paquetes</panel.string> + <panel.string name="bandwidth_tooltip">Ancho de banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-410" name="balance_bg" width="200"> - <text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="20 L$"/> + <text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="L$??"/> <button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/> <button label="Comprar" name="goShop" tool_tip="Abrir el mercado de Second Life" width="80"/> </panel> - <text name="TimeText" tool_tip="Hora actual (Pacífico)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Hora actual (Pacífico)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Iniciar/Parar todos los media (música, vídeo, páginas web)"/> <button name="volume_btn" tool_tip="Control general del volumen"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history.xml b/indra/newview/skins/default/xui/es/panel_teleport_history.xml index 364451b26b..364451b26b 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/es/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml index b5917319e0..b5917319e0 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/es/panel_twitter_photo.xml b/indra/newview/skins/default/xui/es/panel_twitter_photo.xml index be1896b33b..0ae790514a 100644 --- a/indra/newview/skins/default/xui/es/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/es/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - ¿Qué está ocurriendo? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="Incluir ubicación de SL" name="add_location_cb"/> - <check_box initial_value="true" label="Incluir una foto" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> - <combo_box.item label="Ventana actual" name="CurrentWindow"/> - <combo_box.item label="640 × 480" name="640x480"/> - <combo_box.item label="800 × 600" name="800x600"/> - <combo_box.item label="1024 × 768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> - <combo_box.item label="Sin filtro" name="NoFilter"/> - </combo_box> - <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> - <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Tuitear" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + ¿Qué está ocurriendo? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="Incluir ubicación de SL" name="add_location_cb"/> + <check_box initial_value="true" label="Incluir una foto" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Resolución de imagen"> + <combo_box.item label="Ventana actual" name="CurrentWindow"/> + <combo_box.item label="640 × 480" name="640x480"/> + <combo_box.item label="800 × 600" name="800x600"/> + <combo_box.item label="1024 × 768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagen"> + <combo_box.item label="Sin filtro" name="NoFilter"/> + </combo_box> + <button label="Actualizar" name="new_snapshot_btn" tool_tip="Pulsa para actualizar"/> + <button label="Vista previa" name="big_preview_btn" tool_tip="Pulsa para alternar entre vista previa sí/no"/> + <button label="Tuitear" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_voice_effect.xml b/indra/newview/skins/default/xui/es/panel_voice_effect.xml index 94a0428941..94a0428941 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/es/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml index 426783aa8e..426783aa8e 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/es/panel_world_map.xml b/indra/newview/skins/default/xui/es/panel_world_map.xml index b1dea02210..b1dea02210 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_world_map.xml +++ b/indra/newview/skins/default/xui/es/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/es/role_actions.xml b/indra/newview/skins/default/xui/es/role_actions.xml index 5e0c21992d..3928ca2ab7 100755..100644 --- a/indra/newview/skins/default/xui/es/role_actions.xml +++ b/indra/newview/skins/default/xui/es/role_actions.xml @@ -71,4 +71,8 @@ <action description="Abrir chat de voz del grupo" longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat de voz del grupo. NOTA: para acceder al chat de voz debe tenerse la capacidad 'Abrir chat de grupo'." name="join voice chat" value="27"/> <action description="Moderar el chat de grupo" longdescription="Quien tenga esta capacidad puede controlar el acceso y la participación en los chats de texto y de voz del grupo." name="moderate group chat" value="37"/> </action_set> + <action_set description="Estas capacidades incluyen la posibilidad de modificar las experiencias propiedad del grupo." name="experience_tools_experience"> + <action description="Admin. de la experiencia" longdescription="Los miembros con un rol que tenga esta capacidad pueden editar los metadatos de una experiencia." name="experience admin" value="49"/> + <action description="Colaborador de la experiencia" longdescription="Los miembros con un rol que tenga esta capacidad pueden incluir scripts en una experiencia." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/es/sidepanel_appearance.xml b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml index bdef89c392..bdef89c392 100755..100644 --- a/indra/newview/skins/default/xui/es/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml index 1e25a4a4a2..1e25a4a4a2 100755..100644 --- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml 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 176247f90e..8132bbdb1b 100755..100644 --- a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Perfil del elemento"> + <panel.string name="loading_experience"> + (cargando) + </panel.string> <panel.string name="unknown"> (desconocidas) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Obtenido: </text> + <text name="LabelItemExperienceTitle"> + Experiencia: + </text> <panel name="perms_inv"> <text name="perm_modify"> Tú puedes: @@ -66,8 +72,9 @@ <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 name="ComboBoxSaleType"> <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Contenidos" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Precio: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml index cb061796e7..b9c8139f16 100755..100644 --- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Perfil del objeto"> - <panel.string name="text deed continued"> - Transferir - </panel.string> - <panel.string name="text deed"> - Transferir - </panel.string> - <panel.string name="text modify info 1"> - Puedes modificar este objeto - </panel.string> - <panel.string name="text modify info 2"> - Puedes modificar estos objetos - </panel.string> - <panel.string name="text modify info 3"> - No puedes modificar este objeto - </panel.string> - <panel.string name="text modify info 4"> - No puedes modificar estos objetos - </panel.string> - <panel.string name="text modify info 5"> - No se puede modificar este objeto a través del límite de una región - </panel.string> - <panel.string name="text modify info 6"> - No se pueden modificar estos objetos a través del límite de una región - </panel.string> - <panel.string name="text modify warning"> - Este objeto tiene partes enlazadas - </panel.string> - <panel.string name="Cost Default"> - Precio: L$ - </panel.string> - <panel.string name="Cost Total"> - Precio total: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Price Per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mixed Price - </panel.string> - <panel.string name="Sale Mixed"> - Mixed Sale - </panel.string> + <panel.string name="text deed continued">Transferir</panel.string> + <panel.string name="text deed">Transferir</panel.string> + <panel.string name="text modify info 1">Puedes modificar este objeto</panel.string> + <panel.string name="text modify info 2">Puedes modificar estos objetos</panel.string> + <panel.string name="text modify info 3">No puedes modificar este objeto</panel.string> + <panel.string name="text modify info 4">No puedes modificar estos objetos</panel.string> + <panel.string name="text modify info 5">No se puede modificar este objeto a través del límite de una región</panel.string> + <panel.string name="text modify info 6">No se pueden modificar estos objetos a través del límite de una región</panel.string> + <panel.string name="text modify warning">Este objeto tiene partes enlazadas</panel.string> + <panel.string name="Cost Default">Precio: L$</panel.string> + <panel.string name="Cost Total">Precio total: L$</panel.string> + <panel.string name="Cost Per Unit">Price Per: L$</panel.string> + <panel.string name="Cost Mixed">Mixed Price</panel.string> + <panel.string name="Sale Mixed">Mixed Sale</panel.string> <text name="title" value="Perfil del objeto"/> <text name="where" value="(En el mundo)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nombre: - </text> - <text name="Description:"> - Descripción: - </text> - <text name="CreatorNameLabel"> - Creador: - </text> - <text name="Owner:"> - Propietario: - </text> - <text name="Group_label"> - Grupo: - </text> + <text name="Name:">Nombre:</text> + <text name="Description:">Descripción:</text> + <text name="CreatorNameLabel">Creador:</text> + <text name="Owner:">Propietario:</text> + <text name="Group_label">Grupo:</text> <button 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."/> - <text name="label click action"> - Pulsa para: - </text> + <text name="label click action">Pulsa para:</text> <combo_box name="clickaction"> <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/> <combo_box.item label="Sentarme en el objeto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Puedes modificar este objeto - </text> - <text name="Anyone can:"> - Cualquiera: - </text> + <text name="perm_modify">Puedes modificar este objeto</text> + <text name="Anyone can:">Cualquiera:</text> <check_box label="Copiar" name="checkbox allow everyone copy"/> <check_box label="Mover" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartir" name="checkbox share with group" 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> + <text name="NextOwnerLabel">Próximo propietario:</text> <check_box label="Modificar" name="checkbox next owner can modify"/> <check_box label="Copiar" name="checkbox next owner can copy"/> <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Precio: L$" name="Edit Cost"/> <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Permitir que la gente vea este objeto en los resultados de la búsqueda"/> - <text name="pathfinding_attributes_label"> - Atributos de pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Atributos de pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Abrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index bd339513b3..bda88fad7c 100755..100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -29,7 +29,7 @@ Error de inicialización de gráficos. Actualiza tu controlador de gráficos. </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> @@ -440,30 +440,51 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="TooltipMustSingleDrop"> Aquí se puede arrastrar sólo un ítem </string> + <string name="TooltipTooManyWearables"> + No puedes tener una carpeta de prendas que contenga más de [AMOUNT] elementos. Puedes cambiar este límite en Avanzado > Mostrar las configuraciones del depurador > WearFolderLimit. + </string> <string name="TooltipPrice" value="[AMOUNT] L$:"/> <string name="TooltipOutboxDragToWorld"> - No puedes colocar objetos en tu buzón de salida de comerciante + No se pueden mostrar artículos desde la carpeta Artículos del mercado + </string> + <string name="TooltipOutboxWorn"> + Los artículos que tienes puestos no se pueden colocar en la carpeta Artículos del mercado + </string> + <string name="TooltipOutboxFolderLevels"> + La profundidad de carpetas anidadas excede de [AMOUNT]. Disminuye la profundidad de las carpetas anidadas; si es necesario, agrupa los artículos. + </string> + <string name="TooltipOutboxTooManyFolders"> + La cantidad de subcarpetas excede de [AMOUNT]. Disminuye la cantidad de carpetas de tu lista de artículos; si es necesario, agrupa los artículos. + </string> + <string name="TooltipOutboxTooManyObjects"> + La cantidad de artículos excede de [AMOUNT]. Para vender más de [AMOUNT] artículos en la misma lista, debes agrupar algunos. + </string> + <string name="TooltipOutboxTooManyStockItems"> + La cantidad de artículos en stock excede de [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Solo se pueden soltar artículos o carpetas en la pestaña TODOS. Selecciona esta pestaña y mueve otra vez los artículos o carpetas. </string> <string name="TooltipOutboxNoTransfer"> - Uno o varios de estos objetos no se pueden vender o transferir. + Uno o varios de estos objetos no se pueden vender o transferir </string> <string name="TooltipOutboxNotInInventory"> - Tu buzón de salida de comerciante sólo puede aceptar objetos procedentes directamente de tu inventario + Solo puedes colocar en el mercado artículos de tu inventario </string> - <string name="TooltipOutboxWorn"> - No puedes poner artículos que llevas puestos en el buzón de salida de comerciante + <string name="TooltipOutboxLinked"> + No puedes poner carpetas o artículos vinculados en el Mercado </string> <string name="TooltipOutboxCallingCard"> - No puedes poner tarjetas de visita en tu buzón de salida de comerciante + No puedes colocar tarjetas de visita en el Mercado </string> - <string name="TooltipOutboxFolderLevels"> - La profundidad de carpetas anidadas excede de 3 + <string name="TooltipOutboxDragActive"> + No se puede mover una lista de artículos publicada </string> - <string name="TooltipOutboxTooManyFolders"> - El número de subcarpetas de la carpeta de nivel superior excede de 20 + <string name="TooltipOutboxCannotMoveRoot"> + No se puede mover la carpeta raíz de artículos del Mercado </string> - <string name="TooltipOutboxTooManyObjects"> - El número de elementos de la carpeta de nivel superior excede de 200 + <string name="TooltipOutboxMixedStock"> + Todos los artículos de una carpeta de stock deben tener el mismo tipo y permiso </string> <string name="TooltipDragOntoOwnChild"> No puedes mover una carpeta a su carpeta secundaria @@ -1042,9 +1063,7 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="AgentNameSubst"> (Tú) </string> - <string name="JoinAnExperience"> - Únete a una experiencia - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Suprimir alertas al gestionar las listas de acceso a un estado </string> @@ -1111,6 +1130,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="bitmap_image_files"> Imágenes de mapa de bits </string> + <string name="png_image_files"> + Imágenes PNG + </string> + <string name="save_texture_image_files"> + Imágenes Targa o PNG + </string> <string name="avi_movie_file"> Archivo de película AVI </string> @@ -1360,6 +1385,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="FavoritesNoMatchingItems"> Arrastra aquí un hito para tenerlo en tus favoritos. </string> + <string name="MarketplaceNoMatchingItems"> + No se han encontrado artículos. Comprueba si has escrito correctamente la cadena de búsqueda y vuelve a intentarlo. + </string> <string name="InventoryNoTexture"> No tienes en tu inventario una copia de esta textura </string> @@ -1407,29 +1435,95 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InventoryOutboxError"> La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores. </string> + <string name="InventoryMarketplaceError"> + Esta función está actualmente en versión beta. Si quieres participar, añade tu nombre a este [http://goo.gl/forms/FCQ7UXkakz Formulario de Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Tu carpeta Artículos del mercado está vacía. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Arrastra carpetas a esta sección para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado]. + </string> + <string name="Marketplace Validation Warning Stock"> + La carpeta de stock debe estar contenida en una carpeta de versión + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Error: todos los artículos de una carpeta de stock deben ser del mismo tipo y que no se puedan copiar + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Error: la carpeta de stock no puede contener subcarpetas + </string> + <string name="Marketplace Validation Warning Empty"> + : Atención: la carpeta no contiene ningún artículo + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Atención: creando carpeta de stock + </string> + <string name="Marketplace Validation Warning Create Version"> + : Atención: creando la carpeta de versión + </string> + <string name="Marketplace Validation Warning Move"> + : Atención: moviendo artículos + </string> + <string name="Marketplace Validation Warning Delete"> + : Atención: se ha transferido el contenido de la carpeta a la carpeta de stock, y se eliminará la carpeta vacía + </string> + <string name="Marketplace Validation Error Stock Item"> + : Error: los artículos que no se pueden copiar deben estar contenidos en una carpeta de stock + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Atención: los artículos deben estar contenidos en una carpeta de versión + </string> + <string name="Marketplace Validation Error"> + : Error: + </string> + <string name="Marketplace Validation Warning"> + : Atención: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Atención: la carpeta de versión debe contener al menos un artículo + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Atención: la carpeta de stock debe contener al menos un artículo + </string> + <string name="Marketplace Validation No Error"> + No se han producido errores ni advertencias + </string> <string name="Marketplace Error None"> Sin errores </string> + <string name="Marketplace Error Prefix"> + Error: + </string> <string name="Marketplace Error Not Merchant"> - Error: Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis). + Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis). </string> - <string name="Marketplace Error Empty Folder"> - Error: Esta carpeta está vacía. + <string name="Marketplace Error Not Accepted"> + No se puede mover el artículo a esa carpeta. </string> - <string name="Marketplace Error Unassociated Products"> - Error: Este objeto no se pudo subir porque tu cuenta de comerciante tiene demasiados objetos que no están asociados a productos. Para corregirlo, inicia sesión en la página web del mercado y asocia más objetos. + <string name="Marketplace Error Unsellable Item"> + Este artículo no se puede vender en el Mercado. </string> - <string name="Marketplace Error Object Limit"> - Error: Este elemento contiene demasiados objetos. Para corregir el error, guarda objetos en cajas de forma que el total de objetos sea menor que 200. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - Error: Este objeto contiene demasiados niveles de carpetas anidadas. Reorganízalo de forma que tenga como máximo 3 niveles de carpetas anidadas. + <string name="MarketplaceLive"> + en la lista </string> - <string name="Marketplace Error Unsellable Item"> - Error: Este objeto no se puede vender en el mercado. + <string name="MarketplaceActive"> + activa </string> - <string name="Marketplace Error Internal Import"> - Error: Este objeto tiene un problema. Vuelve a intentarlo más tarde. + <string name="MarketplaceMax"> + máx. + </string> + <string name="MarketplaceStock"> + stock + </string> + <string name="MarketplaceNoStock"> + existencias agotadas + </string> + <string name="MarketplaceUpdating"> + actualizando... </string> <string name="Open landmarks"> Abrir hitos @@ -1450,6 +1544,7 @@ Intenta iniciar sesión de nuevo en unos instantes. No hay contenido </string> <string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (activo)"/> <string name="Chat Message" value="Chat:"/> <string name="Sound" value="Sonido :"/> @@ -1714,6 +1809,15 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="Invalid Attachment"> Punto de colocación no válido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Error: falta un artículo + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Error: falta el artículo de base + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Error: el objeto se encuentra en el vestuario actual, pero no está anexado + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de edad </string> @@ -1882,6 +1986,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="SaveComplete"> Guardado. </string> + <string name="UploadFailed"> + Error al subir el archivo: + </string> <string name="ObjectOutOfRange"> Script (objeto fuera de rango) </string> @@ -1891,6 +1998,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="GroupsNone"> ninguno </string> + <string name="CompileNoExperiencePerm"> + Omitiendo el script [SCRIPT] con la experiencia [EXPERIENCE]. + </string> <string name="Group" value="(grupo)"/> <string name="Unknown"> (Desconocido) @@ -4976,6 +5086,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Marketplace_Label"> Mercado </string> + <string name="Command_MarketplaceListings_Label"> + Mercado + </string> <string name="Command_MiniMap_Label"> Minimapa </string> @@ -5063,6 +5176,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Marketplace_Tooltip"> Ir de compras </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vende tu creación + </string> <string name="Command_MiniMap_Tooltip"> Mostrar la gente que está cerca </string> @@ -5186,4 +5302,85 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="loading_chat_logs"> Cargando... </string> + <string name="experience_tools_experience"> + Experiencia + </string> + <string name="ExperienceNameNull"> + (sin experiencia) + </string> + <string name="ExperienceNameUntitled"> + (experiencia sin título) + </string> + <string name="Land-Scope"> + Activa en el terreno + </string> + <string name="Grid-Scope"> + Activa en el Grid + </string> + <string name="Allowed_Experiences_Tab"> + PERMITIDO + </string> + <string name="Blocked_Experiences_Tab"> + BLOQUEADO + </string> + <string name="Contrib_Experiences_Tab"> + COLABORADOR + </string> + <string name="Admin_Experiences_Tab"> + ADMIN. + </string> + <string name="Recent_Experiences_Tab"> + RECIENTE + </string> + <string name="Owned_Experiences_Tab"> + PROPIEDAD + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], máx. [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + hacerte con tus controles + </string> + <string name="ExperiencePermission3"> + activar animaciones en tu avatar + </string> + <string name="ExperiencePermission4"> + anexar a tu avatar + </string> + <string name="ExperiencePermission9"> + seguimiento de la cámara + </string> + <string name="ExperiencePermission10"> + controlar tu cámara + </string> + <string name="ExperiencePermission11"> + teleportarte + </string> + <string name="ExperiencePermission12"> + aceptar automáticamente permisos de experiencias + </string> + <string name="ExperiencePermissionShortUnknown"> + ha realizado una operación desconocida: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Ponerte al mando + </string> + <string name="ExperiencePermissionShort3"> + Activar animaciones + </string> + <string name="ExperiencePermissionShort4"> + Anexar + </string> + <string name="ExperiencePermissionShort9"> + Seguir la cámara + </string> + <string name="ExperiencePermissionShort10"> + Controlar la cámara + </string> + <string name="ExperiencePermissionShort11"> + Teleportarte + </string> + <string name="ExperiencePermissionShort12"> + Otorgar permisos + </string> </strings> diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml index 94975a83f8..a9b351b39c 100755..100644 --- a/indra/newview/skins/default/xui/es/teleport_strings.xml +++ b/indra/newview/skins/default/xui/es/teleport_strings.xml @@ -47,6 +47,9 @@ Para repetir el tutorial, visita la isla de bienvenida pública. <message name="MustGetAgeRegion"> Solo pueden acceder a esta región los mayores de 18 años. </message> + <message name="RegionTPSpecialUsageBlocked"> + No puedes entrar en la región. '[REGION_NAME]' es una región de juegos de habilidad, y debes cumplir determinados criterios para poder entrar en ella. Consulta los detalles en las [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life P+F de juegos de habilidad]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/es/xui_version.xml b/indra/newview/skins/default/xui/es/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/es/xui_version.xml +++ b/indra/newview/skins/default/xui/es/xui_version.xml diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index 384966354e..08f26e60b4 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="À PROPOS DE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Compilé avec [COMPILER] version [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL : <nolink>[SLURL]</nolink> -(coordonnées globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU : [CPU] -Mémoire : [MEMORY_MB] Mo -Version OS : [OS_VERSION] -Distributeur de cartes graphiques : [GRAPHICS_CARD_VENDOR] -Cartes graphiques : [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Version OpenGL : [OPENGL_VERSION] - -Version libcurl : [LIBCURL_VERSION] -Version J2C Decoder : [J2C_VERSION] -Version Audio Driver : [AUDIO_DRIVER_VERSION] -Version Qt Webkit : [QT_WEBKIT_VERSION] -Version serveur vocal : [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (aucun) - </floater.string> - <floater.string name="AboutTraffic"> - Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Erreur lors de la récupération de l'URL des notes de version du serveur. - </floater.string> <tab_container name="about_tab"> <panel label="Infos" name="support_panel"> <button label="Copier dans le presse-papiers" name="copy_btn"/> </panel> <panel label="Remerciements" name="credits_panel"> - <text name="linden_intro"> - Second Life vous est proposé par les Linden : - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - Contributions Open Source : - </text> - <text_editor name="contrib_names"> - Dummy Name remplacé au moment de l'exécution - </text_editor> - <text name="trans_intro"> - Participation aux traductions : - </text> - <text_editor name="trans_names"> - Dummy Name remplacé au moment de l'exécution - </text_editor> + <text name="linden_intro">Second Life vous est proposé par les Linden, +avec les contributions Open Source de :</text> + <text_editor name="contrib_names">Dummy Name remplacé au moment de l'exécution</text_editor> </panel> <panel label="Licences" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -95,8 +37,7 @@ Version serveur vocal : [VOICE_VERSION] Tous droits réservés. Voir licenses.txt pour plus d'informations. - Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml index 25c49b97b5..3de282e8d5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -312,9 +312,6 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <panel.string name="push_restrict_region_text"> Pas de bousculades (les règles de la région priment) </panel.string> - <panel.string name="see_avs_text"> - Les avatars sur les autres parcelles peuvent voir - </panel.string> <text name="allow_label"> Autoriser les autres résidents à : </text> @@ -340,22 +337,6 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n'y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/> <check_box label="Pas de bousculades" name="PushRestrictCheck" tool_tip="Empêche l'utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/> <check_box label="Voir le lieu dans la recherche (30 L$/sem.)" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/> - <combo_box name="land category with adult"> - <combo_box.item label="Toutes catégories" name="item0"/> - <combo_box.item label="Appartenant aux Lindens" name="item1"/> - <combo_box.item label="Adult" name="item2"/> - <combo_box.item label="Art et Culture" name="item3"/> - <combo_box.item label="Affaires" name="item4"/> - <combo_box.item label="Éducation" name="item5"/> - <combo_box.item label="Jeux" name="item6"/> - <combo_box.item label="Favoris" name="item7"/> - <combo_box.item label="Accueil pour les nouveaux" name="item8"/> - <combo_box.item label="Parcs et Nature" name="item9"/> - <combo_box.item label="Résidentiel" name="item10"/> - <combo_box.item label="Shopping" name="item11"/> - <combo_box.item label="Location" name="item13"/> - <combo_box.item label="Autre" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Toutes catégories" name="item0"/> <combo_box.item label="Appartenant aux Lindens" name="item1"/> @@ -456,15 +437,9 @@ musique : <panel.string name="access_estate_defined"> (défini par le domaine </panel.string> - <panel.string name="allow_public_access"> - Autoriser l'accès public ([MATURITY]) (Remarque : des lignes d'interdiction seront créées si cette case n'est pas cochée) - </panel.string> <panel.string name="estate_override"> Au moins une de ces options est définie au niveau du domaine. </panel.string> - <text name="Limit access to this parcel to:"> - Accès à cette parcelle - </text> <check_box label="Autoriser l'accès public (des lignes d'interdiction seront créées si cette case n'est pas cochée)" name="public_access"/> <text name="Only Allow"> Conditions d'accès des résidents : @@ -496,5 +471,6 @@ musique : <button label="Supprimer" label_selected="Supprimer" name="remove_banned"/> </panel> </panel> + <panel label="EXPÉRIENCES" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_activeim.xml b/indra/newview/skins/default/xui/fr/floater_activeim.xml index 18e3d66bb7..18e3d66bb7 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_activeim.xml +++ b/indra/newview/skins/default/xui/fr/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml index e82518ce80..e82518ce80 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml index 84c40b5987..a20b8cdf72 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ La limite maximale est de [MAX_LENGTH] secondes. Expression </text> <combo_box name="emote_combo" tool_tip="Contrôle ce que fait le visage pendant l'animation."> - <item label="(Aucune)" name="[None]" value=""/> - <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> - <item label="Effrayé" name="Afraid" value="Effrayé"/> - <item label="En colère" name="Angry" value="En colère"/> - <item label="Grand sourire" name="BigSmile" value="Grand sourire"/> - <item label="Ennui" name="Bored" value="Ennui"/> - <item label="Pleurer" name="Cry" value="Pleurer"/> - <item label="Mépris" name="Disdain" value="Mépris"/> - <item label="Gêne" name="Embarrassed" value="Gêne"/> - <item label="Froncer les sourcils" name="Frown" value="Froncer les sourcils"/> - <item label="Embrasser" name="Kiss" value="Embrasser"/> - <item label="Rire" name="Laugh" value="Rire"/> - <item label="Tirer la langue" name="Plllppt" value="Tirer la langue"/> - <item label="Dégoût" name="Repulsed" value="Dégoût"/> - <item label="Triste" name="Sad" value="Triste"/> - <item label="Hausser les épaules" name="Shrug" value="Hausser les épaules"/> - <item label="Sourire" name="Smile" value="Sourire"/> - <item label="Surprise" name="Surprise" value="Surprise"/> - <item label="Clin d'œil" name="Wink" value="Clin d'œil"/> - <item label="Inquiétude" name="Worry" value="Inquiétude"/> + <item label="(Aucune)" name="[None]"/> + <item label="Aaaaah" name="Aaaaah"/> + <item label="Effrayé" name="Afraid"/> + <item label="En colère" name="Angry"/> + <item label="Grand sourire" name="BigSmile"/> + <item label="Ennui" name="Bored"/> + <item label="Pleurer" name="Cry"/> + <item label="Mépris" name="Disdain"/> + <item label="Gêne" name="Embarrassed"/> + <item label="Froncer les sourcils" name="Frown"/> + <item label="Embrasser" name="Kiss"/> + <item label="Rire" name="Laugh"/> + <item label="Tirer la langue" name="Plllppt"/> + <item label="Dégoût" name="Repulsed"/> + <item label="Triste" name="Sad"/> + <item label="Hausser les épaules" name="Shrug"/> + <item label="Sourire" name="Smile"/> + <item label="Surprise" name="Surprise"/> + <item label="Clin d'œil" name="Wink"/> + <item label="Inquiétude" name="Worry"/> </combo_box> <text name="preview_label"> Aperçu </text> <combo_box name="preview_base_anim" tool_tip="Permet de tester le comportement de l'animation lorsque votre avatar effectue certaines actions courantes."> - <item label="Debout" name="Standing" value="Debout"/> - <item label="En marche" name="Walking" value="En marche"/> - <item label="Assis" name="Sitting" value="Assis"/> - <item label="En vol" name="Flying" value="En vol"/> + <item label="Debout" name="Standing"/> + <item label="En marche" name="Walking"/> + <item label="Assis" name="Sitting"/> + <item label="En vol" name="Flying"/> </combo_box> <spinner label="Transition début (s)" name="ease_in_time" tool_tip="Durée (en secondes) de l'entrée en fondu de l'animation."/> <spinner label="Transition fin (s)" name="ease_out_time" tool_tip="Durée (en secondes) de la sortie en fondu de l'animation."/> diff --git a/indra/newview/skins/default/xui/fr/floater_associate_listing.xml b/indra/newview/skins/default/xui/fr/floater_associate_listing.xml new file mode 100644 index 0000000000..3c61cfe4ca --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIER L'ANNONCE"> + <text name="message">ID d'annonce :</text> + <line_editor name="listing_id">Saisir l'ID ici</line_editor> + <button label="OK" name="OK"/> + <button label="Annuler" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_auction.xml b/indra/newview/skins/default/xui/fr/floater_auction.xml index 6cef2a3591..6cef2a3591 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_auction.xml +++ b/indra/newview/skins/default/xui/fr/floater_auction.xml diff --git a/indra/newview/skins/default/xui/fr/floater_autoreplace.xml b/indra/newview/skins/default/xui/fr/floater_autoreplace.xml index 1d19181692..1d19181692 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/fr/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/fr/floater_avatar.xml b/indra/newview/skins/default/xui/fr/floater_avatar.xml index 7cbb50a3d6..7cbb50a3d6 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml index 74de4ddb1c..74de4ddb1c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml index e1786eafc7..e1786eafc7 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/fr/floater_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml index ebd4dab683..ebd4dab683 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_beacons.xml +++ b/indra/newview/skins/default/xui/fr/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/fr/floater_build_options.xml b/indra/newview/skins/default/xui/fr/floater_build_options.xml index a200ed192f..a200ed192f 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_build_options.xml +++ b/indra/newview/skins/default/xui/fr/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml index 7ee4441758..7ee4441758 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/fr/floater_bumps.xml b/indra/newview/skins/default/xui/fr/floater_bumps.xml index 32714ea09c..32714ea09c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_bumps.xml +++ b/indra/newview/skins/default/xui/fr/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml index 0436dc8a91..0436dc8a91 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml index 148a5a35d2..148a5a35d2 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml index 953fca3544..953fca3544 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml index b7f8f36f81..b7f8f36f81 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/fr/floater_buy_object.xml b/indra/newview/skins/default/xui/fr/floater_buy_object.xml index 519e741a25..519e741a25 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml index 893e389f69..893e389f69 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_camera.xml +++ b/indra/newview/skins/default/xui/fr/floater_camera.xml diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml index 7dcb9a280d..7dcb9a280d 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/fr/floater_choose_group.xml b/indra/newview/skins/default/xui/fr/floater_choose_group.xml index b73bedd7b5..b73bedd7b5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/fr/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml index c54e3e9ce0..c54e3e9ce0 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/fr/floater_critical.xml b/indra/newview/skins/default/xui/fr/floater_critical.xml index 6d30d97048..6d30d97048 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_critical.xml +++ b/indra/newview/skins/default/xui/fr/floater_critical.xml diff --git a/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml index 035bdbe5f3..035bdbe5f3 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/fr/floater_destinations.xml b/indra/newview/skins/default/xui/fr/floater_destinations.xml index 25e6c90a8e..25e6c90a8e 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_destinations.xml +++ b/indra/newview/skins/default/xui/fr/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/fr/floater_display_name.xml b/indra/newview/skins/default/xui/fr/floater_display_name.xml index eebe7abf2c..eebe7abf2c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_display_name.xml +++ b/indra/newview/skins/default/xui/fr/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml index 5ec68458e1..5ec68458e1 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml new file mode 100644 index 0000000000..28e7e87193 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="DÉFINIR LA HAUTEUR DE SUSTENTATION"> + <slider label="Hauteur" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml index 4ec9bbb3dd..4ec9bbb3dd 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml index 81d9d34cfb..81d9d34cfb 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/fr/floater_environment_settings.xml b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml index ea12749d27..ea12749d27 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/fr/floater_event.xml b/indra/newview/skins/default/xui/fr/floater_event.xml index 67d70ac003..67d70ac003 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_event.xml +++ b/indra/newview/skins/default/xui/fr/floater_event.xml diff --git a/indra/newview/skins/default/xui/fr/floater_experience_search.xml b/indra/newview/skins/default/xui/fr/floater_experience_search.xml new file mode 100644 index 0000000000..b7a175a066 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="CHOISIR UNE EXPÉRIENCE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_experienceprofile.xml b/indra/newview/skins/default/xui/fr/floater_experienceprofile.xml new file mode 100644 index 0000000000..080c6e4dde --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (aucun) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Profil de l'expérience"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Modifier" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Catégorie : + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Endroit : + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Propriétaire : + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Groupe : + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Autoriser" name="allow_btn"/> + <button label="Oublier" name="forget_btn"/> + <button label="Bloquer" name="block_btn"/> + <text name="privileged"> + Cette expérience est activée pour tous les résidents. + </text> + <button label="Signaler une infraction" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Nom :"/> + <text name="edit_experience_desc_label" value="Description :"/> + <button label="Groupe" name="Group_btn"/> + <text name="edit_ContentRating"> + Catégorie : + </text> + <icons_combo_box label="Modéré" name="edit_ContentRatingText" tool_tip="Si vous augmentez la catégorie de contenu pour une expérience, les permissions seront réinitialisées pour tous les résidents ayant autorisé l'expérience."> + <icons_combo_box.item label="Adulte" name="Adult" value="42"/> + <icons_combo_box.item label="Modéré" name="Mature" value="21"/> + <icons_combo_box.item label="Général" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Endroit : + </text> + <button label="Définir sur l'emplacement actuel" name="location_btn"/> + <button label="Effacer l'emplacement" name="clear_btn"/> + <check_box label="Activer l'expérience" name="edit_enable_btn" tool_tip=""/> + <check_box label="Cacher dans les résultats de recherche" name="edit_private_btn"/> + <text name="changes" value="Il peut falloir plusieurs minutes pour que l'expérience soit visible dans toutes les régions."/> + <button label="Retour" name="cancel_btn"/> + <button label="Enregistrer" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_experiences.xml b/indra/newview/skins/default/xui/fr/floater_experiences.xml new file mode 100644 index 0000000000..d130129a25 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="EXPÉRIENCES"/> diff --git a/indra/newview/skins/default/xui/fr/floater_facebook.xml b/indra/newview/skins/default/xui/fr/floater_facebook.xml index 12a3c9ae61..f5097e7a88 100644 --- a/indra/newview/skins/default/xui/fr/floater_facebook.xml +++ b/indra/newview/skins/default/xui/fr/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="PUBLIER SUR FACEBOOK"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="STATUT" name="panel_facebook_status"/> - <panel label="PHOTO" name="panel_facebook_photo"/> - <panel label="INDIQUER VOTRE PRÉSENCE" name="panel_facebook_place"/> - <panel label="AMIS" name="panel_facebook_friends"/> - <panel label="COMPTE" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Erreur - </text> - <text name="connection_loading_text"> - Chargement... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="STATUT" name="panel_facebook_status"/> + <panel label="PHOTO" name="panel_facebook_photo"/> + <panel label="INDIQUER VOTRE PRÉSENCE" name="panel_facebook_place"/> + <panel label="AMIS" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Erreur + </text> + <text name="connection_loading_text"> + Chargement... + </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml index 0100b10557..0100b10557 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/fr/floater_font_test.xml b/indra/newview/skins/default/xui/fr/floater_font_test.xml index 974a5ca3a2..974a5ca3a2 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_font_test.xml +++ b/indra/newview/skins/default/xui/fr/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/fr/floater_gesture.xml b/indra/newview/skins/default/xui/fr/floater_gesture.xml index 5ead1cae3a..5ead1cae3a 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml index 0d21a8af32..0d21a8af32 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml index bb146556ba..bb146556ba 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml index 11caca640c..11caca640c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/fr/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/fr/floater_how_to.xml b/indra/newview/skins/default/xui/fr/floater_how_to.xml index a414212ba0..a414212ba0 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_how_to.xml +++ b/indra/newview/skins/default/xui/fr/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/fr/floater_hud.xml b/indra/newview/skins/default/xui/fr/floater_hud.xml index f212f113b3..f212f113b3 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_hud.xml +++ b/indra/newview/skins/default/xui/fr/floater_hud.xml diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml index f0b17e8437..f0b17e8437 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_im_container.xml +++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml 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 6d98f0a846..6d98f0a846 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_im_session.xml +++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/fr/floater_image_preview.xml b/indra/newview/skins/default/xui/fr/floater_image_preview.xml index 3d405f358d..3d405f358d 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_import_collada.xml b/indra/newview/skins/default/xui/fr/floater_import_collada.xml index 03804c4bd5..03804c4bd5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/fr/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml index 9e6946ba9e..9e6946ba9e 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml index 9b1bdf106d..9b1bdf106d 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_inspect.xml +++ b/indra/newview/skins/default/xui/fr/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml index f2eb3cb6bc..1d4e7c818f 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPRIÉTÉS DES ARTICLES DE L'INVENTAIRE"> - <floater.string name="unknown"> - (inconnu) - </floater.string> - <floater.string name="public"> - (public) - </floater.string> - <floater.string name="you_can"> - Vous pouvez : - </floater.string> - <floater.string name="owner_can"> - Le propriétaire peut : - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nom : - </text> - <text name="LabelItemDescTitle"> - Description : - </text> - <text name="LabelCreatorTitle"> - Créateur : - </text> + <floater.string name="unknown">(inconnu)</floater.string> + <floater.string name="public">(public)</floater.string> + <floater.string name="you_can">Vous pouvez :</floater.string> + <floater.string name="owner_can">Le propriétaire peut :</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nom :</text> + <text name="LabelItemDescTitle">Description :</text> + <text name="LabelCreatorTitle">Créateur :</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propriétaire : - </text> + <text name="LabelOwnerTitle">Propriétaire :</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquis : - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Vous : - </text> + <text name="LabelAcquiredTitle">Acquis :</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Vous :</text> <check_box label="Modifier" name="CheckOwnerModify"/> <check_box label="Copier" name="CheckOwnerCopy"/> <check_box label="Revendre" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel" width="80"> - N'importe qui : - </text> + <text name="AnyoneLabel" width="80">N'importe qui :</text> <check_box label="Copier" name="CheckEveryoneCopy"/> - <text name="GroupLabel" width="80"> - Groupe : - </text> + <text name="GroupLabel" width="80">Groupe :</text> <check_box label="Partager" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="192"> - Le prochain propriétaire : - </text> + <text name="NextOwnerLabel" width="192">Le prochain propriétaire :</text> <check_box label="Modifier" name="CheckNextOwnerModify"/> <check_box label="Copier" name="CheckNextOwnerCopy"/> <check_box label="Revendre" name="CheckNextOwnerTransfer"/> <check_box label="À vendre" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Contenu" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Prix :" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml index 7567817f3a..fdc4000746 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Habits" name="check_clothing"/> <check_box label="Gestes" name="check_gesture"/> <check_box label="Repères" name="check_landmark"/> - <check_box label="Maillages" name="check_mesh"/> <check_box label="Notes" name="check_notecard"/> + <check_box label="Maillages" name="check_mesh"/> <check_box label="Objets" name="check_object"/> <check_box label="Scripts" name="check_script"/> <check_box label="Sons" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> Ou il y a... </text> + <radio_group name="date_search_direction"> + <radio_item label="Ultérieure à" name="newer"/> + <radio_item label="Antérieure à" name="older"/> + </radio_group> <spinner label="Heures" name="spin_hours_ago"/> <spinner label="Jours" name="spin_days_ago"/> <button label="Fermer" label_selected="Fermer" name="Close"/> diff --git a/indra/newview/skins/default/xui/fr/floater_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_item_properties.xml new file mode 100644 index 0000000000..5301e759ee --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPRIÉTÉS DE L'ARTICLE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml index 02ac21bf82..02ac21bf82 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_joystick.xml +++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml index 39a861d8bd..c93ca5aacb 100644 --- a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml @@ -25,7 +25,7 @@ Normal, fenêtre en arrière-plan </floater.string> <floater.string name="client_frame_time_critical_msg"> - Taux de défilement [CLIENT_FRAME_RATE_CRITICAL] + Taux de défilement client ci-dessous [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> Taux de défilement entre [CLIENT_FRAME_RATE_CRITICAL] et [CLIENT_FRAME_RATE_WARNING] @@ -34,16 +34,16 @@ Normal </floater.string> <floater.string name="client_draw_distance_cause_msg"> - Cause possible : limite d'affichage trop élevée + Cause possible : la limite d'affichage est trop élevée </floater.string> <floater.string name="client_texture_loading_cause_msg"> - Cause possible : images en cours de chargement + Cause possible : images en cours de chargement </floater.string> <floater.string name="client_texture_memory_cause_msg"> - Cause possible : trop d'images en mémoire + Cause possible : trop d'images en mémoire </floater.string> <floater.string name="client_complex_objects_cause_msg"> - Cause possible : trop d'objets complexes + Cause possible : trop d'objets complexes dans la scène </floater.string> <floater.string name="network_text_msg"> Réseau @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - La connexion perd plus de [NETWORK_PACKET_LOSS_CRITICAL] % de paquets + La connexion perd plus de [NETWORK_PACKET_LOSS_CRITICAL] % de paquets </floater.string> <floater.string name="network_packet_loss_warning_msg"> - La connexion perd entre [NETWORK_PACKET_LOSS_WARNING] % et [NETWORK_PACKET_LOSS_CRITICAL] % de paquets + La connexion perd entre [NETWORK_PACKET_LOSS_WARNING] % et [NETWORK_PACKET_LOSS_CRITICAL] % de paquets </floater.string> <floater.string name="network_performance_normal_msg"> Normal @@ -70,7 +70,7 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - Connexion ping > [NETWORK_PING_CRITICAL] ms + Temps de connexion ping >[NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_ping_warning_msg"> Connexion ping entre [NETWORK_PING_WARNING] et [NETWORK_PING_CRITICAL] ms @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Défilement du simulateur < [SERVER_FRAME_RATE_CRITICAL] + Taux de défilement du simulateur au-dessous de [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Défilement simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING] + Taux de défilement du simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> Normal </floater.string> <floater.string name="server_physics_cause_msg"> - Cause possible : trop d'objets physiques + Cause possible : trop d'objets physiques </floater.string> <floater.string name="server_scripts_cause_msg"> - Cause possible : trop d'objets scriptés + Cause possible : trop d'objets scriptés </floater.string> <floater.string name="server_net_cause_msg"> - Cause possible : trop de trafic réseau + Cause possible : trop de trafic réseau </floater.string> <floater.string name="server_agent_cause_msg"> - Cause possible : trop de personnes en mouvement + Cause possible : trop de personnes en mouvement dans la région </floater.string> <floater.string name="server_images_cause_msg"> - Cause possible : trop de calculs d'images + Cause possible : trop de calculs d'images </floater.string> <floater.string name="server_generic_cause_msg"> - Cause possible : charge simulateur trop lourde + Cause possible : charge simulateur trop lourde </floater.string> <floater.string name="smaller_label"> >> @@ -126,21 +126,21 @@ <floater.string name="bigger_label"> << </floater.string> - <button name="client_lagmeter" tool_tip="Statut du lag client"/> + <button name="client_lagmeter" tool_tip="Statut du lag au niveau du client"/> <text name="client"> Client </text> <text name="client_text"> Normal </text> - <button name="network_lagmeter" tool_tip="Statut du lag réseau"/> + <button name="network_lagmeter" tool_tip="Statut du lag au niveau du réseau"/> <text name="network"> Réseau </text> <text name="network_text"> Normal </text> - <button name="server_lagmeter" tool_tip="Statut du lag serveur"/> + <button name="server_lagmeter" tool_tip="Statut du lag au niveau du serveur"/> <text name="server"> Serveur </text> diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml index ff728e3aaa..ff728e3aaa 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml index 7647452e91..d69c311a8e 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> SCRIPT : [NAME] </floater.string> + <floater.string name="experience_enabled"> + Supprimer la coche pour supprimer l'expérience actuelle + </floater.string> + <floater.string name="no_experiences"> + Vous n'êtes autorisé(e) pour aucune expérience. + </floater.string> + <floater.string name="add_experiences"> + Sélectionner pour ajouter une expérience + </floater.string> + <floater.string name="show_experience_profile"> + Cliquer pour afficher le profil de l'expérience + </floater.string> + <floater.string name="loading"> + Chargement... + </floater.string> <button label="Réinitialiser" label_selected="Réinitialiser" name="Reset"/> <check_box initial_value="true" label="Exécution en cours" name="running"/> <check_box initial_value="true" label="Mono" name="mono"/> + <check_box label="Utiliser la ou les expériences :" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml index 71d2c42578..71d2c42578 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml index dbd3dd9406..dbd3dd9406 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_map.xml diff --git a/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml new file mode 100644 index 0000000000..8488d17d00 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ANNONCES DE LA PLACE DU MARCHÉ"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Chargement…</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml new file mode 100644 index 0000000000..01527800ac --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditer les annonces de la Place du marché"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml index 58535eddf5..58535eddf5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/fr/floater_media_settings.xml b/indra/newview/skins/default/xui/fr/floater_media_settings.xml index 27db5ea995..27db5ea995 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml index d03c4d7544..d03c4d7544 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml index b491dd6aed..b491dd6aed 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml index bd3dae6599..bd3dae6599 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml index 853af2afdf..853af2afdf 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_moveview.xml +++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_mute_object.xml b/indra/newview/skins/default/xui/fr/floater_mute_object.xml index f4db3201a8..f4db3201a8 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml index 53ff58e307..53ff58e307 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml index d514d08081..d514d08081 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml index fe4b5f9bd6..fe4b5f9bd6 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_notification.xml +++ b/indra/newview/skins/default/xui/fr/floater_notification.xml diff --git a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml index e040e948f5..e040e948f5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/fr/floater_object_weights.xml b/indra/newview/skins/default/xui/fr/floater_object_weights.xml index 2667188308..2667188308 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/fr/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/fr/floater_openobject.xml b/indra/newview/skins/default/xui/fr/floater_openobject.xml index 4e046ff3f3..54edf92379 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_openobject.xml +++ b/indra/newview/skins/default/xui/fr/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copier vers l'inventaire" label_selected="Copier vers l'inventaire" name="copy_to_inventory_button" width="132"/> - <button label="Copier et porter" label_selected="Copier et porter" left="152" name="copy_and_wear_button"/> + <text name="border_note"> + Copier dans l'inventaire et porter + </text> + <button label="Ajouter à la tenue" label_selected="Ajouter à la tenue" left="152" name="copy_and_wear_button"/> + <button label="Remplacer la tenue" label_selected="Remplacer la tenue" name="copy_and_replace_button"/> + <button label="Copier uniquement dans l'inventaire" label_selected="Copier uniquement dans l'inventaire" name="copy_to_inventory_button" width="132"/> + <button label="Annuler" label_selected="Annuler" name="cancel_button"/> </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 index 72018f5de5..72018f5de5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml index 089d710f17..089d710f17 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml index 7c9109c011..7c9109c011 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml index 02d969dc08..02d969dc08 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml index 894ec6dd9c..894ec6dd9c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml index 397436876d..bbd20e868c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_pay.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Payer le groupe - </string> - <string name="payee_resident"> - Payer le résident - </string> - <text left="5" name="payee_label"> - Payer : - </text> - <icon name="icon_person" tool_tip="Résident"/> - <text name="payee_name"> - Test Name That Is Extremely Long To Check Clipping - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text left="4" name="amount text"> - Ou choisir un montant : - </text> - <line_editor left="60" name="amount" width="55"/> - <button label="Payer" label_selected="Payer" name="pay btn"/> - <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + <string name="payee_group">Payer le groupe</string> + <string name="payee_resident">Payer le résident</string> + <text name="paying_text">Vous payez :</text> + <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <panel label="Rechercher" name="PatternsPanel"> + <button label="Payer 1 L$" label_selected="Payer 1 L$" name="fastpay 1"/> + <button label="Payer 5 L$" label_selected="Payer 5 L$" name="fastpay 5"/> + <button label="Payer 10 L$" label_selected="Payer 10 L$" name="fastpay 10"/> + <button label="Payer 20 L$" label_selected="Payer 20 L$" name="fastpay 20"/> + </panel> + <panel label="Rechercher" name="InputPanel"> + <text name="amount text">Autre montant :</text> + <button label="Payer" label_selected="Payer" name="pay btn"/> + <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml index 966fa3b8a6..c98d2f7c0c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group" width="95"> - Payer le groupe - </string> - <string halign="left" name="payee_resident" width="100"> - Payer le résident - </string> - <icon name="icon_person" tool_tip="Résident"/> - <text left="105" name="payee_name"> - Ericacita Moostopolison - </text> - <text left="25" name="object_name_label"> - Via un objet : - </text> + <string name="payee_group" width="95">Payer le groupe</string> + <string halign="left" name="payee_resident" width="100">Payer le résident</string> + <text name="paying_text">Vous payez :</text> + <text left="105" name="payee_name">Ericacita Moostopolison</text> + <text left="25" name="object_name_label">Via un objet :</text> <icon name="icon_object" tool_tip="Objets"/> - <text left="105" name="object_name_text"> - ... - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text halign="left" left="5" name="amount text"> - Ou choisir un montant : - </text> - <line_editor left="65" name="amount" width="50"/> - <button label="Payer" label_selected="Payer" name="pay btn"/> - <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + <text left="105" name="object_name_text">...</text> + <panel label="Rechercher" name="PatternsPanel"> + <button label="Payer 1 L$" label_selected="Payer 1 L$" name="fastpay 1"/> + <button label="Payer 5 L$" label_selected="Payer 5 L$" name="fastpay 5"/> + <button label="Payer 10 L$" label_selected="Payer 10 L$" name="fastpay 10"/> + <button label="Payer 20 L$" label_selected="Payer 20 L$" name="fastpay 20"/> + </panel> + <panel label="Rechercher" name="InputPanel"> + <text name="amount text">Autre montant :</text> + <button label="Payer" label_selected="Payer" name="pay btn"/> + <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_people.xml b/indra/newview/skins/default/xui/fr/floater_people.xml index 58701c06b2..58701c06b2 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_people.xml +++ b/indra/newview/skins/default/xui/fr/floater_people.xml diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml index 36bec80561..36bec80561 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/fr/floater_picks.xml b/indra/newview/skins/default/xui/fr/floater_picks.xml index f058ff668b..f058ff668b 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_picks.xml +++ b/indra/newview/skins/default/xui/fr/floater_picks.xml diff --git a/indra/newview/skins/default/xui/fr/floater_places.xml b/indra/newview/skins/default/xui/fr/floater_places.xml index 9e649aca47..9e649aca47 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_places.xml +++ b/indra/newview/skins/default/xui/fr/floater_places.xml diff --git a/indra/newview/skins/default/xui/fr/floater_post_process.xml b/indra/newview/skins/default/xui/fr/floater_post_process.xml index a22c7512e5..a22c7512e5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_post_process.xml +++ b/indra/newview/skins/default/xui/fr/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml index 0f9fb1334b..0f9fb1334b 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preferences.xml +++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml index 020bdf928b..020bdf928b 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml index 6488089c06..6488089c06 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 6287f10f3e..6287f10f3e 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml index 5646ad45eb..5646ad45eb 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml index a215f92df1..a215f92df1 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml index 9fc9d14026..9fc9d14026 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml index a6e598dd2b..a6e598dd2b 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/fr/floater_publish_classified.xml b/indra/newview/skins/default/xui/fr/floater_publish_classified.xml index d4d8652434..d4d8652434 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/fr/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml b/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml index 1747155b60..1747155b60 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/fr/floater_region_info.xml b/indra/newview/skins/default/xui/fr/floater_region_info.xml index c2663174d4..c2663174d4 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_region_info.xml +++ b/indra/newview/skins/default/xui/fr/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml index 153be444e5..638f0d68ff 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml @@ -76,7 +76,7 @@ <combo_box.item label="Terrain > Empiètement > Objets ou textures" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Terrain > Empiètement > Particules" name="Land__Encroachment__Particles"/> <combo_box.item label="Terrain > Empiètement > Arbres/plantes" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Paris ou jeux d'argent" name="Wagering_gambling"/> + <combo_box.item label="Violation du règlement pour les jeux" name="Wagering_gambling"/> <combo_box.item label="Autre" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug.xml b/indra/newview/skins/default/xui/fr/floater_script_debug.xml index e257aac6c4..e257aac6c4 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/fr/floater_script_limits.xml b/indra/newview/skins/default/xui/fr/floater_script_limits.xml index cc3aaa6653..cc3aaa6653 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/fr/floater_script_preview.xml b/indra/newview/skins/default/xui/fr/floater_script_preview.xml index 7b6bc73677..7b6bc73677 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_script_queue.xml b/indra/newview/skins/default/xui/fr/floater_script_queue.xml index b9a8165457..b9a8165457 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/fr/floater_script_search.xml b/indra/newview/skins/default/xui/fr/floater_script_search.xml index 09b903f41c..09b903f41c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_script_search.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/fr/floater_search.xml b/indra/newview/skins/default/xui/fr/floater_search.xml index 32800182ea..32800182ea 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_search.xml +++ b/indra/newview/skins/default/xui/fr/floater_search.xml diff --git a/indra/newview/skins/default/xui/fr/floater_select_key.xml b/indra/newview/skins/default/xui/fr/floater_select_key.xml index 664bc0a723..664bc0a723 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_select_key.xml +++ b/indra/newview/skins/default/xui/fr/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml index c5fb0ea0d4..c5fb0ea0d4 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml index 995837e9ee..995837e9ee 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml index ab2256e356..8eb05dd945 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Échec d'enregistrement sur l'ordinateur. </string> - <button name="advanced_options_btn" tool_tip="Options avancées"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [SIZE] Ko - </text> + <button label="ACTUALISER" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - OPTIONS AVANCÉES - </text> <text name="layer_type_label"> Capturer : </text> @@ -68,4 +59,10 @@ <combo_box.item label="Aucun filtre" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] px (largeur) x [HEIGHT] px (hauteur) + </text> + <text name="file_size_label"> + [SIZE] Ko + </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml index 080ade9dd4..080ade9dd4 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml index 6f0fb3421f..6f0fb3421f 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/fr/floater_spellcheck.xml b/indra/newview/skins/default/xui/fr/floater_spellcheck.xml index 635db52ffa..635db52ffa 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/fr/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml index c8c76c672d..c8c76c672d 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml index fae17e3608..fae17e3608 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_stats.xml +++ b/indra/newview/skins/default/xui/fr/floater_stats.xml diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml index dbdd32974c..dbdd32974c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/fr/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml index c529ca2736..c529ca2736 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_telehub.xml +++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml index 702170ef52..702170ef52 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml index eace67026c..eace67026c 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml index caae15ea17..caae15ea17 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index b254a178f9..b254a178f9 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml index eb084d9184..2c411933a8 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/fr/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Aucun résultat. </floater.string> + <floater.string name="URLs"> + URL + </floater.string> + <floater.string name="memory"> + Mémoire (Ko) + </floater.string> <text name="title_text"> Chargement... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Propriétaire" name="owner"/> <scroll_list.columns label="Lieu" name="location"/> <scroll_list.columns label="Parcelle" name="parcel"/> - <scroll_list.columns label="Temps" name="time"/> + <scroll_list.columns label="Date" name="time"/> <scroll_list.columns label="URL" name="URLs"/> <scroll_list.columns label="Mémoire (Ko)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml index 6d58cf77ca..6d58cf77ca 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_tos.xml +++ b/indra/newview/skins/default/xui/fr/floater_tos.xml diff --git a/indra/newview/skins/default/xui/fr/floater_toybox.xml b/indra/newview/skins/default/xui/fr/floater_toybox.xml index f99d3d30b5..f99d3d30b5 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_toybox.xml +++ b/indra/newview/skins/default/xui/fr/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/fr/floater_translation_settings.xml b/indra/newview/skins/default/xui/fr/floater_translation_settings.xml index c7582f110f..c7582f110f 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/fr/floater_twitter.xml b/indra/newview/skins/default/xui/fr/floater_twitter.xml index 9ca2b0d48d..608b02dced 100644 --- a/indra/newview/skins/default/xui/fr/floater_twitter.xml +++ b/indra/newview/skins/default/xui/fr/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="COMPOSER" name="panel_twitter_photo"/> - <panel label="COMPTE" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Erreur - </text> - <text name="connection_loading_text"> - Chargement... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="COMPOSER" name="panel_twitter_photo"/> + <panel label="COMPTE" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Erreur + </text> + <text name="connection_loading_text"> + Chargement... + </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml index 4b2be14569..4b2be14569 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/fr/floater_url_entry.xml 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 fc4de4a5a6..fc4de4a5a6 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml index f9a76d127e..f9a76d127e 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/fr/floater_web_content.xml b/indra/newview/skins/default/xui/fr/floater_web_content.xml index 65dfafe760..65dfafe760 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_web_content.xml +++ b/indra/newview/skins/default/xui/fr/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml index 99e4954555..99e4954555 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/fr/floater_window_size.xml b/indra/newview/skins/default/xui/fr/floater_window_size.xml index 11c2e439bd..11c2e439bd 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_window_size.xml +++ b/indra/newview/skins/default/xui/fr/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml index f5dab91924..f5dab91924 100755..100644 --- a/indra/newview/skins/default/xui/fr/floater_world_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/fr/fonts.xml b/indra/newview/skins/default/xui/fr/fonts.xml index cccb45b973..cccb45b973 100755..100644 --- a/indra/newview/skins/default/xui/fr/fonts.xml +++ b/indra/newview/skins/default/xui/fr/fonts.xml diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml index 553646f8e9..553646f8e9 100755..100644 --- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml index e8c528c1ac..e8c528c1ac 100755..100644 --- a/indra/newview/skins/default/xui/fr/inspect_group.xml +++ b/indra/newview/skins/default/xui/fr/inspect_group.xml diff --git a/indra/newview/skins/default/xui/fr/inspect_object.xml b/indra/newview/skins/default/xui/fr/inspect_object.xml index b66af7a2bf..b66af7a2bf 100755..100644 --- a/indra/newview/skins/default/xui/fr/inspect_object.xml +++ b/indra/newview/skins/default/xui/fr/inspect_object.xml diff --git a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml index 6d7cfadc04..6d7cfadc04 100755..100644 --- a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml index fdac9d65a7..fdac9d65a7 100755..100644 --- a/indra/newview/skins/default/xui/fr/language_settings.xml +++ b/indra/newview/skins/default/xui/fr/language_settings.xml 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 index 7e7993175e..7e7993175e 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml index 0450be28e0..0450be28e0 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml 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 f2e7928c24..1ccba08099 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mon apparence" name="Change Outfit"/> <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/> <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> + <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml index 072ac0a6ae..072ac0a6ae 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml index 1f5c1724f8..1f5c1724f8 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml 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 4815ad0676..1c768a078c 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mon apparence" name="Chenge Outfit"/> <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/> <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> + <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml index a4ead48b6b..a4ead48b6b 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml index 4b6907fcc6..4b6907fcc6 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml index 03cc569704..03cc569704 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml index fea0486d8a..fea0486d8a 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/fr/menu_edit.xml b/indra/newview/skins/default/xui/fr/menu_edit.xml index 56669f31e1..56669f31e1 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_edit.xml +++ b/indra/newview/skins/default/xui/fr/menu_edit.xml diff --git a/indra/newview/skins/default/xui/fr/menu_favorites.xml b/indra/newview/skins/default/xui/fr/menu_favorites.xml index 5f1545fde7..5f1545fde7 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_favorites.xml +++ b/indra/newview/skins/default/xui/fr/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml index 062dd0f005..062dd0f005 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/fr/menu_group_plus.xml b/indra/newview/skins/default/xui/fr/menu_group_plus.xml index ad76f11d79..ad76f11d79 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/fr/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml index 09c9f5084a..09c9f5084a 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml index 4d9a103058..4d9a103058 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml index 59f97d8b48..59f97d8b48 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml index ecc8cee413..ecc8cee413 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml index 53f22bb44a..53f22bb44a 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml 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 f3b974aba5..f3b974aba5 100755..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 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 ac70df472d..ac70df472d 100755..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 diff --git a/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml index a9b2883cca..a9b2883cca 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index 87b11bdaa5..c0808f1139 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Créer une annonce" name="Marketplace Create Listing"/> + <menu_item_call label="Associer l'annonce" name="Marketplace Associate Listing"/> + <menu_item_call label="Obtenir (actualiser) l'annonce" name="Marketplace Get Listing"/> + <menu_item_call label="Consultez les erreurs" name="Marketplace Check Listing"/> + <menu_item_call label="Modifier l'annonce" name="Marketplace Edit Listing"/> + <menu_item_call label="Publier" name="Marketplace List"/> + <menu_item_call label="Ne plus publier" name="Marketplace Unlist"/> + <menu_item_call label="Activer" name="Marketplace Activate"/> + <menu_item_call label="Désactiver" name="Marketplace Deactivate"/> <menu_item_call label="Partager" name="Share"/> <menu_item_call label="Acheter" name="Task Buy"/> <menu_item_call label="Ouvrir" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Ajouter" name="Wearable Add"/> <menu_item_call label="Enlever" name="Take Off"/> <menu_item_call label="Copier vers la boîte d'envoi vendeur" name="Merchant Copy"/> - <menu_item_call label="Envoyer vers la Place du marché" name="Marketplace Send"/> + <menu_item_call label="Copier dans les annonces Place du marché" name="Marketplace Copy"/> + <menu_item_call label="Déplacer dans les annonces Place du marché" name="Marketplace Move"/> <menu_item_call label="--aucune option--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml index 1076af44d9..1076af44d9 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml index 364872c875..c21caae0b2 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_recent"/> <menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/> <menu_item_check label="Dossiers système en premier" name="sort_system_folders_to_top"/> - <menu_item_call label="Afficher les filtres" name="show_filters"/> + <menu_item_call label="Afficher les filtres..." name="show_filters"/> <menu_item_call label="Réinitialiser les filtres" name="reset_filters"/> <menu_item_call label="Fermer tous les dossiers" name="close_folders"/> <menu_item_call label="Vider les objets trouvés" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/fr/menu_land.xml b/indra/newview/skins/default/xui/fr/menu_land.xml index 7beaf00c58..7beaf00c58 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_land.xml +++ b/indra/newview/skins/default/xui/fr/menu_land.xml diff --git a/indra/newview/skins/default/xui/fr/menu_landmark.xml b/indra/newview/skins/default/xui/fr/menu_landmark.xml index 73eaa4af7e..73eaa4af7e 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_landmark.xml +++ b/indra/newview/skins/default/xui/fr/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index 5e9969627d..5e9969627d 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml diff --git a/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml b/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml new file mode 100644 index 0000000000..a63e2082b7 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Trier par volume de stock (de bas à élevé)" name="sort_by_stock_amount"/> + <menu_item_check label="Afficher uniquement les dossiers d'annonces" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml index 1941ad2cbf..1941ad2cbf 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml 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 b9d0a70383..b9d0a70383 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/fr/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml index af6bfcd028..af6bfcd028 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/fr/menu_navbar.xml b/indra/newview/skins/default/xui/fr/menu_navbar.xml index 08d810b653..08d810b653 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml index 99e22aeff7..99e22aeff7 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml index 323bfdbf16..323bfdbf16 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml index 27e801d959..27e801d959 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_object.xml +++ b/indra/newview/skins/default/xui/fr/menu_object.xml diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml index 7c94930160..7c94930160 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/fr/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml index 21b19eded6..21b19eded6 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml index 2a7f618e07..2a7f618e07 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml 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 f91a30f6bb..f91a30f6bb 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/fr/menu_participant_list.xml 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 a6170a6c16..a6170a6c16 100755..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 diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml index 8e32f065fa..8e32f065fa 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml index 34f949cf2c..34f949cf2c 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml index 6f7d02ef74..6f7d02ef74 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml 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 37abf831c2..37abf831c2 100755..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 diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml index 8bb466b8d6..8bb466b8d6 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml index 93b90ae61c..93b90ae61c 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/fr/menu_picks.xml b/indra/newview/skins/default/xui/fr/menu_picks.xml index 7d7174d43c..7d7174d43c 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_picks.xml +++ b/indra/newview/skins/default/xui/fr/menu_picks.xml diff --git a/indra/newview/skins/default/xui/fr/menu_picks_plus.xml b/indra/newview/skins/default/xui/fr/menu_picks_plus.xml index b6cde6d6e2..b6cde6d6e2 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/fr/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/fr/menu_place.xml b/indra/newview/skins/default/xui/fr/menu_place.xml index 6b0f4db752..6b0f4db752 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_place.xml +++ b/indra/newview/skins/default/xui/fr/menu_place.xml diff --git a/indra/newview/skins/default/xui/fr/menu_place_add_button.xml b/indra/newview/skins/default/xui/fr/menu_place_add_button.xml index 92f9e7719d..92f9e7719d 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/fr/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml index 3fdf3bf3c4..3fdf3bf3c4 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml index b48f6ea693..b48f6ea693 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml index ddf898b791..ddf898b791 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/fr/menu_save_outfit.xml b/indra/newview/skins/default/xui/fr/menu_save_outfit.xml index f78db411b3..f78db411b3 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/fr/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml index 46efa30bd6..46efa30bd6 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/fr/menu_slurl.xml b/indra/newview/skins/default/xui/fr/menu_slurl.xml index ddfa5c0849..ddfa5c0849 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_slurl.xml +++ b/indra/newview/skins/default/xui/fr/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml index 3dea662cc2..3dea662cc2 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml index ba8ed9b3f8..ba8ed9b3f8 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml index 369680985d..369680985d 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/fr/menu_text_editor.xml b/indra/newview/skins/default/xui/fr/menu_text_editor.xml index c31b0c8556..c31b0c8556 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/fr/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/fr/menu_toolbars.xml b/indra/newview/skins/default/xui/fr/menu_toolbars.xml index f74d206d56..f74d206d56 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/fr/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/fr/menu_topinfobar.xml b/indra/newview/skins/default/xui/fr/menu_topinfobar.xml index dc68f40fe7..dc68f40fe7 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/fr/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml index 2c7443c6ca..2c7443c6ca 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_experience.xml b/indra/newview/skins/default/xui/fr/menu_url_experience.xml new file mode 100644 index 0000000000..90c0ce6765 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_group.xml b/indra/newview/skins/default/xui/fr/menu_url_group.xml index de90c3ff7e..de90c3ff7e 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_group.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_http.xml b/indra/newview/skins/default/xui/fr/menu_url_http.xml index 5e96352999..5e96352999 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_http.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_inventory.xml b/indra/newview/skins/default/xui/fr/menu_url_inventory.xml index 8ab88b4be7..8ab88b4be7 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_map.xml b/indra/newview/skins/default/xui/fr/menu_url_map.xml index 67e6986f5d..67e6986f5d 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_map.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml index 5d745ef5f8..5d745ef5f8 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml index 07b0eeca49..07b0eeca49 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_slapp.xml b/indra/newview/skins/default/xui/fr/menu_url_slapp.xml index f4b7e212ca..f4b7e212ca 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml index e44943cf15..e44943cf15 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml index a5075a2740..a5075a2740 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 2c30fe07b4..788cdbf856 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Nouvelle fenêtre d'inventaire" name="NewInventoryWindow"/> <menu_item_call label="Endroits..." name="Places"/> <menu_item_call label="Favoris..." name="Picks"/> + <menu_item_call label="Expériences..." name="Experiences"/> <menu_item_call label="Contrôles de la caméra..." name="Camera Controls"/> <menu label="Déplacement" name="Movement"> <menu_item_call label="M'asseoir" name="Sit Down Here"/> <menu_item_check label="Voler" name="Fly"/> <menu_item_check label="Toujours courir" name="Always Run"/> <menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/> - <menu_item_call label="Marcher / Courir / Voler..." name="Walk / run / fly"/> + <menu_item_call label="Marcher / Courir / Voler..." name="WalkRunFly"/> </menu> <menu label="Statut" name="Status"> <menu_item_check label="Absent" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/> <menu_item_call label="Boîte d'envoi vendeur..." name="MerchantOutbox"/> + <menu_item_call label="Annonces de Place du marché..." name="MarketplaceListings"/> <menu_item_call label="Page d'accueil du compte..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/> </menu_item_call> @@ -48,7 +50,7 @@ <menu_item_check label="Amis" name="My Friends"/> <menu_item_check label="Groupes" name="My Groups"/> <menu_item_check label="Personnes près de vous" name="Active Speakers"/> - <menu_item_call label="Liste des ignorés" name="Block List"/> + <menu_item_check label="Liste des ignorés" name="Block List"/> <menu_item_check label="Ne pas déranger" name="Do Not Disturb"/> </menu> <menu label="Monde" name="World"> @@ -62,7 +64,7 @@ <menu_item_call label="Photo" name="Take Snapshot"/> <menu_item_call label="Profil du lieu" name="Place Profile"/> <menu_item_call label="À propos du terrain" name="About Land"/> - <menu_item_call label="Région/Domaine" name="Region/Estate"/> + <menu_item_call label="Région/Domaine" name="RegionEstate"/> <menu_item_call label="Mes terrains..." name="My Land"/> <menu_item_call label="Acheter ce terrain" name="Buy Land"/> <menu label="Afficher" name="LandShow"> @@ -250,6 +252,7 @@ <menu_item_check label="Console de textures" name="Texture Console"/> <menu_item_check label="Console de débogage" name="Debug Console"/> <menu_item_call label="Console de notifications" name="Notifications"/> + <menu_item_check label="Console de débogage de région" name="Region Debug Console"/> <menu_item_check label="Chronos" name="Fast Timers"/> <menu_item_check label="Mémoire" name="Memory"/> <menu_item_check label="Statistiques de la scène" name="Scene Statistics"/> @@ -353,7 +356,7 @@ <menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/> <menu_item_call label="Abandonner un paquet" name="Drop a Packet"/> </menu> - <menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/> + <menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/> <menu label="Enregistreur" name="Recorder"> <menu_item_call label="Commencer la lecture" name="Start Playback"/> <menu_item_call label="Arrêter la lecture" name="Stop Playback"/> 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 187cb4bcd2..187cb4bcd2 100755..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 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 c3d9d908b0..c3d9d908b0 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml 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 4d88445506..4d88445506 100755..100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/fr/mime_types.xml b/indra/newview/skins/default/xui/fr/mime_types.xml index 322887fb76..322887fb76 100755..100644 --- a/indra/newview/skins/default/xui/fr/mime_types.xml +++ b/indra/newview/skins/default/xui/fr/mime_types.xml diff --git a/indra/newview/skins/default/xui/fr/mime_types_linux.xml b/indra/newview/skins/default/xui/fr/mime_types_linux.xml index 3a7ff979ee..93d1406ba5 100755..100644 --- a/indra/newview/skins/default/xui/fr/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/fr/mime_types_linux.xml @@ -44,6 +44,14 @@ Lire le contenu audio qui se trouve ici </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Aucun contenu + </label> + <tooltip name="none_tooltip"> + Aucun média ici + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Flux en temps réel diff --git a/indra/newview/skins/default/xui/fr/mime_types_mac.xml b/indra/newview/skins/default/xui/fr/mime_types_mac.xml index 3a7ff979ee..93d1406ba5 100755..100644 --- a/indra/newview/skins/default/xui/fr/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/fr/mime_types_mac.xml @@ -44,6 +44,14 @@ Lire le contenu audio qui se trouve ici </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Aucun contenu + </label> + <tooltip name="none_tooltip"> + Aucun média ici + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Flux en temps réel diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 2325c8e34d..29e6fe1979 100755..100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -73,6 +73,10 @@ Détails de l'erreur : La notification, appelée '[_NAME]', est i [MESSAGE] <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez [http://get.secondlife.com télécharger la dernière version] du client. <usetemplate name="okbutton" yestext="OK"/> @@ -125,6 +129,88 @@ Aucun dossier n'a été envoyé vers la Place du marché en raison d'u L'initialisation de la Place du marché a échoué en raison d'une erreur système ou réseau. Réessayez ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Échec de la copie ou du déplacement vers le dossier de stock. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Échec de la copie ou du déplacement vers les annonces Place du marché. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transaction avec la Place du marché a échoué en raison de l'erreur suivante : + + Motif : '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Nous ne pouvons pas publier ce produit ni activer le dossier de version. Cela est en général dû à des informations manquantes dans le formulaire de description de l'annonce, mais parfois à cause d'erreurs dans la structure du dossier. Modifiez l'annonce ou consultez les erreurs du dossier de l'annonce. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Échec de la publication d'une annonce sur la Place du marché. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Échec de l'activation de ce dossier de version. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Cette action va modifier le contenu actif de cette annonce. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne modifie une annonce active sur la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Les articles glissés vers la fenêtre Annonces de la Place du marché sont déplacés de leur emplacement d'origine, et non copiés. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne déplace un article de l'inventaire vers la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Le déplacement ou la suppression d'un dossier d'annonces supprimera votre annonce de la Place du marché. Si vous souhaitez conserver l'annonce de la Place du marché, déplacez ou supprimez le contenu du dossier de version que vous souhaitez modifier. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je déplace ou supprime une annonce de la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Vous n'êtes pas autorisé à copier un ou plusieurs de ces articles vers la Place du marché. Vous pouvez les déplacer ou les laisser. + <usetemplate canceltext="Annuler" ignoretext="Confirmer avant que je ne copie une sélection contenant des articles non reproductibles vers la Place du marché" name="yesnocancelbuttons" notext="Ne pas déplacer les articles" yestext="Déplacer les articles"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Cette action va annuler cette annonce. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que j'annule une annonce active sur la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Cette action va désactiver le dossier de version de l'annonce active. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne désactive le dossier de version d'une annonce de la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Impossible de mettre à jour cette annonce. +[[URL] Cliquez ici] pour la modifier sur la Place du marché. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Vous ne pouvez pas porter de vêtements ou des parties du corps se trouvant dans le dossier Annonces de la Place du marché. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID d'annonce non valide. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Il y a plusieurs dossiers de version (ou aucun) dans cette liste. Vous devrez en sélectionner et activer un indépendamment plus tard. + <usetemplate ignoretext="Alerter en cas d'activation du dossier de version lorsque je crée une annonce avec plusieurs dossiers de version" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Nous avons classé les articles du stock de types différents dans des dossiers de stocks distincts ; votre dossier est organisé de telle façon que nous pouvons le répertorier. + <usetemplate ignoretext="Alerter lorsque le dossier de stock est divisé avant publication" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Nous avons retiré votre annonce car le stock est vide. Vous devez ajouter plus d'unités au dossier de stock pour publier à nouveau l'annonce. + <usetemplate ignoretext="Alerter lorsqu'une annonce n'est pas publiée parce que le dossier de stock est vide" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Une erreur est survenue lors du chargement du texte pour un script, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. </notification> @@ -468,6 +554,10 @@ Remarque : cela videra le cache. Enregistrer les changements ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> </notification> + <notification name="DeleteNotecard"> + Supprimer la note ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> L'enregistrement du geste a échoué. Il y a trop d'étapes dans ce geste. @@ -574,6 +664,9 @@ La qualité des graphiques peut être augmentée à la section Préférences > <notification name="RegionNoTerraforming"> Le terraformage est interdit dans la région [REGION]. </notification> + <notification name="ParcelNoTerraforming"> + Vous n'êtes pas autorisé(e) à terraformer la parcelle [PARCEL]. + </notification> <notification name="CannotCopyWarning"> Vous n'êtes pas autorisé à copier les articles suivants : [ITEMS]. @@ -1824,6 +1917,30 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po Supprimer le gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> </notification> + <notification label="Sélectionner un domaine" name="EstateAllowedExperienceAdd"> + Ajouter à la liste des expériences autorisées uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Sélectionner un domaine" name="EstateAllowedExperienceRemove"> + Supprimer de la liste des expériences autorisées uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Sélectionner un domaine" name="EstateBlockedExperienceAdd"> + Ajouter à la liste des expériences bloquées uniquement pour ce domaine ou pour [ALL_ESTATES] + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Sélectionner un domaine" name="EstateBlockedExperienceRemove"> + Supprimer de la liste des expériences bloquées uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Sélectionner un domaine" name="EstateTrustedExperienceAdd"> + Ajouter à la liste des clés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Sélectionner un domaine" name="EstateTrustedExperienceRemove"> + Supprimer de la liste des clés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> <notification label="Confirmer" name="EstateKickUser"> Éjecter [EVIL_USER] de ce domaine ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> @@ -1836,6 +1953,9 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po La région que vous essayez de visiter comporte du contenu dont le niveau dépasse celui de vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Moi > Préférences > Général. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes. <url name="url"> @@ -1898,6 +2018,10 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po Nous rencontrons des difficultés techniques au niveau de votre téléportation car vos préférences ne sont pas synchronisées avec le serveur. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Impossible de pénétrer dans la région. « [REGION_NAME] » est une région de jeux d'adresse et vous devez satisfaire à certains critères pour y pénétrer. Pour en savoir plus, consultez la page [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life FAQ sur les jeux d'adresse]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> Aucune autre notification vous informant que vous allez visiter une région au contenu [RATING] ne vous sera envoyée. Vous pouvez modifier vos préférences de contenu à l'avenir en accédant à Moi > Préférences > Général, à partir de la barre de menus. <usetemplate name="okbutton" yestext="OK"/> @@ -2120,6 +2244,10 @@ Déplacer les objets de l'inventaire ? <ignore name="ignore" text="Je définis l'action du clic Payer l'objet lorsque je construis un objet sans le script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirmez que vous voulez payer [AMOUNT] L$ à [TARGET]. + <usetemplate ignoretext="Confirmez avant de payer (sommes supérieures à 200 L$)" name="okcancelignore" notext="Annuler" yestext="Payer"/> + </notification> <notification name="OpenObjectCannotCopy"> Vous n'êtes autorisé à copier aucun élément dans cet objet. </notification> @@ -2205,6 +2333,9 @@ Voulez-vous le remplacer par l'objet sélectionné ? <button ignore="Ne jamais remplacer" name="No" text="Annuler"/> </form> </notification> + <notification name="TooManyWearables"> + Vous ne pouvez pas porter un dossier contenant plus de [AMOUNT] articles. Vous pouvez modifier cette limite dans Avancé > Afficher les paramètres de débogage > WearFolderLimit. + </notification> <notification label="Avertissement de mode Ne pas déranger" name="DoNotDisturbModePay"> Vous avez activé Ne pas déranger. Vous ne recevrez aucun article proposé en échange de ce paiement. @@ -2657,9 +2788,6 @@ Veuillez réessayer dans quelques minutes. <notification name="NoValidCircuit"> Aucun code de circuit valide. </notification> - <notification name="NoValidTimestamp"> - Timestamp non valide. - </notification> <notification name="NoPendingConnection"> Impossible de créer la connexion en attente. </notification> @@ -2814,7 +2942,7 @@ Si vous restez dans cette région, vous serez déconnecté(e). [MESSAGE] -Venant de l'objet : <nolink>[OBJECTNAME]</nolink>, propriétaire : [NAME] ? +Venant de l'objet : <nolink>[OBJECTNAME]</nolink>, propriétaire : [NAME] <form name="form"> <button name="Gotopage" text="Charger"/> <button name="Cancel" text="Annuler"/> @@ -2840,6 +2968,72 @@ Acceptez-vous ? <button name="Mute" text="Interdire"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Impossible d'acquérir une nouvelle expérience : + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Une modification du groupe de l'expérience a été ignorée, car le propriétaire n'est pas membre du groupe sélectionné. + </notification> + <notification name="UneditableExperienceProfileMessage"> + Le champ non modifiable « [field] » a été ignoré lors de la mise à jour du profil de l'expérience. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Modifications du champ « [field] » ignorées, car il ne peut être défini que par le propriétaire de l'expérience. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Vous ne pouvez pas définir une catégorie de contenu plus élevée pour une expérience que pour son propriétaire. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Les termes suivants ont empêché la mise à jour du nom et/ou de la description du profil de l'expérience : [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Vous avez été téléporté(e) hors de la région [region_name], car vous avez supprimé l'expérience secondlife:///app/experience/[public_id]/profile et n'êtes plus autorisé(e) dans cette région. + <form name="form"> + <ignore name="ignore" text="Éjecté(e) de la région pour cause de suppression d'une expérience"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + Vous avez été autorisé(e) à pénétrer dans la région [region_name] en participant à l'expérience avec clé secondlife:///app/experience/[public_id]/profile. Si vous supprimez cette expérience, vous risquez d'être éjecté(e) de cette région. + <form name="form"> + <ignore name="ignore" text="Autorisé(e) dans une région par une expérience"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + Vous n'avez pas accès à cette destination. Vous pouvez être autorisé(e) à pénétrer dans la région en acceptant une expérience ci-dessous : + +[EXPERIENCE_LIST] + +Il est possible que d'autres expériences avec clé soient disponibles. + </notification> + <notification name="ExperienceEvent"> + Un objet a été autorisé à [EventType] par l'expérience secondlife:///app/experience/[public_id]/profile. + Propriétaire : secondlife:///app/agent/[OwnerID]/inspect + Nom de l'objet : [ObjectName] + Nom de la parcelle : [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + Une pièce jointe a été autorisée à [EventType] par l'expérience secondlife:///app/experience/[public_id]/profile. + Propriétaire : secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + « <nolink>[OBJECTNAME]</nolink> », un objet appartenant à « [NAME] », demande votre participation à l'expérience [GRID_WIDE] : + +[EXPERIENCE] + +Une fois l'autorisation accordée, vous ne verrez plus ce message pour cette expérience, sauf si elle est révoquée dans le profil de l'expérience. + +Les scripts associés à cette expérience pourront effectuer les actions suivantes dans les régions dans lesquelles l'expérience est active : + +[QUESTIONS]Acceptez-vous ? + <form name="form"> + <button name="BlockExperience" text="Bloquer l'expérience"/> + <button name="Mute" text="Ignorer l'objet"/> + <button name="Yes" text="Oui"/> + <button name="No" text="Non"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Avertissement : l'objet <nolink>[OBJECTNAME]</nolink> souhaite un accès total à votre compte en Linden dollars. Si vous autorisez cet accès, il pourra supprimer des fonds de votre compte à tout moment ou le vider entièrement de façon continue sans avis préalable. @@ -3159,6 +3353,10 @@ Texture figée de [RESOLUTION] chargée pour [BODYREGION] au bout de [TIME] seco ([EXISTENCE] secondes d'existence) Texture figée de [RESOLUTION] mise à jour localement pour [BODYREGION] au bout de [TIME] secondes. </notification> + <notification name="CannotUploadTexture"> + Chargement de la texture impossible. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Impossible d'afficher un aperçu de cette texture car il s'agit d'une texture sans copie et/ou transfert. <usetemplate ignoretext="M'avertir que le mode Aperçu en direct n'est pas disponible pour les textures sans copie et/ou transfert" name="okignore" yestext="OK"/> @@ -3733,9 +3931,11 @@ Veuillez réessayer dans une minute. </notification> <notification name="TeleportedByAttachment"> Vous avez été téléporté par un élément sur [ITEM_ID] + <usetemplate ignoretext="Téléportation : vous avez été téléporté par un attachement." name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Vous avez été téléporté par l'objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME]. + <usetemplate ignoretext="Téléportation : vous avez été téléporté par un objet sur une parcelle" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Vous avez été téléporté par l'objet [OBJECT_NAME] appartenant à [OWNER_ID]. @@ -4067,7 +4267,7 @@ Veuillez sélectionner un terrain plus petit. <usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Une erreur est survenue lors de l'enregistrement des droits par défaut, suite au problème suivant : [REASON]. Réessayez de définir les droits par défaut ultérieurement. + Problème lors de l'enregistrement des droits d'objet par défaut : [REASON]. Réessayez de définir les droits par défaut ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/fr/panel_active_object_row.xml b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml index 0baa8353d9..0baa8353d9 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml index 4191ba42f9..4191ba42f9 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml 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 c8fa9f340f..c8fa9f340f 100755..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 diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml index 20a355b11d..20a355b11d 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml index 0e2b5a9c93..0e2b5a9c93 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml index 377f85368f..377f85368f 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml index 5e7442b877..5e7442b877 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml index 5b6d37ce00..5b6d37ce00 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/fr/panel_chat_header.xml b/indra/newview/skins/default/xui/fr/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/fr/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml index de21996404..de21996404 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml 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 c4265be877..c4265be877 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml index 0b58a4e40b..0b58a4e40b 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml index b23cb91c6f..b23cb91c6f 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml index c1085aa461..c1085aa461 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml index e1fa769f2f..e1fa769f2f 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml index bc0edda5b6..bc0edda5b6 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml index a8b95c66fb..a8b95c66fb 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml 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 7b58f2e825..7b58f2e825 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml index 549864e237..549864e237 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml index 68a7ac54e2..68a7ac54e2 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_hair.xml b/indra/newview/skins/default/xui/fr/panel_edit_hair.xml index 575cbabc88..575cbabc88 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml index 7e467b130c..7e467b130c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml index 60d8e947f8..60d8e947f8 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_physics.xml b/indra/newview/skins/default/xui/fr/panel_edit_physics.xml index d79f7df90a..d79f7df90a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_physics.xml 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 247e18da82..247e18da82 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml 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 9e63c88221..9e63c88221 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shape.xml b/indra/newview/skins/default/xui/fr/panel_edit_shape.xml index 6a5f71a36b..6a5f71a36b 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml index 9a263f6148..9a263f6148 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml index 3eb70923ef..3eb70923ef 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml index f5f2738319..f5f2738319 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml index f562d67937..f562d67937 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml index f97047ae28..f97047ae28 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml index 086542dee2..086542dee2 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml index c83ce04885..c83ce04885 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml index 689b7b81f4..689b7b81f4 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml 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 def158cf68..def158cf68 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/fr/panel_experience_info.xml b/indra/newview/skins/default/xui/fr/panel_experience_info.xml new file mode 100644 index 0000000000..e830ce1ba6 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Profil de l'expérience"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Endroit : + </text> + <text name="LocationTextText"> + quelque part + </text> + <button label="Téléporter" name="teleport_btn"/> + <button label="Carte" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Boutique de la Place du marché : + </text> + <text name="LocationTextText"> + quelque part + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Catégorie : + </text> + <text name="ContentRatingText"> + Adulte + </text> + <text name="Owner"> + Propriétaire : + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Modifier" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/fr/panel_experience_list_editor.xml new file mode 100644 index 0000000000..d1c448b425 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + en cours de chargement... + </panel.string> + <panel.string name="panel_allowed"> + Expériences autorisées : + </panel.string> + <panel.string name="panel_blocked"> + Expériences bloquées : + </panel.string> + <panel.string name="panel_trusted"> + Expériences avec clé : + </panel.string> + <panel.string name="no_results"> + (vide) + </panel.string> + <text name="text_name"> + Liste des expériences + </text> + <scroll_list name="experience_list"> + <columns label="Nom" name="experience_name"/> + </scroll_list> + <button label="Ajouter..." name="btn_add"/> + <button label="Supprimer" name="btn_remove"/> + <button label="Profil..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_experience_list_item.xml b/indra/newview/skins/default/xui/fr/panel_experience_list_item.xml new file mode 100644 index 0000000000..c28f85f5eb --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Dummy Name + </text> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_experience_log.xml b/indra/newview/skins/default/xui/fr/panel_experience_log.xml new file mode 100644 index 0000000000..cc9eb3dbe3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Aucun événement."/> + <string name="loading" value="en cours de chargement..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Durée" name="time"/> + <columns label="Événement" name="event"/> + <columns label="Expérience" name="experience_name"/> + <columns label="Objet" name="object_name"/> + </scroll_list> + <button label="Prévenir" name="btn_notify"/> + <button label="Profil" name="btn_profile_xp"/> + <button label="Signaler" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Prévenir de tous les événements jours" name="notify_all"/> + <button label="Effacer" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_experience_search.xml b/indra/newview/skins/default/xui/fr/panel_experience_search.xml new file mode 100644 index 0000000000..13495057d4 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + '[TEXT]' introuvable + </string> + <string name="no_results"> + Aucun résultat + </string> + <string name="searching"> + Recherche... + </string> + <string name="loading"> + Chargement... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="OK" name="find"/> + <icons_combo_box label="Modéré" name="maturity"> + <icons_combo_box.item label="Adulte" name="Adult" value="42"/> + <icons_combo_box.item label="Modéré" name="Mature" value="21"/> + <icons_combo_box.item label="Général" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Nom" name="experience_name"/> + <columns label="Propriétaire" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annuler" name="cancel_btn"/> + <button label="Voir le profil" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_experiences.xml b/indra/newview/skins/default/xui/fr/panel_experiences.xml new file mode 100644 index 0000000000..f95a664531 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Chargement des expériences..."/> + <string name="no_experiences" value="Aucune expérience."/> + <string name="acquire" value="Acquérir une expérience"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_facebook_friends.xml b/indra/newview/skins/default/xui/fr/panel_facebook_friends.xml index 3ac0ce229c..319737a2af 100644 --- a/indra/newview/skins/default/xui/fr/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/fr/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Vous n'avez actuellement aucun ami Facebook qui est également résident de Second Life. Invitez vos amis Facebook à rejoindre Second Life !"/> - <string name="facebook_friends_no_connected" value="Vous n'êtes pas connecté(e) à Facebook. Allez à l'onglet Compte pour vous connecter et activer cette fonctionnalité."/> + <string name="facebook_friends_no_connected" value="Vous n'êtes pas connecté(e) à Facebook. Allez à l'onglet Statut pour vous connecter et activer cette fonctionnalité."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="Amis SL"/> <accordion_tab name="tab_suggested_friends" title="Ajouter ces personnes en tant qu'amis SL"/> diff --git a/indra/newview/skins/default/xui/fr/panel_facebook_photo.xml b/indra/newview/skins/default/xui/fr/panel_facebook_photo.xml index c5b09c4bcc..3236f35b55 100644 --- a/indra/newview/skins/default/xui/fr/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/fr/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> - <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> - <combo_box.item label="640 x 480" name="640x480"/> - <combo_box.item label="800 x 600" name="800x600"/> - <combo_box.item label="1 024 x 768" name="1024x768"/> - <combo_box.item label="1 200 x 630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtres d'image"> - <combo_box.item label="Aucun filtre" name="NoFilter"/> - </combo_box> - <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> - <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> - <text name="caption_label"> - Commentaire (facultatif) : - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Publier" name="post_photo_btn"/> - <button label="Annuler" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1 024 x 768" name="1024x768"/> + <combo_box.item label="1 200 x 630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtres d'image"> + <combo_box.item label="Aucun filtre" name="NoFilter"/> + </combo_box> + <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> + <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> + <text name="caption_label"> + Commentaire (facultatif) : + </text> + <button label="Publier" name="post_photo_btn"/> + <button label="Annuler" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_facebook_place.xml b/indra/newview/skins/default/xui/fr/panel_facebook_place.xml index 0eaea66ad4..f8e597450b 100644 --- a/indra/newview/skins/default/xui/fr/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/fr/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Dites quelque chose au sujet du lieu où vous vous trouvez : - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Publier" name="post_place_btn"/> - <button label="Annuler" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Dites quelque chose au sujet du lieu où vous vous trouvez : + </text> + <check_box initial_value="false" label="Inclure la vue aérienne du lieu" name="add_place_view_cb"/> + <button label="Publier" name="post_place_btn"/> + <button label="Annuler" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_facebook_status.xml b/indra/newview/skins/default/xui/fr/panel_facebook_status.xml index 260378978b..9afa42d2aa 100644 --- a/indra/newview/skins/default/xui/fr/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/fr/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - À quoi pensez-vous ? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Publier" name="post_status_btn"/> - <button label="Annuler" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Vous êtes connecté(e) à Facebook en tant que :"/> + <string name="facebook_disconnected" value="Pas connecté(e) à Facebook"/> + <text name="account_caption_label"> + Pas connecté(e) à Facebook. + </text> + <panel name="panel_buttons"> + <button label="Connexion..." name="connect_btn"/> + <button label="Déconnexion" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Apprenez comment publier sur Facebook] + </text> + </panel> + <text name="status_caption_label"> + À quoi pensez-vous ? + </text> + <button label="Publier" name="post_status_btn"/> + <button label="Annuler" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml b/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml index 63738a773a..7b3a176703 100644 --- a/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> - <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> - <combo_box.item label="640 x 480" name="640x480"/> - <combo_box.item label="800 x 600" name="800x600"/> - <combo_box.item label="1 024 x 768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtres d'image"> - <combo_box.item label="Aucun filtre" name="NoFilter"/> - </combo_box> - <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> - <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> - <text name="title_label"> - Titre : - </text> - <text name="description_label"> - Description : - </text> - <check_box initial_value="true" label="Inclure l'emplacement SL à la fin de la description" name="add_location_cb"/> - <text name="tags_label"> - Balises : - </text> - <text name="tags_help_label"> - Séparer les balises par des espaces + <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1 024 x 768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtres d'image"> + <combo_box.item label="Aucun filtre" name="NoFilter"/> + </combo_box> + <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> + <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> + <text name="title_label"> + Titre : + </text> + <text name="description_label"> + Description : + </text> + <check_box initial_value="true" label="Inclure l'emplacement SL à la fin de la description" name="add_location_cb"/> + <text name="tags_label"> + Balises : + </text> + <text name="tags_help_label"> + Séparer les balises par des espaces Utiliser "" pour les balises contenant plusieurs mots - </text> - <combo_box name="rating_combobox" tool_tip="Catégorie de contenu Flickr"> - <combo_box.item label="Catégorie de contenu Flickr sûr" name="SafeRating"/> - <combo_box.item label="Catégorie de contenu Flickr modéré" name="ModerateRating"/> - <combo_box.item label="Catégorie de contenu Flickr réservé aux adultes" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Charger" name="post_photo_btn"/> - <button label="Annuler" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Catégorie de contenu Flickr"> + <combo_box.item label="Catégorie de contenu Flickr sûr" name="SafeRating"/> + <combo_box.item label="Catégorie de contenu Flickr modéré" name="ModerateRating"/> + <combo_box.item label="Catégorie de contenu Flickr réservé aux adultes" name="RestrictedRating"/> + </combo_box> + <button label="Charger" name="post_photo_btn"/> + <button label="Annuler" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml index 3e66b3c72a..3e66b3c72a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml index a2655dcd45..a2655dcd45 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml 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 7c3b852de1..bea114af6c 100755..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 @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Rôles et membres"/> <accordion_tab name="group_notices_tab" title="Notices"/> <accordion_tab name="group_land_tab" title="Terrain/Actifs"/> + <accordion_tab name="group_experiences_tab" title="Expériences"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml index 5851856a03..5851856a03 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml index 4011d1b8c7..4011d1b8c7 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml index b1b32af7c6..b1b32af7c6 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml index 3364dd9dbc..3364dd9dbc 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_notify.xml b/indra/newview/skins/default/xui/fr/panel_group_notify.xml index 08a49f908c..08a49f908c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml index 3e66190c8d..3e66190c8d 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml index 1f2169e22c..1f2169e22c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/fr/panel_instant_message.xml b/indra/newview/skins/default/xui/fr/panel_instant_message.xml index 305d2d853c..305d2d853c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/fr/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/fr/panel_inventory_item.xml b/indra/newview/skins/default/xui/fr/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml index 60507f191d..60507f191d 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml index 7501e54f11..7501e54f11 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/fr/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml index b39920fe13..2b8249c8a9 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_login.xml +++ b/indra/newview/skins/default/xui/fr/panel_login.xml @@ -1,27 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=fr - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=fr</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nom d'utilisateur" name="username_combo" tool_tip="Nom d'utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/> <line_editor label="Mot de passe" name="password_edit"/> - <check_box label="Mémoriser mes informations" name="remember_check"/> - <text name="forgot_password_text"> - Mot de passe oublié - </text> - <button label="Connexion" name="connect_btn"/> - <text name="At_My_Last_Location_Label" font="SansSerifSmall" width="140"> - au dernier emplacement - </text> <combo_box label="Mes lieux préférés" name="start_location_combo"> + <combo_box.item label="Dernier emplacement" name="MyLastLocation"/> <combo_box.item label="Domicile" name="MyHome"/> </combo_box> - <button label="Connexion" name="connect_favorite_btn"/> - <line_editor label="Tapez un emplacement" name="location_edit"/> - <button label="Connexion" name="connect_location_btn"/> - <combo_box label="Sélectionner la grille" name="server_combo"/> + <button label="Connexion" name="connect_btn"/> + <check_box label="Mémoriser mes informations" name="remember_check"/> + <text name="forgot_password_text">Mot de passe oublié</text> + <combo_box label="Sélectionner la grille" name="server_combo" left_pad="20"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml index db7d254b7a..db7d254b7a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml new file mode 100644 index 0000000000..46578182da --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Place du marché" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Options d'affichage/de tri"/> + <button name="add_btn" tool_tip="Créer un nouveau dossier d'annonces"/> + <button label="Consulter les erreurs" name="audit_btn" tool_tip="Consulter vos annonces de Place du marché"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrer les annonces de Place du marché" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..fdee447a29 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TOUT" name="All Items" tool_tip="Faire glisser les objets et les déposer ici pour les publier"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..d3d476af6e --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="PUBLIÉS" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..95018e339f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="DÉSASSOCIÉE" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..5d811af914 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NON PUBLIÉS" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml index 5676986228..5676986228 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_me.xml +++ b/indra/newview/skins/default/xui/fr/panel_me.xml diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml index e048e66810..e048e66810 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml index 8f1b436ba1..8f1b436ba1 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml index 9d070b7aff..9d070b7aff 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml index ecb1e9813a..ecb1e9813a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml index b02e53269b..b02e53269b 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml index 762dee01bb..762dee01bb 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml index 7b7b67041a..7b7b67041a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml 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 110e017050..110e017050 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml diff --git a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml index 6ce09cde4b..6ce09cde4b 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml b/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml index d947dbceb8..d947dbceb8 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml 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 39bc7ef8af..39bc7ef8af 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml 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 1bc553c8c0..1bc553c8c0 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml index 4703559111..4703559111 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml index 416353e1d4..416353e1d4 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml index 874bab2daa..874bab2daa 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index e306a00183..e306a00183 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml 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 1de9b243f1..1de9b243f1 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml index fb277f653f..fb277f653f 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_picks.xml +++ b/indra/newview/skins/default/xui/fr/panel_picks.xml diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml index 30be838896..30be838896 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml index 5ec48c44c7..5ec48c44c7 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_places.xml +++ b/indra/newview/skins/default/xui/fr/panel_places.xml diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_message.xml b/indra/newview/skins/default/xui/fr/panel_postcard_message.xml index 0f8397cfb4..0f8397cfb4 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/fr/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml index 945a5e0272..eebf84c0d0 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1 024 x 768" name="1024x768"/> <combo_box.item label="Personnalisée" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Larg." name="postcard_snapshot_width"/> - <spinner label="Haut." name="postcard_snapshot_height"/> - <check_box label="Conserver les proportions" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Qualité image" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Largeur x Hauteur" name="postcard_snapshot_width"/> + <check_box label="Conserver les proportions" name="postcard_keep_aspect_check"/> + <slider label="Qualité :" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml index 67bcfb0879..67bcfb0879 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml index 901a92ed1b..901a92ed1b 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml 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 52c6ed24b9..52c6ed24b9 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml index e50fd2b6f3..e50fd2b6f3 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml index 11b1bd9b87..11b1bd9b87 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml 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 4946b09814..4946b09814 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml index 80aed90a2d..80aed90a2d 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml index 0a78a1bb93..0a78a1bb93 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml index 50f4a49bd0..e2f9b9567c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web : </text> - <radio_group name="use_external_browser"> - <radio_item label="Utiliser mon navigateur (IE, Firefox, Safari)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l'aide, les liens etc. Non recommandé en mode plein écran." value="true"/> - <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l'aide, ouvrir des liens, etc. Ce navigateur s'ouvre dans [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Utiliser mon navigateur (Chrome, Firefox, IE) pour tous les liens" name="internal" tool_tip="Utiliser le navigateur web système par défaut pour l'aide, les liens, etc. Non recommandé en mode plein écran." value="0"/> + <radio_item label="Utiliser le navigateur intégré pour les liens Second Life uniquement" name="external" tool_tip="Utilisez le navigateur web système par défaut pour l'aide, les liens Web, etc. Le navigateur intégré sera uniquement utilisé pour les liens LindenLab/SecondLife." value="1"/> </radio_group> <check_box initial_value="true" label="Activer les plugins" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Accepter les cookies" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 37eb6bbeb0..37eb6bbeb0 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml 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 ad744b7760..ad744b7760 100755..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 diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml index a30306d116..a30306d116 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml index 461ada3108..461ada3108 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/fr/panel_region_environment.xml b/indra/newview/skins/default/xui/fr/panel_region_environment.xml index 085a308786..085a308786 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml index be89020ac7..be89020ac7 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/fr/panel_region_experiences.xml b/indra/newview/skins/default/xui/fr/panel_region_experiences.xml new file mode 100644 index 0000000000..be9c99b009 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Expériences" name="Experiences"> + <panel.string name="trusted_estate_text"> + Toute expérience peut être une expérience avec clé. + +Les expériences avec clé peuvent s'exécuter dans ce domaine. + +En outre, si le domaine n'autorise pas l'accès public, les résidents participant à une expérience avec clé peuvent pénétrer dans ce domaine et y rester tant qu'ils participent à ladite expérience. + </panel.string> + <panel.string name="allowed_estate_text"> + Seules les expériences à l'échelle des terrains peuvent être autorisées. + +Les expériences autorisées peuvent s'exécuter dans ce domaine. + </panel.string> + <panel.string name="blocked_estate_text"> + Seules les expériences à l'échelle de la grille peuvent être bloquées. + +Les expériences bloquées ne peuvent pas s'exécuter dans ce domaine. + </panel.string> + <panel.string name="estate_caption"> + Les modifications des paramètres de cet onglet affecteront toutes les régions du domaine. + </panel.string> + <panel.string name="allowed_parcel_text"> + Seules les expériences à l'échelle des terrains peuvent être autorisées. + +Les expériences autorisées peuvent s'exécuter sur cette parcelle si elles ne sont pas bloquées par le domaine. + </panel.string> + <panel.string name="blocked_parcel_text"> + Toute expérience de résident peut être bloquée. + +Les expériences bloquées ne peuvent pas s'exécuter dans cette parcelle. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml index e9dcd6ab5a..e9dcd6ab5a 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml index 97f486d3a3..97f486d3a3 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml index 0a33463cbb..0a33463cbb 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/fr/panel_script_experience.xml b/indra/newview/skins/default/xui/fr/panel_script_experience.xml new file mode 100644 index 0000000000..dde84ed845 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="EXPÉRIENCE"> + <button label="Expérience" name="Expand Experience"/> + <check_box label="Utilise la ou les expériences :" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Choisir une expérience..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Vous ne contribuez à aucune expérience. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml index e541fae31f..e541fae31f 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml index 751abd6f1d..751abd6f1d 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml b/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml index 8febdccbed..8febdccbed 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml 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 45efbdc980..45efbdc980 100755..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 diff --git a/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml index 48bcff1c09..48bcff1c09 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml index 472c4a5e8f..a560ff8d5e 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Enregistrer dans l'inventaire + Inventaire </text> <text name="hint_lbl"> L'enregistrement d'une image dans l'inventaire coûte [UPLOAD_COST] L$. Pour enregistrer votre image sous forme de texture, sélectionnez un format carré. @@ -13,8 +13,8 @@ <combo_box.item label="Grande (512 x 512)" name="Large(512x512)"/> <combo_box.item label="Personnalisée" name="Custom"/> </combo_box> - <spinner label="Largeur" name="inventory_snapshot_width"/> - <spinner label="Hauteur" name="inventory_snapshot_height"/> + <spinner label="Largeur x Hauteur" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Conserver les proportions" name="inventory_keep_aspect_check"/> <button label="Annuler" name="cancel_btn"/> <button label="Enregistrer" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml index 97dc3e7e2b..8d361f0605 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Enregistrer sur l'ordinateur + Disque </text> <combo_box label="Résolution" name="local_size_combo"> <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1 600 x 1 200" name="1600x1200"/> <combo_box.item label="Personnalisée" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Largeur" name="local_snapshot_width"/> - <spinner label="Hauteur" name="local_snapshot_height"/> - <check_box label="Conserver les proportions" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Format" name="local_format_combo"> - <combo_box.item label="PNG (sans perte)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (sans perte)" name="BMP"/> - </combo_box> - <slider label="Qualité image" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Largeur x Hauteur" name="local_snapshot_width"/> + <check_box label="Conserver les proportions" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Format : + </text> + <combo_box label="Format" name="local_format_combo"> + <combo_box.item label="PNG (sans perte)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (sans perte)" name="BMP"/> + </combo_box> + <slider label="Qualité :" name="image_quality_slider"/> <button label="Annuler" name="cancel_btn"/> <flyout_button label="Enregistrer" name="save_btn" tool_tip="Enregistrer l'image dans un fichier."> <flyout_button.item label="Enregistrer" name="save_item"/> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml index bb858d5d23..eb724f4bd1 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Publier sur le flux de mon profil" name="save_to_profile_btn"/> - <button label="Envoyer par e-mail" name="save_to_email_btn"/> + <button label="Enreg. sur le disque" name="save_to_computer_btn"/> <button label="Enreg. dans l'inventaire ([AMOUNT] L$)" name="save_to_inventory_btn"/> - <button label="Enreg. sur l'ordinateur" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Envoyer à : [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="Charger dans le profil" name="save_to_profile_btn"/> + <button label="Charger sur Facebook" name="send_to_facebook_btn"/> + <button label="Charger sur Twitter" name="send_to_twitter_btn"/> + <button label="Charger sur Flickr" name="send_to_flickr_btn"/> + <button label="Envoyer par e-mail" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml index 82a4815144..067fa091d8 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml @@ -12,6 +12,10 @@ <text name="title"> E-mail </text> - <button label="Message" name="message_btn"/> - <button label="Paramètres" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="Message" name="panel_postcard_message"/> + <panel label="Paramètres" name="panel_postcard_settings"/> + </tab_container> + <button label="Annuler" name="cancel_btn"/> + <button label="Envoyer" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml index 427ffe2113..b87d62bedd 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Publier sur le flux de mon profil + Profil </text> <combo_box label="Résolution" name="profile_size_combo"> <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1 024 x 768" name="1024x768"/> <combo_box.item label="Personnalisée" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Largeur" name="profile_snapshot_width"/> - <spinner label="Hauteur" name="profile_snapshot_height"/> - <check_box label="Conserver les proportions" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Légende : - </text> - <check_box initial_value="true" label="Inclure l'endroit" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Largeur x Hauteur" name="profile_snapshot_width"/> + <check_box label="Conserver les proportions" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Légende : + </text> + <check_box initial_value="true" label="Inclure l'endroit" name="add_location_cb"/> <button label="Annuler" name="cancel_btn"/> <button label="Publier" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_sound_devices.xml b/indra/newview/skins/default/xui/fr/panel_sound_devices.xml index 460b269f7c..460b269f7c 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/fr/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml index ee4e8a6be6..ee4e8a6be6 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml index ba36a7d299..e2f05a525e 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perte de paquets - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bande passante - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Perte de paquets</panel.string> + <panel.string name="bandwidth_tooltip">Bande passante</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-405" name="balance_bg" width="195"> - <text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="20 L$"/> + <text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="L$ ??"/> <button label="Acheter L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$."/> <button label="Achats" name="goShop" tool_tip="Ouvrir la Place du marché Second Life." width="75"/> </panel> - <text name="TimeText" tool_tip="Heure actuelle (Pacifique)"> - 00h00 PST - </text> + <text name="TimeText" tool_tip="Heure actuelle (Pacifique)">00h00 PST</text> <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)."/> <button name="volume_btn" tool_tip="Régler le volume global."/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml b/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml index 81db7c8989..81db7c8989 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml index cf1266a460..cf1266a460 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml index b3b528d448..b3b528d448 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/fr/panel_twitter_photo.xml b/indra/newview/skins/default/xui/fr/panel_twitter_photo.xml index 2d3888f4c2..3e23e5d577 100644 --- a/indra/newview/skins/default/xui/fr/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/fr/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Que se passe-t-il ? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="Inclure l'emplacement SL" name="add_location_cb"/> - <check_box initial_value="true" label="Inclure une photo" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> - <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> - <combo_box.item label="640 x 480" name="640x480"/> - <combo_box.item label="800 x 600" name="800x600"/> - <combo_box.item label="1 024 x 768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtres d'image"> - <combo_box.item label="Aucun filtre" name="NoFilter"/> - </combo_box> - <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> - <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Envoyer tweet" name="post_photo_btn"/> - <button label="Annuler" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Que se passe-t-il ? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="Inclure l'emplacement SL" name="add_location_cb"/> + <check_box initial_value="true" label="Inclure une photo" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Résolution d’image"> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1 024 x 768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtres d'image"> + <combo_box.item label="Aucun filtre" name="NoFilter"/> + </combo_box> + <button label="Actualiser" name="new_snapshot_btn" tool_tip="Cliquer pour actualiser"/> + <button label="Aperçu" name="big_preview_btn" tool_tip="Cliquer pour activer/désactiver l'aperçu"/> + <button label="Envoyer tweet" name="post_photo_btn"/> + <button label="Annuler" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml b/indra/newview/skins/default/xui/fr/panel_voice_effect.xml index a134854706..a134854706 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/fr/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml index e05c93a4ac..e05c93a4ac 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/fr/panel_world_map.xml b/indra/newview/skins/default/xui/fr/panel_world_map.xml index 972aae1fab..972aae1fab 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_world_map.xml +++ b/indra/newview/skins/default/xui/fr/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml index 25920da4c3..966e3440e5 100755..100644 --- a/indra/newview/skins/default/xui/fr/role_actions.xml +++ b/indra/newview/skins/default/xui/fr/role_actions.xml @@ -71,4 +71,8 @@ <action description="Participer au chat vocal" longdescription="Participez au chat vocal du groupe. Remarque : vous devez au préalable avoir le pouvoir de participer aux chats." name="join voice chat" value="27"/> <action description="Modérer les chats" longdescription="Contrôlez l'accès et la participation aux chats de groupe écrits et vocaux." name="moderate group chat" value="37"/> </action_set> + <action_set description="Ces pouvoirs incluent la possibilité de modifier les expériences appartenant à ce groupe." name="experience_tools_experience"> + <action description="Administrateur des expériences" longdescription="Les membres dotés d'un rôle avec ce pouvoir peuvent modifier les métadonnées pour cette expérience." name="experience admin" value="49"/> + <action description="Contributeur aux expériences" longdescription="Les membres dotés d'un rôle avec ce pouvoir peuvent contribuer des scripts pour une expérience." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml index 5e1ac55a97..5e1ac55a97 100755..100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index 372d61263f..372d61263f 100755..100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml 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 e7fc7859c9..ede5ec08af 100755..100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Profil de l'article"> + <panel.string name="loading_experience"> + (chargement) + </panel.string> <panel.string name="unknown"> (inconnu) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Acquis le : </text> + <text name="LabelItemExperienceTitle"> + Expérience : + </text> <panel name="perms_inv"> <text name="perm_modify"> Vous pouvez : @@ -66,8 +72,9 @@ <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 name="ComboBoxSaleType"> <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Contenu" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Prix : L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml index 896dd932e3..f6b4f28046 100755..100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profil de l'objet"> - <panel.string name="text deed continued"> - Céder - </panel.string> - <panel.string name="text deed"> - Céder - </panel.string> - <panel.string name="text modify info 1"> - Vous pouvez modifier cet objet - </panel.string> - <panel.string name="text modify info 2"> - Vous pouvez modifier ces objets - </panel.string> - <panel.string name="text modify info 3"> - Vous ne pouvez pas modifier cet objet - </panel.string> - <panel.string name="text modify info 4"> - Vous ne pouvez pas modifier ces objets - </panel.string> - <panel.string name="text modify info 5"> - Impossible de modifier cet objet au-delà de la frontière d'une région - </panel.string> - <panel.string name="text modify info 6"> - Impossible de modifier ces objets au-delà de la frontière d'une région - </panel.string> - <panel.string name="text modify warning"> - Cet objet comprend des parties liées - </panel.string> - <panel.string name="Cost Default"> - Prix : L$ - </panel.string> - <panel.string name="Cost Total"> - Prix total : L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Prix par : L$ - </panel.string> - <panel.string name="Cost Mixed"> - Prix mixte - </panel.string> - <panel.string name="Sale Mixed"> - Vente mixte - </panel.string> + <panel.string name="text deed continued">Céder</panel.string> + <panel.string name="text deed">Céder</panel.string> + <panel.string name="text modify info 1">Vous pouvez modifier cet objet</panel.string> + <panel.string name="text modify info 2">Vous pouvez modifier ces objets</panel.string> + <panel.string name="text modify info 3">Vous ne pouvez pas modifier cet objet</panel.string> + <panel.string name="text modify info 4">Vous ne pouvez pas modifier ces objets</panel.string> + <panel.string name="text modify info 5">Impossible de modifier cet objet au-delà de la frontière d'une région</panel.string> + <panel.string name="text modify info 6">Impossible de modifier ces objets au-delà de la frontière d'une région</panel.string> + <panel.string name="text modify warning">Cet objet comprend des parties liées</panel.string> + <panel.string name="Cost Default">Prix : L$</panel.string> + <panel.string name="Cost Total">Prix total : L$</panel.string> + <panel.string name="Cost Per Unit">Prix par : L$</panel.string> + <panel.string name="Cost Mixed">Prix mixte</panel.string> + <panel.string name="Sale Mixed">Vente mixte</panel.string> <text name="title" value="Profil de l'objet"/> <text name="where" value="(dans Second Life)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nom : - </text> - <text name="Description:"> - Description : - </text> - <text name="CreatorNameLabel"> - Créateur : - </text> - <text name="Owner:"> - Propriétaire : - </text> - <text name="Group_label"> - Groupe : - </text> + <text name="Name:">Nom :</text> + <text name="Description:">Description :</text> + <text name="CreatorNameLabel">Créateur :</text> + <text name="Owner:">Propriétaire :</text> + <text name="Group_label">Groupe :</text> <button name="button set group" tool_tip="Choisir un groupe pour partager les droits relatifs à 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 partagés d'un groupe."/> - <text name="label click action"> - Cliquer pour : - </text> + <text name="label click action">Cliquer pour :</text> <combo_box name="clickaction"> <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/> <combo_box.item label="S'asseoir sur l'objet" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Vous pouvez modifier cet objet - </text> - <text name="Anyone can:"> - N'importe qui : - </text> + <text name="perm_modify">Vous pouvez modifier cet objet</text> + <text name="Anyone can:">N'importe qui :</text> <check_box label="Copier" name="checkbox allow everyone copy"/> <check_box label="Bouger" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Groupe : - </text> + <text name="GroupLabel">Groupe :</text> <check_box label="Partager" name="checkbox share with group" 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"> - Le prochain propriétaire : - </text> + <text name="NextOwnerLabel">Le prochain propriétaire :</text> <check_box label="Modifier" name="checkbox next owner can modify"/> <check_box label="Copier" name="checkbox next owner can copy"/> <check_box label="Transférer" name="checkbox next owner can transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Prix : L$" name="Edit Cost"/> <check_box label="Afficher avec la recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/> - <text name="pathfinding_attributes_label"> - Attributs de recherche de chemin : - </text> - <text name="B:"> - B : - </text> - <text name="O:"> - O : - </text> - <text name="G:"> - G : - </text> - <text name="E:"> - E : - </text> - <text name="N:"> - N : - </text> - <text name="F:"> - F : - </text> + <text name="pathfinding_attributes_label">Attributs de recherche de chemin :</text> + <text name="B:">B :</text> + <text name="O:">O :</text> + <text name="G:">G :</text> + <text name="E:">E :</text> + <text name="N:">N :</text> + <text name="F:">F :</text> </panel> <panel name="button_panel"> <button label="Ouvrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index b3ce171633..7b8a262a05 100755..100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -38,7 +38,7 @@ Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour. </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [Notes de version]] </string> <string name="AboutCompiler"> @@ -449,30 +449,51 @@ Veuillez réessayer de vous connecter dans une minute. <string name="TooltipMustSingleDrop"> Impossible de faire glisser plus d'un objet ici </string> + <string name="TooltipTooManyWearables"> + Vous ne pouvez pas porter un dossier contenant plus de [AMOUNT] articles. Vous pouvez modifier cette limite dans Avancé > Afficher les paramètres de débogage > WearFolderLimit. + </string> <string name="TooltipPrice" value="[AMOUNT] L$ :"/> <string name="TooltipOutboxDragToWorld"> - Impossible de rezzer des articles dans la boîte d'envoi vendeur + Vous ne pouvez pas rezzer (charger) des articles du dossier Annonces de la Place de marché + </string> + <string name="TooltipOutboxWorn"> + Vous ne pouvez pas mettre d'articles que vous portez dans le dossier Annonces de la Place du marché + </string> + <string name="TooltipOutboxFolderLevels"> + Le niveau de dossiers imbriqués dépasse [AMOUNT]. Diminuez le nombre de niveaux de dossiers imbriqués dans d'autres dossiers. Si nécessaire, placez certains articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyFolders"> + Le nombre de sous-dossiers dépasse [AMOUNT]. Diminuez le nombre de sous-dossiers dans votre annonce. Si nécessaire, placez certains articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyObjects"> + Le nombre d'articles dépasse [AMOUNT]. Pour pouvoir vendre plus de [AMOUNT] articles au sein d'une même annonce, vous devez placer certains de ces articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Le nombre d'articles de stock dépasse [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Vous ne pouvez déposer des articles ou des dossiers que dans l'onglet TOUT. Veuillez activer cet onglet et déplacer à nouveau article(s) et dossier(s). </string> <string name="TooltipOutboxNoTransfer"> - Impossible de vendre ou de transférer un ou plusieurs de ces objets. + Impossible de vendre ou de transférer un ou plusieurs de ces objets </string> <string name="TooltipOutboxNotInInventory"> - La boîte d'envoi vendeur n'accepte que les articles directement issus de votre inventaire. + Vous ne pouvez mettre sur la Place du marché que des articles de votre inventaire </string> - <string name="TooltipOutboxWorn"> - Impossible de placer des articles que vous portez dans votre boîte d'envoi vendeur + <string name="TooltipOutboxLinked"> + Vous ne pouvez pas mettre des articles ou dossiers liés sur la Place du marché </string> <string name="TooltipOutboxCallingCard"> - Impossible de placer des cartes de visite dans votre boîte d'envoi vendeur + Vous ne pouvez pas mettre des cartes de visite sur la Place du marché </string> - <string name="TooltipOutboxFolderLevels"> - Il existe plus de 3 niveaux de dossiers imbriqués. + <string name="TooltipOutboxDragActive"> + vous ne pouvez pas déplacer une annonce publiée </string> - <string name="TooltipOutboxTooManyFolders"> - Le dossier de niveau supérieur contient plus de 20 sous-dossiers. + <string name="TooltipOutboxCannotMoveRoot"> + Vous ne pouvez pas déplacer le dossier racine des annonces de la Place du marché </string> - <string name="TooltipOutboxTooManyObjects"> - Le dossier de niveau supérieur contient plus de 200 articles. + <string name="TooltipOutboxMixedStock"> + tous les articles d'un dossier de stock doivent avoir le même type et droit </string> <string name="TooltipDragOntoOwnChild"> Impossible de déplacer un dossier vers son enfant @@ -1060,9 +1081,7 @@ Veuillez réessayer de vous connecter dans une minute. <string name="AgentNameSubst"> (Vous) </string> - <string name="JoinAnExperience"> - Rejoindre une expérience - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Supprimer les alertes lors de la gestion des listes d'accès aux domaines </string> @@ -1129,6 +1148,12 @@ Veuillez réessayer de vous connecter dans une minute. <string name="bitmap_image_files"> Images Bitmap </string> + <string name="png_image_files"> + Images PNG + </string> + <string name="save_texture_image_files"> + Images Targa ou PNG + </string> <string name="avi_movie_file"> Fichier de film AVI </string> @@ -1378,6 +1403,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="FavoritesNoMatchingItems"> Faites glisser un repère ici pour l'ajouter à vos Favoris. </string> + <string name="MarketplaceNoMatchingItems"> + Aucun article trouvé. Vérifiez l'orthographe de votre chaîne de recherche et réessayez. + </string> <string name="InventoryNoTexture"> Vous n'avez pas de copie de cette texture dans votre inventaire </string> @@ -1425,29 +1453,95 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InventoryOutboxError"> La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs. </string> + <string name="InventoryMarketplaceError"> + Cette fonctionnalité est en version bêta. Veuillez ajouter votre nom à ce [http://goo.gl/forms/FCQ7UXkakz formulaire Google] si vous souhaitez participer. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Votre dossier Annonces de la Place du marché est vide. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone. + </string> + <string name="Marketplace Validation Warning Stock"> + le dossier de stock doit être contenu dans un dossier de version + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Erreur : tous les articles d'un dossier de stock doivent être non reproductibles et de même type + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Erreur : un dossier de stock ne peut pas contenir de sous-dossiers + </string> + <string name="Marketplace Validation Warning Empty"> + : Avertissement : le dossier ne contient aucun article + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Avertissement : création du dossier de stock + </string> + <string name="Marketplace Validation Warning Create Version"> + : Avertissement : création du dossier de version + </string> + <string name="Marketplace Validation Warning Move"> + : Avertissement : déplacement d'articles + </string> + <string name="Marketplace Validation Warning Delete"> + : Avertissement : contenu du dossier transféré vers le dossier de stock, suppression du dossier vide + </string> + <string name="Marketplace Validation Error Stock Item"> + : Erreur : les articles non reproductibles doivent être contenus dans un dossier de stock + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Avertissement : les articles doivent être contenus dans un dossier de version + </string> + <string name="Marketplace Validation Error"> + : Erreur : + </string> + <string name="Marketplace Validation Warning"> + : Avertissement : + </string> + <string name="Marketplace Validation Error Empty Version"> + : Avertissement : le dossier de version doit contenir au moins 1 article + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Avertissement : le dossier de stock doit contenir au moins 1 article + </string> + <string name="Marketplace Validation No Error"> + Pas d'erreur ni d'avertissement à signaler + </string> <string name="Marketplace Error None"> Aucune erreur </string> + <string name="Marketplace Error Prefix"> + Erreur : + </string> <string name="Marketplace Error Not Merchant"> - Erreur : avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit). + Avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit). </string> - <string name="Marketplace Error Empty Folder"> - Erreur : ce dossier est vide. + <string name="Marketplace Error Not Accepted"> + Impossible de déplacer l'article dans ce dossier. </string> - <string name="Marketplace Error Unassociated Products"> - Erreur : le chargement de cet article a échoué en raison d'un nombre trop important d'articles non associés à des produits au niveau de votre compte de vendeur. Pour résoudre ce problème, connectez-vous au site Web de la Place du marché et réduisez le nombre d'articles non associés. + <string name="Marketplace Error Unsellable Item"> + Cet article ne peut pas être vendu sur la Place du marché. </string> - <string name="Marketplace Error Object Limit"> - Erreur : cet article contient trop d'objets. Pour résoudre le problème, regroupez des objets dans des paquets afin de réduire le nombre total à moins de 200. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - Erreur : trop de niveaux de dossiers imbriqués concernant cet article. Réorganisez le tout afin qu'un maximum de 3 niveaux soit utilisé. + <string name="MarketplaceLive"> + publié </string> - <string name="Marketplace Error Unsellable Item"> - Erreur : cet article ne peut pas être vendu sur la Place du marché. + <string name="MarketplaceActive"> + actif </string> - <string name="Marketplace Error Internal Import"> - Erreur : un problème est survenu concernant cet article. Veuillez réessayer ultérieurement. + <string name="MarketplaceMax"> + max. + </string> + <string name="MarketplaceStock"> + stock + </string> + <string name="MarketplaceNoStock"> + rupture de stock + </string> + <string name="MarketplaceUpdating"> + mise à jour... </string> <string name="Open landmarks"> Ouvrir les repères @@ -1468,6 +1562,7 @@ Veuillez réessayer de vous connecter dans une minute. Aucun contenu </string> <string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (actif)"/> <string name="PermYes"> Oui @@ -1738,6 +1833,15 @@ Veuillez réessayer de vous connecter dans une minute. <string name="Invalid Attachment"> Point d'attache non valide </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Erreur : article manquant + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Erreur : article de base manquant + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Erreur : l'objet est dans une tenue actuelle, mais il n'est pas attaché + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1906,6 +2010,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="SaveComplete"> Enregistrement terminé. </string> + <string name="UploadFailed"> + Échec du chargement de fichier : + </string> <string name="ObjectOutOfRange"> Script (objet hors de portée) </string> @@ -1915,6 +2022,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="GroupsNone"> aucun </string> + <string name="CompileNoExperiencePerm"> + En train d'ignorer le script [SCRIPT] avec l'expérience [EXPERIENCE]. + </string> <string name="Group" value=" (groupe)"/> <string name="Unknown"> (Inconnu) @@ -5066,6 +5176,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Marketplace_Label"> Place du marché </string> + <string name="Command_MarketplaceListings_Label"> + Place du marché + </string> <string name="Command_MiniMap_Label"> Mini-carte </string> @@ -5153,6 +5266,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Marketplace_Tooltip"> Faire du shopping </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vendez votre création + </string> <string name="Command_MiniMap_Tooltip"> Afficher les personnes près de vous </string> @@ -5276,4 +5392,85 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="loading_chat_logs"> Chargement... </string> + <string name="experience_tools_experience"> + Expérience + </string> + <string name="ExperienceNameNull"> + (aucune expérience) + </string> + <string name="ExperienceNameUntitled"> + (expérience sans titre) + </string> + <string name="Land-Scope"> + À l'échelle des terrains + </string> + <string name="Grid-Scope"> + À l'échelle de la grille + </string> + <string name="Allowed_Experiences_Tab"> + AUTORISÉE + </string> + <string name="Blocked_Experiences_Tab"> + BLOQUÉE + </string> + <string name="Contrib_Experiences_Tab"> + CONTRIBUTEUR + </string> + <string name="Admin_Experiences_Tab"> + ADMIN + </string> + <string name="Recent_Experiences_Tab"> + RÉCENTE + </string> + <string name="Owned_Experiences_Tab"> + AVEC PROPRIÉTAIRE + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], [MAXEXPERIENCES] max.) + </string> + <string name="ExperiencePermission1"> + assumer vos contrôles + </string> + <string name="ExperiencePermission3"> + déclencher des animations pour votre avatar + </string> + <string name="ExperiencePermission4"> + attacher à votre avatar + </string> + <string name="ExperiencePermission9"> + suivre votre caméra + </string> + <string name="ExperiencePermission10"> + contrôler votre caméra + </string> + <string name="ExperiencePermission11"> + vous téléporter + </string> + <string name="ExperiencePermission12"> + accepter automatiquement les permissions d'expérience + </string> + <string name="ExperiencePermissionShortUnknown"> + a effectué une opération inconnue : [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Prendre le contrôle + </string> + <string name="ExperiencePermissionShort3"> + Déclencher des animations + </string> + <string name="ExperiencePermissionShort4"> + Attacher + </string> + <string name="ExperiencePermissionShort9"> + Suivre la caméra + </string> + <string name="ExperiencePermissionShort10"> + Contrôler la caméra + </string> + <string name="ExperiencePermissionShort11"> + Téléporter + </string> + <string name="ExperiencePermissionShort12"> + Permission + </string> </strings> diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml index 6065fa2966..f4499d46f8 100755..100644 --- a/indra/newview/skins/default/xui/fr/teleport_strings.xml +++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml @@ -48,6 +48,9 @@ Pour recommencer le didacticiel, accédez à Welcome Island Public. <message name="MustGetAgeRegion"> Pour accéder à cette région, vous devez avoir au moins 18 ans. </message> + <message name="RegionTPSpecialUsageBlocked"> + Impossible de pénétrer dans la région. « [REGION_NAME] » est une région de jeux d'adresse et vous devez satisfaire à certains critères pour y pénétrer. Pour en savoir plus, consultez la page [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life FAQ sur les jeux d'adresse]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/fr/xui_version.xml b/indra/newview/skins/default/xui/fr/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/fr/xui_version.xml +++ b/indra/newview/skins/default/xui/fr/xui_version.xml diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index 6f09eca90c..f3b7effdaa 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -1,82 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="INFO [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Generato con [COMPILER] versione [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordinate globali [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memoria: [MEMORY_MB] MB -Versione sistema operativo: [OS_VERSION] -Venditore scheda grafica: [GRAPHICS_CARD_VENDOR] -Scheda grafica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Versione OpenGL: [OPENGL_VERSION] - -Versione libcurl: [LIBCURL_VERSION] -Versione J2C Decoder: [J2C_VERSION] -Versione Driver audio: [AUDIO_DRIVER_VERSION] -Versione Qt Webkit: [QT_WEBKIT_VERSION] -Versione Server voice: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (nessuno) - </floater.string> - <floater.string name="AboutTraffic"> - Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) Informazioni - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Errore nel recupero URL note rilascio versione - </floater.string> <tab_container name="about_tab"> <panel label="Informazioni" name="support_panel"> <button label="Copia negli appunti" name="copy_btn"/> </panel> <panel label="Ringraziamenti" name="credits_panel"> - <text name="linden_intro"> - Second Life vi è offerto dai Linden: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - con contributi open source da: - </text> - <text_editor name="contrib_names"> - Dummy Name sostituito all'avvio - </text_editor> - <text name="trans_intro"> - e le traduzioni da: - </text> - <text_editor name="trans_names"> - Dummy Name sostituito all'avvio - </text_editor> + <text name="linden_intro">Second Life vi è offerto dai Linden, +con contributi open source da:</text> + <text_editor name="contrib_names">Dummy Name sostituito all'avvio</text_editor> </panel> <panel label="Licenze" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm e Werner Lemberg. GL Copyright (C) 1999-2004 Brian Paul. - GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University e David Luebke, Brenden Schubert, University of Virginia. google-perftools Copyright (c) 2005, Google Inc. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) @@ -87,7 +29,7 @@ Versione Server voice: [VOICE_VERSION] SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + zlib Copyright (C) 1995-2012 Jean-loup Gailly e Mark Adler. Il Viewer Second Life utilizza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenziatari). Tutti i diritti riservati. Per informazioni dettagliate, vedere www.havok.com. @@ -95,8 +37,7 @@ Versione Server voice: [VOICE_VERSION] Tutti i diritti riservati. Per informazioni dettagliate, vedere licenses.txt. - Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index fe3e59b0bd..0c0d05308b 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -313,9 +313,6 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <panel.string name="push_restrict_region_text"> Nessuna spinta (Impostazione regionale) </panel.string> - <panel.string name="see_avs_text"> - Gli avatar in altri lotti possono vedere - </panel.string> <text name="allow_label"> Permetti ad altri residenti di: </text> @@ -341,22 +338,6 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento con danni."/> <check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/> <check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Consenti che il lotto sia visto nei risultati di ricerca"/> - <combo_box name="land category with adult"> - <combo_box.item label="Tutte le categorie" name="item0"/> - <combo_box.item label="Luogo dei Linden" name="item1"/> - <combo_box.item label="Adulti" name="item2"/> - <combo_box.item label="Arte e cultura" name="item3"/> - <combo_box.item label="Affari" name="item4"/> - <combo_box.item label="Istruzione" name="item5"/> - <combo_box.item label="Gioco" name="item6"/> - <combo_box.item label="Divertimento" name="item7"/> - <combo_box.item label="Accoglienza nuovi residenti" name="item8"/> - <combo_box.item label="Parchi & Natura" name="item9"/> - <combo_box.item label="Residenziale" name="item10"/> - <combo_box.item label="Shopping" name="item11"/> - <combo_box.item label="Affitto" name="item13"/> - <combo_box.item label="Altro" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Tutte le categorie" name="item0"/> <combo_box.item label="Luogo dei Linden" name="item1"/> @@ -456,15 +437,9 @@ Media: <panel.string name="access_estate_defined"> (Definito dalla proprietà) </panel.string> - <panel.string name="allow_public_access"> - Consenti accesso pubblico ([MATURITY]) (Nota: se si rimuove la selezione vengono create linee di espulsione) - </panel.string> <panel.string name="estate_override"> Una o più di queste impostazioni sono già impostate a livello regionale </panel.string> - <text name="Limit access to this parcel to:"> - Accesso a questo terreno - </text> <check_box label="Consenti l'accesso pubblico (se si rimuove la selezione vengono create linee di espulsione)" name="public_access"/> <text name="Only Allow"> Consenti l'accesso solo ai Residenti che: @@ -496,5 +471,6 @@ Media: <button label="Rimuovi" label_selected="Rimuovi" name="remove_banned"/> </panel> </panel> + <panel label="ESPERIENZE" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_activeim.xml b/indra/newview/skins/default/xui/it/floater_activeim.xml index 0c1f0448e1..0c1f0448e1 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_activeim.xml +++ b/indra/newview/skins/default/xui/it/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml index a2bce00141..a2bce00141 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml index a4319f2e77..34ee9aaed5 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ La lunghezza massima dell'animazione è [MAX_LENGTH] secondi. Espressione </text> <combo_box name="emote_combo" tool_tip="Definisce ciò che fa il viso durante l'animazione"> - <item label="(Nulla)" name="[None]" value=""/> - <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> - <item label="Spavento" name="Afraid" value="Spavento"/> - <item label="Arrabbiato" name="Angry" value="Arrabbiato"/> - <item label="Grande sorriso" name="BigSmile" value="Grande sorriso"/> - <item label="Annoiato" name="Bored" value="Annoiato"/> - <item label="Pianto" name="Cry" value="Pianto"/> - <item label="Disdegno" name="Disdain" value="Disdegno"/> - <item label="Imbarazzato" name="Embarrassed" value="Imbarazzato"/> - <item label="Accigliato" name="Frown" value="Accigliato"/> - <item label="Bacio" name="Kiss" value="Bacio"/> - <item label="Risata" name="Laugh" value="Risata"/> - <item label="Linguaccia" name="Plllppt" value="Linguaccia"/> - <item label="Repulsione" name="Repulsed" value="Repulsione"/> - <item label="Triste" name="Sad" value="Triste"/> - <item label="Scrollata di spalle" name="Shrug" value="Scrollata di spalle"/> - <item label="Sorriso" name="Smile" value="Sorriso"/> - <item label="Stupore" name="Surprise" value="Stupore"/> - <item label="Occhiolino" name="Wink" value="Occhiolino"/> - <item label="Preoccupato" name="Worry" value="Preoccupato"/> + <item label="(Nulla)" name="[None]"/> + <item label="Aaaaah" name="Aaaaah"/> + <item label="Spavento" name="Afraid" /> + <item label="Arrabbiato" name="Angry"/> + <item label="Grande sorriso" name="BigSmile"/> + <item label="Annoiato" name="Bored"/> + <item label="Pianto" name="Cry"/> + <item label="Disdegno" name="Disdain"/> + <item label="Imbarazzato" name="Embarrassed"/> + <item label="Accigliato" name="Frown"/> + <item label="Bacio" name="Kiss"/> + <item label="Risata" name="Laugh"/> + <item label="Linguaccia" name="Plllppt"/> + <item label="Repulsione" name="Repulsed"/> + <item label="Triste" name="Sad"/> + <item label="Scrollata di spalle" name="Shrug"/> + <item label="Sorriso" name="Smile"/> + <item label="Stupore" name="Surprise"/> + <item label="Occhiolino" name="Wink"/> + <item label="Preoccupato" name="Worry"/> </combo_box> <text name="preview_label"> Anteprima mentre </text> <combo_box name="preview_base_anim" tool_tip="Prova il comportamento dell'animazione mentre l'avatar esegue attività comuni."> - <item label="In piedi" name="Standing" value="In piedi"/> - <item label="Camminare" name="Walking" value="Camminare"/> - <item label="Seduto" name="Sitting" value="Seduto"/> - <item label="Volare" name="Flying" value="Volare"/> + <item label="In piedi" name="Standing"/> + <item label="Camminare" name="Walking"/> + <item label="Seduto" name="Sitting"/> + <item label="Volare" name="Flying"/> </combo_box> <spinner label="Transizione in ingresso (sec)" name="ease_in_time" tool_tip="Durata (in secondi) della fusione in entrata delle animazioni"/> <spinner label="Transizione in uscita (sec)" name="ease_out_time" tool_tip="Durata (in secondi) della fusione in uscita delle animazioni"/> diff --git a/indra/newview/skins/default/xui/it/floater_associate_listing.xml b/indra/newview/skins/default/xui/it/floater_associate_listing.xml new file mode 100644 index 0000000000..2d7e1f9d3b --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIA ANNUNCIO"> + <text name="message">ID annuncio:</text> + <line_editor name="listing_id">Digita qui l'ID</line_editor> + <button label="OK" name="OK"/> + <button label="Annulla" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_auction.xml b/indra/newview/skins/default/xui/it/floater_auction.xml index 4cad8b744d..4cad8b744d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_auction.xml +++ b/indra/newview/skins/default/xui/it/floater_auction.xml diff --git a/indra/newview/skins/default/xui/it/floater_autoreplace.xml b/indra/newview/skins/default/xui/it/floater_autoreplace.xml index 559a42cfae..559a42cfae 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/it/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/it/floater_avatar.xml b/indra/newview/skins/default/xui/it/floater_avatar.xml index d7445cfb2b..d7445cfb2b 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_avatar.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml index 5a542d6a27..5a542d6a27 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml index b6376973cd..b6376973cd 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml index b7ab265cc2..b7ab265cc2 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_beacons.xml +++ b/indra/newview/skins/default/xui/it/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml index 080e396642..080e396642 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_build_options.xml +++ b/indra/newview/skins/default/xui/it/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml index 399eb15802..399eb15802 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/it/floater_bumps.xml b/indra/newview/skins/default/xui/it/floater_bumps.xml index ae66148659..ae66148659 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_bumps.xml +++ b/indra/newview/skins/default/xui/it/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml index 84ed85e362..84ed85e362 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index 743969f557..743969f557 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml index 4a1bf33403..4a1bf33403 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml index 3940c43a3d..3940c43a3d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/it/floater_buy_object.xml b/indra/newview/skins/default/xui/it/floater_buy_object.xml index e7cbd68b38..e7cbd68b38 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml index be03857bc9..be03857bc9 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_camera.xml +++ b/indra/newview/skins/default/xui/it/floater_camera.xml diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml index b47e32ce90..b47e32ce90 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/it/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/it/floater_choose_group.xml b/indra/newview/skins/default/xui/it/floater_choose_group.xml index 00f2692295..00f2692295 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/it/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/it/floater_color_picker.xml b/indra/newview/skins/default/xui/it/floater_color_picker.xml index 38d4a0a037..38d4a0a037 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/it/floater_critical.xml b/indra/newview/skins/default/xui/it/floater_critical.xml index 82850b0ada..82850b0ada 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_critical.xml +++ b/indra/newview/skins/default/xui/it/floater_critical.xml diff --git a/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml index 71071825af..71071825af 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/it/floater_destinations.xml b/indra/newview/skins/default/xui/it/floater_destinations.xml index 242403e431..242403e431 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_destinations.xml +++ b/indra/newview/skins/default/xui/it/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/it/floater_display_name.xml b/indra/newview/skins/default/xui/it/floater_display_name.xml index 3e0c43e741..3e0c43e741 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_display_name.xml +++ b/indra/newview/skins/default/xui/it/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml index c922b2e4f7..c922b2e4f7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml new file mode 100644 index 0000000000..a395b247ed --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="IMPOSTA ALTEZZA DI VOLO"> + <slider label="Altezza" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml index 571027fd29..571027fd29 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml index 7bffc60ba2..7bffc60ba2 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/it/floater_environment_settings.xml b/indra/newview/skins/default/xui/it/floater_environment_settings.xml index f191078fad..f191078fad 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/it/floater_event.xml b/indra/newview/skins/default/xui/it/floater_event.xml index b64f429870..b64f429870 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_event.xml +++ b/indra/newview/skins/default/xui/it/floater_event.xml diff --git a/indra/newview/skins/default/xui/it/floater_experience_search.xml b/indra/newview/skins/default/xui/it/floater_experience_search.xml new file mode 100644 index 0000000000..a31e7aa76f --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="SCEGLI ESPERIENZA"/> diff --git a/indra/newview/skins/default/xui/it/floater_experienceprofile.xml b/indra/newview/skins/default/xui/it/floater_experienceprofile.xml new file mode 100644 index 0000000000..031900825d --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (nessuno) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Profilo esperienza"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Modifica" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Categoria: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Luogo: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Proprietario: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Gruppo: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Consenti" name="allow_btn"/> + <button label="Dimentica" name="forget_btn"/> + <button label="Blocca" name="block_btn"/> + <text name="privileged"> + Questa esperienza è attivata per tutti i residenti. + </text> + <button label="Segnala abuso" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Nome:"/> + <text name="edit_experience_desc_label" value="Descrizione:"/> + <button label="Gruppo" name="Group_btn"/> + <text name="edit_ContentRating"> + Categoria: + </text> + <icons_combo_box label="Moderato" name="edit_ContentRatingText" tool_tip="Se si aumenta la categoria di accesso di un'esperienza, vengono ripristinate le autorizzazioni per tutti i residenti che hanno consentito l'esperienza."> + <icons_combo_box.item label="Adulti" name="Adult" value="42"/> + <icons_combo_box.item label="Moderato" name="Mature" value="21"/> + <icons_combo_box.item label="Generale" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Luogo: + </text> + <button label="Imposta come attuale" name="location_btn"/> + <button label="Cancella luogo" name="clear_btn"/> + <check_box label="Attiva esperienza" name="edit_enable_btn" tool_tip=""/> + <check_box label="Nascondi nella ricerca" name="edit_private_btn"/> + <text name="changes" value="Le modifiche apportate alle esperienze potrebbero essere visibili su tutte le regioni solo dopo alcuni minuti."/> + <button label="Indietro" name="cancel_btn"/> + <button label="Salva" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_experiences.xml b/indra/newview/skins/default/xui/it/floater_experiences.xml new file mode 100644 index 0000000000..7cd19783a3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="ESPERIENZE"/> diff --git a/indra/newview/skins/default/xui/it/floater_facebook.xml b/indra/newview/skins/default/xui/it/floater_facebook.xml index 89d58f4e67..cb700f00e1 100644 --- a/indra/newview/skins/default/xui/it/floater_facebook.xml +++ b/indra/newview/skins/default/xui/it/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="PUBBLICA SU FACEBOOK"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="STATO" name="panel_facebook_status"/> - <panel label="FOTO" name="panel_facebook_photo"/> - <panel label="REGISTRATI" name="panel_facebook_place"/> - <panel label="AMICI" name="panel_facebook_friends"/> - <panel label="ACCOUNT" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Errore - </text> - <text name="connection_loading_text"> - Caricamento... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="STATO" name="panel_facebook_status"/> + <panel label="FOTO" name="panel_facebook_photo"/> + <panel label="REGISTRATI" name="panel_facebook_place"/> + <panel label="AMICI" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Errore + </text> + <text name="connection_loading_text"> + Caricamento in corso... + </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_fast_timers.xml b/indra/newview/skins/default/xui/it/floater_fast_timers.xml index 52ab6b0c3d..52ab6b0c3d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/it/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/it/floater_font_test.xml b/indra/newview/skins/default/xui/it/floater_font_test.xml index 859c068b11..859c068b11 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_font_test.xml +++ b/indra/newview/skins/default/xui/it/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml index b9419ebc22..b9419ebc22 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/it/floater_god_tools.xml b/indra/newview/skins/default/xui/it/floater_god_tools.xml index 32c79936cf..32c79936cf 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml index edbbc354cf..edbbc354cf 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/it/floater_help_browser.xml b/indra/newview/skins/default/xui/it/floater_help_browser.xml index 008643afac..008643afac 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/it/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/it/floater_how_to.xml b/indra/newview/skins/default/xui/it/floater_how_to.xml index 8f0e210571..8f0e210571 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_how_to.xml +++ b/indra/newview/skins/default/xui/it/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/it/floater_hud.xml b/indra/newview/skins/default/xui/it/floater_hud.xml index 437d2d6496..437d2d6496 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_hud.xml +++ b/indra/newview/skins/default/xui/it/floater_hud.xml diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml index 10cf1b7f7e..10cf1b7f7e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_im_container.xml +++ b/indra/newview/skins/default/xui/it/floater_im_container.xml 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 71f90accde..71f90accde 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_im_session.xml +++ b/indra/newview/skins/default/xui/it/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml index ee7be7b155..ee7be7b155 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/it/floater_import_collada.xml b/indra/newview/skins/default/xui/it/floater_import_collada.xml index eb4d0c0fdb..eb4d0c0fdb 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/it/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml index 566920209d..566920209d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/it/floater_inspect.xml b/indra/newview/skins/default/xui/it/floater_inspect.xml index bae993d2be..bae993d2be 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_inspect.xml +++ b/indra/newview/skins/default/xui/it/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml index 7ed3486b9b..8cf680b3f0 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="CARATTERISTICHE DELL'ARTICOLO IN INVENTARIO"> - <floater.string name="unknown"> - (sconosciuto) - </floater.string> - <floater.string name="public"> - (pubblico) - </floater.string> - <floater.string name="you_can"> - Tu puoi: - </floater.string> - <floater.string name="owner_can"> - Il proprietario può: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrizione: - </text> - <text name="LabelCreatorTitle"> - Creatore: - </text> + <floater.string name="unknown">(sconosciuto)</floater.string> + <floater.string name="public">(pubblico)</floater.string> + <floater.string name="you_can">Tu puoi:</floater.string> + <floater.string name="owner_can">Il proprietario può:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nome:</text> + <text name="LabelItemDescTitle">Descrizione:</text> + <text name="LabelCreatorTitle">Creatore:</text> <button label="Profilo..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - proprietario: - </text> + <text name="LabelOwnerTitle">proprietario:</text> <button label="Profilo..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquisito: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Tu: - </text> + <text name="LabelAcquiredTitle">Acquisito:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Tu:</text> <check_box label="Modifica" name="CheckOwnerModify"/> <check_box label="Copiare" left_delta="88" name="CheckOwnerCopy"/> <check_box label="Rivendi" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Chiunque: - </text> + <text name="AnyoneLabel">Chiunque:</text> <check_box label="Copia" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppo: - </text> + <text name="GroupLabel">Gruppo:</text> <check_box label="Condividi" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Proprietario successivo: - </text> + <text name="NextOwnerLabel" width="230">Proprietario successivo:</text> <check_box label="Modifica" name="CheckNextOwnerModify"/> <check_box label="Copiare" left_delta="88" name="CheckNextOwnerCopy"/> <check_box label="Rivendi" name="CheckNextOwnerTransfer"/> <check_box label="In vendita" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Contenuti" name="Contents"/> <combo_box.item label="Originale" name="Original"/> </combo_box> <spinner label="Prezzo:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml index cf790ee62e..e5543c741f 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Abiti" name="check_clothing"/> <check_box label="Gesture" name="check_gesture"/> <check_box label="Landmark" name="check_landmark"/> - <check_box label="Reticoli" name="check_mesh"/> <check_box label="Notecard" name="check_notecard"/> + <check_box label="Reticoli" name="check_mesh"/> <check_box label="Oggetti" name="check_object"/> <check_box label="Script" name="check_script"/> <check_box label="Suoni" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - Oppure - </text> + <radio_group name="date_search_direction"> + <radio_item label="Più recenti del" name="newer"/> + <radio_item label="Precedenti al" name="older"/> + </radio_group> <spinner label="Ore fa" name="spin_hours_ago"/> <spinner label="Giorni fa" name="spin_days_ago"/> <button label="Chiudi" label_selected="Chiudi" name="Close"/> diff --git a/indra/newview/skins/default/xui/it/floater_item_properties.xml b/indra/newview/skins/default/xui/it/floater_item_properties.xml new file mode 100644 index 0000000000..ba57e27b45 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="CARATTERISTICHE DELL'ARTICOLO"/> diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml index 3d60ded7ab..3d60ded7ab 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_joystick.xml +++ b/indra/newview/skins/default/xui/it/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml index f7b2b1ab4a..13f54eabcc 100644 --- a/indra/newview/skins/default/xui/it/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_lagmeter" title="MISURATORE LAG"> <floater.string name="max_title_msg"> - Misuratore del lag + Misuratore lag </floater.string> <floater.string name="max_width_px"> 360 @@ -13,7 +13,7 @@ 90 </floater.string> <floater.string name="client_text_msg"> - Programma in locale + Client </floater.string> <floater.string name="client_frame_rate_critical_fps"> 10 @@ -22,31 +22,31 @@ 15 </floater.string> <floater.string name="client_frame_time_window_bg_msg"> - Normale, finestra sullo sfondo + Normale, finestra in background </floater.string> <floater.string name="client_frame_time_critical_msg"> - Velocità dei frame al di sotto di [CLIENT_FRAME_RATE_CRITICAL] + Frame rate del client inferiore a [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> - Velocità dei frame tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] + Frame rate del client tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> Normale </floater.string> <floater.string name="client_draw_distance_cause_msg"> - Possibile causa: Campo visivo impostato troppo alto + Causa possibile: Distanza di visualizzazione impostata su un valore troppo alto </floater.string> <floater.string name="client_texture_loading_cause_msg"> - Possibile causa: Caricamento immagini + Causa possibile: Caricamento immagini in corso </floater.string> <floater.string name="client_texture_memory_cause_msg"> - Possibile causa: Troppe immagini in memoria + Causa possibile: Troppe immagini in memoria </floater.string> <floater.string name="client_complex_objects_cause_msg"> - Possibile causa: Troppi oggetti complessi intorno + Causa possibile: Troppi oggetti complessi in una scena </floater.string> <floater.string name="network_text_msg"> - Network + Rete </floater.string> <floater.string name="network_packet_loss_critical_pct"> 10 @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + Il collegamento perde più del [NETWORK_PACKET_LOSS_CRITICAL]% dei pacchetti </floater.string> <floater.string name="network_packet_loss_warning_msg"> - La connessione sta calando tra il [NETWORK_PACKET_LOSS_WARNING]% e il [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + Il collegamento perde [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% dei pacchetti </floater.string> <floater.string name="network_performance_normal_msg"> Normale @@ -70,16 +70,16 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms + Tempo di ping del collegamento superiore a [NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_ping_warning_msg"> - Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + Tempo di ping del collegamento pari a [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_packet_loss_cause_msg"> - Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta. + Collegamento scadente oppure valore della larghezza di banda troppo alto. </floater.string> <floater.string name="network_ping_cause_msg"> - Possibile cattiva connessione o l'apertura di un programma di scambio files. + Collegamento scadente oppure problemi di app di condivisione file. </floater.string> <floater.string name="server_text_msg"> Server @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Velocità dei frame al di sotto di [SERVER_FRAME_RATE_CRITICAL] + Frame rate del simulatore inferiore a [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Velocità dei frame tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] + Frame rate del simulatore tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> Normale </floater.string> <floater.string name="server_physics_cause_msg"> - Possibile causa: troppi oggetti fisici + Causa possibile: Troppi oggetti fisici </floater.string> <floater.string name="server_scripts_cause_msg"> - Possibile causa: troppi oggetti scriptati + Causa possibile: Troppi oggetti scriptati </floater.string> <floater.string name="server_net_cause_msg"> - Possibile causa: eccessivo traffico sulla rete + Causa possibile: Troppo traffico di rete </floater.string> <floater.string name="server_agent_cause_msg"> - Possibile causa: troppi residenti in movimento nella regione + Causa possibile: Troppe persone in movimento nella regione </floater.string> <floater.string name="server_images_cause_msg"> - Possibile causa: troppe elaborazioni di immagini + Causa possibile: Troppi calcoli delle immagini </floater.string> <floater.string name="server_generic_cause_msg"> - Possibile causa: carico eccessivo del simulatore + Causa possibile: Carico eccessivo del simulatore </floater.string> <floater.string name="smaller_label"> >> @@ -126,7 +126,7 @@ <floater.string name="bigger_label"> << </floater.string> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del client"/> <text name="client"> Client </text> @@ -134,7 +134,7 @@ Normale </text> <text left="30" name="client_lag_cause" right="-10"/> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag della rete"/> <text name="network"> Rete </text> diff --git a/indra/newview/skins/default/xui/it/floater_land_holdings.xml b/indra/newview/skins/default/xui/it/floater_land_holdings.xml index 1b2f2605f7..1b2f2605f7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/it/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml index 0bd2b02323..c28df6c12e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> SCRIPT: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Rimuovi il segno di spunta per rimuovere l'esperienza corrente + </floater.string> + <floater.string name="no_experiences"> + Non hai l'autorizzazione necessaria per alcuna esperienza + </floater.string> + <floater.string name="add_experiences"> + Seleziona per aggiungere un'esperienza + </floater.string> + <floater.string name="show_experience_profile"> + Clicca per vedere il profilo dell'esperienza + </floater.string> + <floater.string name="loading"> + Caricamento in corso... + </floater.string> <button label="Ripristina" label_selected="Ripristina" name="Reset"/> <check_box initial_value="true" label="In esecuzione" left="4" name="running"/> <check_box initial_value="true" label="Mono" left="106" name="mono"/> + <check_box label="Usa le esperienze:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml index 47fe2de051..47fe2de051 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml index 5e4e4abca4..5e4e4abca4 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_map.xml +++ b/indra/newview/skins/default/xui/it/floater_map.xml diff --git a/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml new file mode 100644 index 0000000000..bff5189ea4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ANNUNCI NEL MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Caricamento in corso...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml new file mode 100644 index 0000000000..45805a3232 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Verifica annunci Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_media_browser.xml b/indra/newview/skins/default/xui/it/floater_media_browser.xml index 0a8c0f1c41..0a8c0f1c41 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/it/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/it/floater_media_settings.xml b/indra/newview/skins/default/xui/it/floater_media_settings.xml index d521502a4c..d521502a4c 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml index 63074d5a4c..63074d5a4c 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml index 02f257d466..02f257d466 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml index e8df4d2d4b..e8df4d2d4b 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml index 1237bd06a9..1237bd06a9 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_moveview.xml +++ b/indra/newview/skins/default/xui/it/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/it/floater_mute_object.xml b/indra/newview/skins/default/xui/it/floater_mute_object.xml index dd1a2b67d7..dd1a2b67d7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/it/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/it/floater_my_appearance.xml b/indra/newview/skins/default/xui/it/floater_my_appearance.xml index 39ddd6186a..39ddd6186a 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/it/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/it/floater_my_inventory.xml b/indra/newview/skins/default/xui/it/floater_my_inventory.xml index 0efd9f1c6d..0efd9f1c6d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/it/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/it/floater_object_weights.xml b/indra/newview/skins/default/xui/it/floater_object_weights.xml index fdcb732dee..fdcb732dee 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/it/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml index d8144c7cd5..0d313602b5 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_openobject.xml +++ b/indra/newview/skins/default/xui/it/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copia nell'inventario" label_selected="Copia nell'inventario" name="copy_to_inventory_button"/> - <button label="Copia ed indossa" label_selected="Copia ed indossa" name="copy_and_wear_button"/> + <text name="border_note"> + Copia nell'inventario e indossa + </text> + <button label="Aggiungi al vestiario" label_selected="Aggiungi al vestiario" name="copy_and_wear_button"/> + <button label="Sostituisci vestiario" label_selected="Sostituisci vestiario" name="copy_and_replace_button"/> + <button label="Crea solo la copia nell'inventario" label_selected="Crea solo la copia nell'inventario" name="copy_to_inventory_button"/> + <button label="Annulla" label_selected="Annulla" name="cancel_button"/> </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 index 55bb5adb1e..55bb5adb1e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/it/floater_outgoing_call.xml b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml index cdb180bacd..cdb180bacd 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml index 5122954edb..5122954edb 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml index 77be220a2a..77be220a2a 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml index 7edac3ff46..7edac3ff46 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml index 5753c8c765..ef24fc850d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_pay.xml +++ b/indra/newview/skins/default/xui/it/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Paga gruppo - </string> - <string name="payee_resident"> - Paga residente - </string> - <text left="5" name="payee_label" width="105"> - Paga: - </text> - <icon name="icon_person" tool_tip="Persona"/> - <text left="115" name="payee_name"> - Nome di test che è troppo lungo per controllare il taglio - </text> - <button label="1 L$" label_selected="1 L$" left="118" name="fastpay 1" width="80"/> - <button label="5 L$" label_selected="5 L$" left="210" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" left="118" name="fastpay 10" width="80"/> - <button label="20 L$" label_selected="20 L$" left="210" name="fastpay 20"/> - <text left="4" name="amount text"> - Oppure, scegli importo: - </text> - <line_editor left="70" name="amount" width="49"/> - <button label="Paga" label_selected="Paga" left="127" name="pay btn"/> - <button label="Annulla" label_selected="Annulla" left="210" name="cancel btn"/> + <string name="payee_group">Paga gruppo</string> + <string name="payee_resident">Paga residente</string> + <text name="paying_text">Stai pagando:</text> + <text left="115" name="payee_name">Nome di test che è troppo lungo per controllare il taglio</text> + <panel label="Cerca" name="PatternsPanel"> + <button label="Paga 1 L$" label_selected="Paga 1 L$" name="fastpay 1"/> + <button label="Paga 5 L$" label_selected="Paga 5 L$" name="fastpay 5"/> + <button label="Paga 10 L$" label_selected="Paga 10 L$" name="fastpay 10"/> + <button label="Paga 20 L$" label_selected="Paga 20 L$" name="fastpay 20"/> + </panel> + <panel label="Cerca" name="InputPanel"> + <text name="amount text">Altro importo:</text> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml index 8805f3208e..8e6fd37c2d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/it/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - Paga gruppo - </string> - <string halign="left" name="payee_resident" width="120"> - Paga residente - </string> - <icon name="icon_person" tool_tip="Persona"/> - <text left="120" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="110"> - Mediante l'oggetto: - </text> + <string halign="left" name="payee_group" width="100">Paga gruppo</string> + <string halign="left" name="payee_resident" width="120">Paga residente</string> + <text name="paying_text">Stai pagando:</text> + <text left="120" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="110">Mediante l'oggetto:</text> <icon name="icon_object" tool_tip="Oggetti"/> - <text left="120" name="object_name_text"> - Il mio oggetto con un nome veramente lungo - </text> - <button label="1 L$" label_selected="1 L$" left="125" name="fastpay 1" width="70"/> - <button label="5 L$" label_selected="5 L$" left="200" name="fastpay 5" width="70"/> - <button label="10 L$" label_selected="10 L$" left="125" name="fastpay 10" width="70"/> - <button label="20 L$" label_selected="20 L$" left="200" name="fastpay 20" width="70"/> - <text halign="left" left="5" name="amount text"> - Oppure, scegli importo: - </text> - <line_editor left="74" name="amount" width="50"/> - <button label="Paga" label_selected="Paga" name="pay btn"/> - <button label="Cancella" label_selected="Cancella" name="cancel btn"/> + <text left="120" name="object_name_text">Il mio oggetto con un nome veramente lungo</text> + <panel label="Cerca" name="PatternsPanel"> + <button label="Paga 1 L$" label_selected="Paga 1 L$" name="fastpay 1"/> + <button label="Paga 5 L$" label_selected="Paga 5 L$" name="fastpay 5"/> + <button label="Paga 10 L$" label_selected="Paga 10 L$" name="fastpay 10"/> + <button label="Paga 20 L$" label_selected="Paga 20 L$" name="fastpay 20"/> + </panel> + <panel label="Cerca" name="InputPanel"> + <text name="amount text">Altro importo:</text> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_people.xml b/indra/newview/skins/default/xui/it/floater_people.xml index 1acc3cbf19..1acc3cbf19 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_people.xml +++ b/indra/newview/skins/default/xui/it/floater_people.xml diff --git a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml index a02b3b5075..a02b3b5075 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/it/floater_picks.xml b/indra/newview/skins/default/xui/it/floater_picks.xml index dfc539da66..dfc539da66 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_picks.xml +++ b/indra/newview/skins/default/xui/it/floater_picks.xml diff --git a/indra/newview/skins/default/xui/it/floater_places.xml b/indra/newview/skins/default/xui/it/floater_places.xml index cd46cf8b59..cd46cf8b59 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_places.xml +++ b/indra/newview/skins/default/xui/it/floater_places.xml diff --git a/indra/newview/skins/default/xui/it/floater_post_process.xml b/indra/newview/skins/default/xui/it/floater_post_process.xml index 3aa8b29101..3aa8b29101 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_post_process.xml +++ b/indra/newview/skins/default/xui/it/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml index 7a1d2966ed..7a1d2966ed 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preferences.xml +++ b/indra/newview/skins/default/xui/it/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml index 86ea8064b1..86ea8064b1 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml index ed609c70fa..ed609c70fa 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml index 2172b9848b..2172b9848b 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml index 7ec229f9d3..7ec229f9d3 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/it/floater_preview_sound.xml b/indra/newview/skins/default/xui/it/floater_preview_sound.xml index 8eb9573e54..8eb9573e54 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml index 5b4054514e..5b4054514e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/it/floater_price_for_listing.xml b/indra/newview/skins/default/xui/it/floater_price_for_listing.xml index 06c838a981..06c838a981 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/it/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/it/floater_publish_classified.xml b/indra/newview/skins/default/xui/it/floater_publish_classified.xml index c371e28caa..c371e28caa 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/it/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/it/floater_region_debug_console.xml b/indra/newview/skins/default/xui/it/floater_region_debug_console.xml index 6efa10290b..6efa10290b 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/it/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/it/floater_region_info.xml b/indra/newview/skins/default/xui/it/floater_region_info.xml index dc2c24ca56..dc2c24ca56 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_region_info.xml +++ b/indra/newview/skins/default/xui/it/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml index 728d089205..f74d84fb8f 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/it/floater_report_abuse.xml @@ -76,7 +76,7 @@ <combo_box.item label="Terreno > Invasione > Oggetti o texture" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Terreno > Invasione > Particelle" name="Land__Encroachment__Particles"/> <combo_box.item label="Terreno > Invasione > Alberi/piante" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Scommesse o gioco d'azzardo" name="Wagering_gambling"/> + <combo_box.item label="Violazione regole del gioco" name="Wagering_gambling"/> <combo_box.item label="Altro" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/it/floater_script_debug.xml b/indra/newview/skins/default/xui/it/floater_script_debug.xml index 89bf80da5e..89bf80da5e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/it/floater_script_limits.xml b/indra/newview/skins/default/xui/it/floater_script_limits.xml index 2383b85bb7..2383b85bb7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/it/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/it/floater_script_preview.xml b/indra/newview/skins/default/xui/it/floater_script_preview.xml index d007774f43..d007774f43 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml index f4117d30a2..f4117d30a2 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/it/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/it/floater_script_search.xml b/indra/newview/skins/default/xui/it/floater_script_search.xml index 3d0b02877e..3d0b02877e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_script_search.xml +++ b/indra/newview/skins/default/xui/it/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/it/floater_search.xml b/indra/newview/skins/default/xui/it/floater_search.xml index ac3dc17aa3..ac3dc17aa3 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_search.xml +++ b/indra/newview/skins/default/xui/it/floater_search.xml diff --git a/indra/newview/skins/default/xui/it/floater_select_key.xml b/indra/newview/skins/default/xui/it/floater_select_key.xml index 014bc76ffb..014bc76ffb 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_select_key.xml +++ b/indra/newview/skins/default/xui/it/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/it/floater_sell_land.xml b/indra/newview/skins/default/xui/it/floater_sell_land.xml index 106ae0373c..106ae0373c 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/it/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml index 489d52d3b8..489d52d3b8 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml index 16289ac7af..d21c206f6f 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Non salvato sul computer. </string> - <button name="advanced_options_btn" tool_tip="Opzioni Avanzate"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [SIZE] KB - </text> + <button label="AGGIORNA" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - OPZIONI AVANZATE - </text> <text name="layer_type_label"> Cattura: </text> @@ -68,4 +59,10 @@ <combo_box.item label="Nessun filtro" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] px (larghezza) x [HEIGHT] px (altezza) + </text> + <text name="file_size_label"> + [SIZE] KB + </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml index 9799b48d89..9799b48d89 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/it/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/it/floater_sound_preview.xml b/indra/newview/skins/default/xui/it/floater_sound_preview.xml index 221e5e5b53..221e5e5b53 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/it/floater_spellcheck.xml b/indra/newview/skins/default/xui/it/floater_spellcheck.xml index 2a8557b0fc..2a8557b0fc 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/it/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml index c04fc249a7..c04fc249a7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml index 7516af957e..7ef13aa37f 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_stats.xml +++ b/indra/newview/skins/default/xui/it/floater_stats.xml @@ -72,7 +72,7 @@ <stat_view label="Pathfinding" name="simpathfinding"> <stat_bar label="Tempo passaggio AI" name="simsimaistepmsec"/> <stat_bar label="Passaggi silhouette saltati" name="simsimskippedsilhouettesteps"/> - <stat_bar label="Personaggi aggiornati" name="simsimpctsteppedcharacters"/> + <stat_bar label="Caratteri aggiornati" name="simsimpctsteppedcharacters"/> </stat_view> <stat_bar label="Totale dati non confermati (unacked)" name="simtotalunackedbytes"/> <stat_view label="Orario" name="simperf"> diff --git a/indra/newview/skins/default/xui/it/floater_sys_well.xml b/indra/newview/skins/default/xui/it/floater_sys_well.xml index e1c0b89902..e1c0b89902 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/it/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml index 15312a8959..15312a8959 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_telehub.xml +++ b/indra/newview/skins/default/xui/it/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml index 23da6f7588..23da6f7588 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml index 27a17868a7..27a17868a7 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml index 49b6453319..49b6453319 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index efd1ea808a..efd1ea808a 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml diff --git a/indra/newview/skins/default/xui/it/floater_top_objects.xml b/indra/newview/skins/default/xui/it/floater_top_objects.xml index d8ca7f4438..afd6a87646 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/it/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Nulla di rilevato. </floater.string> + <floater.string name="URLs"> + URL + </floater.string> + <floater.string name="memory"> + Memoria (KB) + </floater.string> <text name="title_text"> In caricamento... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Proprietario" name="owner" width="84"/> <scroll_list.columns label="Ubicazione" name="location" width="84"/> <scroll_list.columns label="Lotto" name="parcel"/> - <scroll_list.columns label="Ora" name="time" width="84"/> + <scroll_list.columns label="Data" name="time" width="84"/> <scroll_list.columns label="URL" name="URLs"/> <scroll_list.columns label="Memoria (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml index 28a2dfdda2..28a2dfdda2 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_tos.xml +++ b/indra/newview/skins/default/xui/it/floater_tos.xml diff --git a/indra/newview/skins/default/xui/it/floater_toybox.xml b/indra/newview/skins/default/xui/it/floater_toybox.xml index 269e2831d0..269e2831d0 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_toybox.xml +++ b/indra/newview/skins/default/xui/it/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/it/floater_translation_settings.xml b/indra/newview/skins/default/xui/it/floater_translation_settings.xml index a0a34da723..a0a34da723 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/it/floater_twitter.xml b/indra/newview/skins/default/xui/it/floater_twitter.xml index c903705e69..a34052a620 100644 --- a/indra/newview/skins/default/xui/it/floater_twitter.xml +++ b/indra/newview/skins/default/xui/it/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="COMPONI" name="panel_twitter_photo"/> - <panel label="ACCOUNT" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Errore - </text> - <text name="connection_loading_text"> - Caricamento... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="COMPONI" name="panel_twitter_photo"/> + <panel label="ACCOUNT" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Errore + </text> + <text name="connection_loading_text"> + Caricamento in corso... + </text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_url_entry.xml b/indra/newview/skins/default/xui/it/floater_url_entry.xml index 9ad1a0dce5..9ad1a0dce5 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/it/floater_url_entry.xml 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 77973eef1e..77973eef1e 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml index f102622f5d..f102622f5d 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/it/floater_web_content.xml b/indra/newview/skins/default/xui/it/floater_web_content.xml index 5603e85417..5603e85417 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_web_content.xml +++ b/indra/newview/skins/default/xui/it/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml index 9abc968b94..9abc968b94 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/it/floater_window_size.xml b/indra/newview/skins/default/xui/it/floater_window_size.xml index fef423aefe..fef423aefe 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_window_size.xml +++ b/indra/newview/skins/default/xui/it/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml index 8da17a4034..8da17a4034 100755..100644 --- a/indra/newview/skins/default/xui/it/floater_world_map.xml +++ b/indra/newview/skins/default/xui/it/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/it/inspect_avatar.xml b/indra/newview/skins/default/xui/it/inspect_avatar.xml index 6f52aaef74..6f52aaef74 100755..100644 --- a/indra/newview/skins/default/xui/it/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/it/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/it/inspect_group.xml b/indra/newview/skins/default/xui/it/inspect_group.xml index 2416f4bb12..2416f4bb12 100755..100644 --- a/indra/newview/skins/default/xui/it/inspect_group.xml +++ b/indra/newview/skins/default/xui/it/inspect_group.xml diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml index d8ab10cfda..d8ab10cfda 100755..100644 --- a/indra/newview/skins/default/xui/it/inspect_object.xml +++ b/indra/newview/skins/default/xui/it/inspect_object.xml diff --git a/indra/newview/skins/default/xui/it/inspect_remote_object.xml b/indra/newview/skins/default/xui/it/inspect_remote_object.xml index b2d96ad757..b2d96ad757 100755..100644 --- a/indra/newview/skins/default/xui/it/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/it/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml index 5f448fa828..5f448fa828 100755..100644 --- a/indra/newview/skins/default/xui/it/language_settings.xml +++ b/indra/newview/skins/default/xui/it/language_settings.xml diff --git a/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml index 46abd7deed..46abd7deed 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml index d4ce25e6a5..d4ce25e6a5 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml index b28137262f..1539fbafa1 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Il mio aspetto" name="Change Outfit"/> <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/> <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> + <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml index 215eb836c8..215eb836c8 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml index a2b864b3e1..a2b864b3e1 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml 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 3666571065..0c9663fd4c 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Il mio aspetto" name="Chenge Outfit"/> <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/> <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> + <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml index 699490c8f1..699490c8f1 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/it/menu_cof_body_part.xml b/indra/newview/skins/default/xui/it/menu_cof_body_part.xml index 1e3658ef45..1e3658ef45 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/it/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/it/menu_cof_clothing.xml b/indra/newview/skins/default/xui/it/menu_cof_clothing.xml index 1e16ce8ed1..1e16ce8ed1 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/it/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml index 984e4a1611..984e4a1611 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_edit.xml b/indra/newview/skins/default/xui/it/menu_edit.xml index ffb20a02e9..ffb20a02e9 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_edit.xml +++ b/indra/newview/skins/default/xui/it/menu_edit.xml diff --git a/indra/newview/skins/default/xui/it/menu_favorites.xml b/indra/newview/skins/default/xui/it/menu_favorites.xml index 7813ef44b5..7813ef44b5 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_favorites.xml +++ b/indra/newview/skins/default/xui/it/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml index 7cfcc6287e..7cfcc6287e 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_group_plus.xml b/indra/newview/skins/default/xui/it/menu_group_plus.xml index 3b76fb94a9..3b76fb94a9 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/it/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml index 48f6691fd8..48f6691fd8 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml index f78ed8489f..f78ed8489f 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml index baa4e671b0..baa4e671b0 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml index 2eacbb09ad..2eacbb09ad 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml index 1f10734c4a..1f10734c4a 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml index 4740c9bf67..4740c9bf67 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml index 4f62ccaa9c..4f62ccaa9c 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml index 471640eff5..471640eff5 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index c8042f4253..2cd0d2c078 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Crea annuncio" name="Marketplace Create Listing"/> + <menu_item_call label="Associa annuncio" name="Marketplace Associate Listing"/> + <menu_item_call label="Visualizza (aggiorna) annuncio" name="Marketplace Get Listing"/> + <menu_item_call label="Controlla che non ci siano errori" name="Marketplace Check Listing"/> + <menu_item_call label="Modifica annuncio" name="Marketplace Edit Listing"/> + <menu_item_call label="Elenca" name="Marketplace List"/> + <menu_item_call label="Rimuovi annuncio" name="Marketplace Unlist"/> + <menu_item_call label="Attiva" name="Marketplace Activate"/> + <menu_item_call label="Disattiva" name="Marketplace Deactivate"/> <menu_item_call label="Condividi" name="Share"/> <menu_item_call label="Compra" name="Task Buy"/> <menu_item_call label="Apri" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Aggiungi" name="Wearable Add"/> <menu_item_call label="Togli" name="Take Off"/> <menu_item_call label="Copia nella casella venditore in uscita" name="Merchant Copy"/> - <menu_item_call label="Invia a Marketplace" name="Marketplace Send"/> + <menu_item_call label="Copia negli annunci Marketplace" name="Marketplace Copy"/> + <menu_item_call label="Sposta negli annunci Marketplace" name="Marketplace Move"/> <menu_item_call label="--nessuna opzione--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_inventory_add.xml b/indra/newview/skins/default/xui/it/menu_inventory_add.xml index 62da61cd6b..62da61cd6b 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml index 3d64e4da4e..403f5da5fe 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Mostra prima i più recenti" name="sort_by_recent"/> <menu_item_check label="Ordina le cartelle sempre in base al nome" name="sort_folders_by_name"/> <menu_item_check label="Ordina cartelle di sistema all'inizio" name="sort_system_folders_to_top"/> - <menu_item_call label="Mostra filtri" name="show_filters"/> + <menu_item_call label="Mostra filtri..." name="show_filters"/> <menu_item_call label="Ripristina filtri" name="reset_filters"/> <menu_item_call label="Chiudi tutte le cartelle" name="close_folders"/> <menu_item_call label="Svuota oggetti smarriti" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/it/menu_land.xml b/indra/newview/skins/default/xui/it/menu_land.xml index 816849a7b5..816849a7b5 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_land.xml +++ b/indra/newview/skins/default/xui/it/menu_land.xml diff --git a/indra/newview/skins/default/xui/it/menu_landmark.xml b/indra/newview/skins/default/xui/it/menu_landmark.xml index b3cddab783..b3cddab783 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_landmark.xml +++ b/indra/newview/skins/default/xui/it/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 126089aa6a..126089aa6a 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml diff --git a/indra/newview/skins/default/xui/it/menu_marketplace_view.xml b/indra/newview/skins/default/xui/it/menu_marketplace_view.xml new file mode 100644 index 0000000000..63f0b7fc50 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordina per quantità in magazzino (da bassa ad alta)" name="sort_by_stock_amount"/> + <menu_item_check label="Mostra solo cartelle annunci" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_media_ctrl.xml b/indra/newview/skins/default/xui/it/menu_media_ctrl.xml index aa9e583f8e..aa9e583f8e 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/it/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/it/menu_mini_map.xml b/indra/newview/skins/default/xui/it/menu_mini_map.xml index 561b80e046..561b80e046 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/it/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml index 5012e6450f..5012e6450f 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/it/menu_navbar.xml b/indra/newview/skins/default/xui/it/menu_navbar.xml index e42d913a6f..e42d913a6f 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_navbar.xml +++ b/indra/newview/skins/default/xui/it/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/it/menu_nearby_chat.xml b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml index 719a6d3261..719a6d3261 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/it/menu_notification_well_button.xml b/indra/newview/skins/default/xui/it/menu_notification_well_button.xml index 8c82e30f0e..8c82e30f0e 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/it/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml index 537cc2dd8e..537cc2dd8e 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_object.xml +++ b/indra/newview/skins/default/xui/it/menu_object.xml diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml index 9623775af4..9623775af4 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml index 3ac0c5ce69..3ac0c5ce69 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_outfit_tab.xml b/indra/newview/skins/default/xui/it/menu_outfit_tab.xml index 8166cf20ed..8166cf20ed 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/it/menu_outfit_tab.xml 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 1b057c4077..1b057c4077 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/it/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml index 3a799f44eb..3a799f44eb 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_groups.xml b/indra/newview/skins/default/xui/it/menu_people_groups.xml index 8ca7537ee0..8ca7537ee0 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/it/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml index d31ddaf1aa..d31ddaf1aa 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml index 1c09b1cfe2..1c09b1cfe2 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml index b9ce70167f..b9ce70167f 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml index 2b5c235706..2b5c235706 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml index 7fccd1621a..7fccd1621a 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/it/menu_picks.xml b/indra/newview/skins/default/xui/it/menu_picks.xml index 000d219ed0..000d219ed0 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_picks.xml +++ b/indra/newview/skins/default/xui/it/menu_picks.xml diff --git a/indra/newview/skins/default/xui/it/menu_picks_plus.xml b/indra/newview/skins/default/xui/it/menu_picks_plus.xml index 7fbd5abd57..7fbd5abd57 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/it/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/it/menu_place.xml b/indra/newview/skins/default/xui/it/menu_place.xml index 5381a4effa..5381a4effa 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_place.xml +++ b/indra/newview/skins/default/xui/it/menu_place.xml diff --git a/indra/newview/skins/default/xui/it/menu_place_add_button.xml b/indra/newview/skins/default/xui/it/menu_place_add_button.xml index 0e783c0000..0e783c0000 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/it/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml index 23757d47e0..23757d47e0 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml index a458b1a768..a458b1a768 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/it/menu_profile_overflow.xml b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml index 56b695c597..56b695c597 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/it/menu_save_outfit.xml b/indra/newview/skins/default/xui/it/menu_save_outfit.xml index 4882a8ac64..4882a8ac64 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/it/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/it/menu_script_chiclet.xml b/indra/newview/skins/default/xui/it/menu_script_chiclet.xml index 604f754ba8..604f754ba8 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/it/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/it/menu_slurl.xml b/indra/newview/skins/default/xui/it/menu_slurl.xml index be83133efc..be83133efc 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_slurl.xml +++ b/indra/newview/skins/default/xui/it/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml index 409a62c31b..409a62c31b 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml index 31236895fa..31236895fa 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml index c221f141a6..c221f141a6 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/it/menu_text_editor.xml b/indra/newview/skins/default/xui/it/menu_text_editor.xml index 5b61da914e..5b61da914e 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/it/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/it/menu_toolbars.xml b/indra/newview/skins/default/xui/it/menu_toolbars.xml index 604ca763d1..604ca763d1 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/it/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/it/menu_topinfobar.xml b/indra/newview/skins/default/xui/it/menu_topinfobar.xml index 0beb9314de..0beb9314de 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/it/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml index e5c20fb9e9..e5c20fb9e9 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_experience.xml b/indra/newview/skins/default/xui/it/menu_url_experience.xml new file mode 100644 index 0000000000..d6ea3f352b --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_group.xml b/indra/newview/skins/default/xui/it/menu_url_group.xml index d9a792ebdf..d9a792ebdf 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_group.xml +++ b/indra/newview/skins/default/xui/it/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_http.xml b/indra/newview/skins/default/xui/it/menu_url_http.xml index e0153d9169..e0153d9169 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_http.xml +++ b/indra/newview/skins/default/xui/it/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_inventory.xml b/indra/newview/skins/default/xui/it/menu_url_inventory.xml index a45a6bbc10..a45a6bbc10 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_map.xml b/indra/newview/skins/default/xui/it/menu_url_map.xml index cb7935b3ed..cb7935b3ed 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_map.xml +++ b/indra/newview/skins/default/xui/it/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml index 116b652172..116b652172 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_parcel.xml b/indra/newview/skins/default/xui/it/menu_url_parcel.xml index a032c33585..a032c33585 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/it/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_slapp.xml b/indra/newview/skins/default/xui/it/menu_url_slapp.xml index b368aa9141..b368aa9141 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/it/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_slurl.xml b/indra/newview/skins/default/xui/it/menu_url_slurl.xml index 355c7dbed9..355c7dbed9 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/it/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/it/menu_url_teleport.xml b/indra/newview/skins/default/xui/it/menu_url_teleport.xml index c129e61f25..c129e61f25 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/it/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index d25e11e7a4..18ddad5ee8 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Nuova finestra inventario" name="NewInventoryWindow"/> <menu_item_call label="Luoghi..." name="Places"/> <menu_item_call label="Preferiti..." name="Picks"/> + <menu_item_call label="Esperienze..." name="Experiences"/> <menu_item_call label="Controlli fotocamera..." name="Camera Controls"/> <menu label="Spostamento" name="Movement"> <menu_item_call label="Siedi" name="Sit Down Here"/> <menu_item_check label="Vola" name="Fly"/> <menu_item_check label="Corri sempre" name="Always Run"/> <menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/> - <menu_item_call label="Cammina / corri / vola..." name="Walk / run / fly"/> + <menu_item_call label="Cammina / corri / vola..." name="WalkRunFly"/> </menu> <menu label="Stato" name="Status"> <menu_item_check label="Assente" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="Acquista L$..." name="Buy and Sell L$"/> <menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/> + <menu_item_call label="Annunci Marketplace..." name="MarketplaceListings"/> <menu_item_call label="Dashboard dell'account..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/> </menu_item_call> @@ -48,7 +50,7 @@ <menu_item_check label="Amici" name="My Friends"/> <menu_item_check label="Gruppi" name="My Groups"/> <menu_item_check label="Persone vicine" name="Active Speakers"/> - <menu_item_call label="Blocca lista" name="Block List"/> + <menu_item_check label="Blocca lista" name="Block List"/> <menu_item_check label="Non disturbare" name="Do Not Disturb"/> </menu> <menu label="Mondo" name="World"> @@ -62,7 +64,7 @@ <menu_item_call label="Istantanea" name="Take Snapshot"/> <menu_item_call label="Profilo del luogo" name="Place Profile"/> <menu_item_call label="Informazioni sul terreno" name="About Land"/> - <menu_item_call label="Regione/proprietà immobiliare" name="Region/Estate"/> + <menu_item_call label="Regione/proprietà immobiliare" name="RegionEstate"/> <menu_item_call label="Terreni posseduti..." name="My Land"/> <menu_item_call label="Acquista questo terreno" name="Buy Land"/> <menu label="Mostra" name="LandShow"> @@ -249,6 +251,7 @@ <menu_item_check label="Console texture" name="Texture Console"/> <menu_item_check label="Console di Debug" name="Debug Console"/> <menu_item_call label="Console notifiche" name="Notifications"/> + <menu_item_check label="Console di debug regione" name="Region Debug Console"/> <menu_item_check label="Timer veloci" name="Fast Timers"/> <menu_item_check label="Memoria" name="Memory"/> <menu_item_check label="Statistiche scena" name="Scene Statistics"/> @@ -324,7 +327,7 @@ <menu label="Rete" name="Network"> <menu_item_check label="Metti in pausa" name="AgentPause"/> <menu_item_call label="Lascia un pacchetto" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mondo" name="DevelopWorld"> <menu_item_check label="Esclusione al sole della simulazione" name="Sim Sun Override"/> <menu_item_check label="Clima fisso" name="Fixed Weather"/> 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 c9a02d8a86..c9a02d8a86 100755..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 diff --git a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml index de25f88aca..de25f88aca 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml index 4a5366091f..4a5366091f 100755..100644 --- a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/it/mime_types.xml b/indra/newview/skins/default/xui/it/mime_types.xml index 5eda7a5752..df119263b7 100755..100644 --- a/indra/newview/skins/default/xui/it/mime_types.xml +++ b/indra/newview/skins/default/xui/it/mime_types.xml @@ -24,10 +24,10 @@ </widgetset> <widgetset name="none"> <label name="none_label"> - Senza Contenuti + Nessun contenuto </label> <tooltip name="none_tooltip"> - Nessun video qui + Nessun contenuto multimediale qui </tooltip> </widgetset> <widgetset name="image"> diff --git a/indra/newview/skins/default/xui/it/mime_types_linux.xml b/indra/newview/skins/default/xui/it/mime_types_linux.xml index 3bc30b507a..1ed1fd6b1d 100755..100644 --- a/indra/newview/skins/default/xui/it/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/it/mime_types_linux.xml @@ -44,6 +44,14 @@ Riproduci l'audio di questo luogo </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Nessun contenuto + </label> + <tooltip name="none_tooltip"> + Nessun contenuto multimediale qui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Streaming in tempo reale diff --git a/indra/newview/skins/default/xui/it/mime_types_mac.xml b/indra/newview/skins/default/xui/it/mime_types_mac.xml index 3bc30b507a..1ed1fd6b1d 100755..100644 --- a/indra/newview/skins/default/xui/it/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/it/mime_types_mac.xml @@ -44,6 +44,14 @@ Riproduci l'audio di questo luogo </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Nessun contenuto + </label> + <tooltip name="none_tooltip"> + Nessun contenuto multimediale qui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Streaming in tempo reale diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 11211e01fe..61131b09c3 100755..100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -73,6 +73,10 @@ Dettagli errore: La notifica denominata '[_NAME]' non è stata trovata [MESSAGE] <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Il programma [APP_NAME] ha riscontrato un'errore durante il tentativo di aggiornamento. [http://get.secondlife.com Scarica l'ultima versione] del Viewer. <usetemplate name="okbutton" yestext="OK"/> @@ -125,6 +129,88 @@ Nessuna cartella è stata inviata a Marketplace, a causa di un errore di sistema L'inizializzazione con il Marketplace non ha avuto successo a causa di un errore di sistema o di rete. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Impossibile copiare o spostare la cartella di magazzino a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Impossibile copiare o spostare gli annunci Marketplace a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transazione in Marketplace non è riuscita a causa dell'errore seguente: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Non siamo in grado di creare un annuncio per questo prodotto o di attivare la cartella di versione. Di solito la causa è la mancanza di informazioni nel modulo di descrizione dell'annuncio, ma potrebbero esserci errori nella struttura delle cartelle. Modifica l'annuncio oppure verifica che non ci siano problemi legati alla cartella dell'annuncio. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Aggiunta annuncio a Marketplace non riuscita a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + L'attivazione di questa cartella di versione non è riuscita a causa dell'errore: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Questa azione cambierà il contenuto attivo di questo annuncio. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di modificare un annuncio attivo su Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Gli articoli trascinati nella finestra degli annunci di Marketplace vengono spostati dalle posizioni iniziali e non vengono copiati. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di spostare un articolo dall'inventario a Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Se sposti o elimini la cartella dell'annuncio, l'annuncio su Marketplace verrà eliminato. Per mantenere l'annuncio su Marketplace, sposta o elimina i contenuti della cartella di versione da modificare. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di spostare o eliminare un annuncio da Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Non hai l'autorizzazione necessaria per copiare uno o più di questi articoli su Marketplace. Puoi spostarli o lasciarli dove si trovano. + <usetemplate canceltext="Annulla" ignoretext="Conferma prima di copiare nel Marketplace una selezione che contiene articoli per i quali non è consentita la copia" name="yesnocancelbuttons" notext="Non spostare gli articoli" yestext="Sposta articoli"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Questa azione causa la rimozione dell'annuncio. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di rimuovere un annuncio attivo da Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Questa azione disattiverà la cartella di versione per l'annuncio corrente. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di disattivare la cartella di versione di un annuncio su Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Impossibile aggiornare l'annuncio. +[[URL] Fai clic qui] per modificarlo in Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Non puoi indossare vestiario o parti del corpo che sono nella cartella degli annunci di Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID annuncio non valido. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Ci sono svariate cartelle di versione oppure nessuna cartella di versione in questo annuncio. In seguito dovrai selezionarne e attivarne una separatamente. + <usetemplate ignoretext="Avvisa riguardo all'attivazione della cartella di versione quando creo un annuncio con varie cartelle di versione" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Abbiamo diviso gli articoli in magazzino di tipo diverso in cartelle di magazzino separate. In questo modo la tua cartella è ordinata per la pubblicazione nell'annuncio. + <usetemplate ignoretext="Avverti quando la cartella di magazzino viene suddivisa prima della pubblicazione dell'annuncio" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + L'annuncio è stato rimosso perché il magazzino è esaurito. Aggiungi altre unità alla cartella di magazzino prima di pubblicare nuovamente l'annuncio. + <usetemplate ignoretext="Avverti quando un annuncio viene rimosso perché la cartella di magazzino è vuota" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi. </notification> @@ -466,6 +552,10 @@ Nota: questa operazione cancellerà la cache. Salva le modifiche? <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> </notification> + <notification name="DeleteNotecard"> + Vuoi eliminare il biglietto? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Il salvataggio della Gesture è fallito. La gesture ha troppi passi. @@ -572,6 +662,9 @@ La qualità grafica può essere aumentata in Preferenze > Grafica. <notification name="RegionNoTerraforming"> La regione [REGION] non consente di terraformare. </notification> + <notification name="ParcelNoTerraforming"> + Non ti è consentito terraformare il lotto [PARCEL]. + </notification> <notification name="CannotCopyWarning"> Non hai l'autorizzazione a copiare i seguenti oggetti: [ITEMS] @@ -1829,6 +1922,30 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]? <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/> </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateAllowedExperienceAdd"> + Aggiungi all'elenco di elementi consentiti per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateAllowedExperienceRemove"> + Rimuovi dall'elenco di elementi consentiti per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateBlockedExperienceAdd"> + Aggiungi all'elenco di elementi bloccati per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateBlockedExperienceRemove"> + Rimuovi dall'elenco di elementi bloccati per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateTrustedExperienceAdd"> + Aggiungi all'elenco di elementi chiave per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> + <notification label="Seleziona proprietà immobiliare" name="EstateTrustedExperienceRemove"> + Rimuovi dall'elenco di elementi chiave per questa proprietà immobiliare oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà immobiliari" yestext="Questa proprietà immobiliare"/> + </notification> <notification label="Conferma espulsione" name="EstateKickUser"> Espelli [EVIL_USER] da questa proprietà? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -1841,6 +1958,9 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. La regione che cerchi di visitare include contenuti che non corripondono al livello selezionato nelle preferenze. Per cambiare le preferenze seleziona Io > Preferenze > Generale. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La regione che cerchi di visitare include contenuti [REGIONMATURITY] accessibili solo ad adulti. <url name="url"> @@ -1903,6 +2023,10 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. Si è verificato un problema con il teleport a causa di un errore di sincronizzazione delle preferenze con il server. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Impossibile entrare nella regione. '[REGION_NAME]' è una regione per giochi di abilità e per entrare è necessario soddisfare alcuni requisiti. Per dettagli, leggi le [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life domande frequenti sui giochi di abilità]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> Non riceverai più notifiche se stai per visitare una regione con contenuti [RATING]. In futuro potrai modificare le preferenze relative ai contenuti selezionando Io > Preferenze > Generale nella barra del menu. <usetemplate name="okbutton" yestext="OK"/> @@ -2126,6 +2250,10 @@ Trasferisci gli elementi nell'inventario? <ignore name="ignore" text="Ho impostato l'azione Paga oggetto costruendo un oggetto senza uno script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Conferma che desideri pagare [AMOUNT] L$ a [TARGET]. + <usetemplate ignoretext="Conferma prima di pagare (somme superiori a 200 L$)" name="okcancelignore" notext="Annulla" yestext="Paga"/> + </notification> <notification name="OpenObjectCannotCopy"> Non ci sono elementi in questo oggetto che tu possa copiare. </notification> @@ -2211,6 +2339,9 @@ Vuoi sostituirlo con l'oggetto selezionato? <button ignore="Never Replace" name="No" text="Annulla"/> </form> </notification> + <notification name="TooManyWearables"> + Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate > Mostra impostazioni di debug > WearFolderLimit. + </notification> <notification label="Avviso modalità Non disturbare" name="DoNotDisturbModePay"> Hai attivato la modalità Non disturbare. Non riceverai alcun oggetto offerto in cambio di questo pagamento. @@ -2662,9 +2793,6 @@ Riprova tra qualche istante. <notification name="NoValidCircuit"> Nessun codice circuito valido. </notification> - <notification name="NoValidTimestamp"> - Nessuna data/timestamp valido. - </notification> <notification name="NoPendingConnection"> Impossibile creare la connessione in sospeso. </notification> @@ -2819,7 +2947,7 @@ Se rimani qui verrai scollegato da Second Life. [MESSAGE] -Dall'oggetto: <nolink>[OBJECTNAME]</nolink>, proprietario: [NAME]? +Dall'oggetto: <nolink>[OBJECTNAME]</nolink>, proprietario: [NAME] <form name="form"> <button name="Gotopage" text="Caricare"/> <button name="Cancel" text="Annulla"/> @@ -2845,6 +2973,72 @@ OK? <button name="Mute" text="Blocca"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Impossibile acquisire una nuova esperienza: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Una modifica apportata al gruppo esperienza è stata ignorata perché il proprietario non è un membro del gruppo selezionato. + </notification> + <notification name="UneditableExperienceProfileMessage"> + Il campo non modificabile '[field]' è stato ignorato durante l'aggiornamento del profilo esperienza. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Ignorate le modifiche apportate al campo '[field]', che può essere impostato solo dal proprietario dell'esperienza. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Non puoi impostare la categoria di accesso di un'esperienza a un livello maggiore di quello del proprietario. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + I termini seguenti hanno impedito l'aggiornamento del nome o della descrizione del profilo dell'esperienza: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Sei stato teleportato dalla regione [region_name] per aver rimosso l'esperienza secondlife:///app/experience/[public_id]/profile e non puoi più accedere alla regione. + <form name="form"> + <ignore name="ignore" text="Espulso dalla regione per aver rimosso un'esperienza"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + Ti è stato consentito l'accesso alla regione [region_name] grazie alla partecipazione all'esperienza chiave secondlife:///app/experience/[public_id]/profile. Se rimuovi l'esperienza, sarai passibile di espulsione dalla regione. + <form name="form"> + <ignore name="ignore" text="Può accedere a una regione grazie a un'esperienza"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + Non puoi accedere a questa destinazione. Potresti accedere alla regione accettando un'esperienza nell'elenco seguente: + +[EXPERIENCE_LIST] + +Potrebbero essere disponibili altre esperienze chiave. + </notification> + <notification name="ExperienceEvent"> + L'esperienza secondlife:///app/experience/[public_id]/profile ha consentito un oggetto la seguente azione: [EventType]. + Proprietario: secondlife:///app/agent/[OwnerID]/inspect + Nome oggetto: [ObjectName] + Nome lotto: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + L'esperienza secondlife:///app/experience/[public_id]/profile ha consentito un elemento collegato la seguente azione: [EventType]. + Proprietario: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + '<nolink>[OBJECTNAME]</nolink>', un oggetto posseduto da '[NAME]', richiede la tua partecipazione all'esperienza [GRID_WIDE]: + +[EXPERIENCE] + +Una volta concessa l'autorizzazione, questo messaggio non verrà più visualizzato per questa esperienza, a meno che l'autorizzazione non venga revocata nel profilo dell'esperienza. + +Gli script associati a questa esperienza potranno fare quanto segue nelle regioni in cui è attiva l'esperienza: + +[QUESTIONS]OK? + <form name="form"> + <button name="BlockExperience" text="Blocca esperienza"/> + <button name="Mute" text="Blocca oggetto"/> + <button name="Yes" text="Sì"/> + <button name="No" text="No"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Avviso: L'oggetto '<nolink>[OBJECTNAME]</nolink>' ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l'accesso, potrà rimuovere fondi dal tuo account in qualunque momento e anche svuotare completamente l'account, per un periodo illimitato e senza ulteriori avvisi. @@ -3164,6 +3358,10 @@ Hai caricato una texture [RESOLUTION] completata per '[BODYREGION]' do ( In esistenza da [EXISTENCE] secondi) Hai aggiornato localmente una texture [RESOLUTION] completata per '[BODYREGION]' dopo [TIME] secondi. </notification> + <notification name="CannotUploadTexture"> + Impossibile caricare la texture. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Non possiamo mostrare un'anteprima di questa texture perché non ne è consentita la copia e/o il trasferimento. <usetemplate ignoretext="Avvisami se la modalità Anteprima dal vivo non è disponibile per texture per cui non è consentita la copia e/o il trasferimento." name="okignore" yestext="OK"/> @@ -3739,9 +3937,11 @@ Riprova tra un minuto. </notification> <notification name="TeleportedByAttachment"> Sei stato teletrasportato da un elemento collegato a [ITEM_ID] + <usetemplate ignoretext="Teleport: sei stato teleportato da un elemento accessorio" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Sei stato teleportato dall'oggetto '[OBJECT_NAME]' sul lotto '[PARCEL_NAME]' + <usetemplate ignoretext="Teleport: sei stato teleportato su un lotto da un oggetto" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sei stato teleportato dall'oggetto '[OBJECT_NAME]' di proprietà di [OWNER_ID] @@ -4073,7 +4273,7 @@ Prova a selezionare un pezzo di terreno più piccolo. <usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Si è verificato un problema nel salvare i diritti predefiniti per il motivo seguente: [REASON]. Riprova più tardi. + Si è verificato un problema nel salvare le autorizzazioni predefinite dell'oggetto: [REASON]. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/it/panel_active_object_row.xml b/indra/newview/skins/default/xui/it/panel_active_object_row.xml index b8cca6f01a..b8cca6f01a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/it/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml index be001d09f8..be001d09f8 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml index cfceb5b982..cfceb5b982 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml index 7ca2d3b57b..7ca2d3b57b 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml index b44c4c29e6..b44c4c29e6 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml index 8fc23d34f1..8fc23d34f1 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml index ff576c7dd2..ff576c7dd2 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml index 66bf3f140f..66bf3f140f 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/it/panel_classified_info.xml b/indra/newview/skins/default/xui/it/panel_classified_info.xml index a7cf51c4b9..a7cf51c4b9 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/it/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml index e9d9795b3a..e9d9795b3a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml index 7667e95663..7667e95663 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_cof_wearables.xml b/indra/newview/skins/default/xui/it/panel_cof_wearables.xml index d914a5740f..d914a5740f 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/it/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml index cbcaa0689a..cbcaa0689a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml index eb3af5f2a5..eb3af5f2a5 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml index 6daa0cf8fd..6daa0cf8fd 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_classified.xml b/indra/newview/skins/default/xui/it/panel_edit_classified.xml index ad827696ff..ad827696ff 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_eyes.xml b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml index 9f31bb7dc7..9f31bb7dc7 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_gloves.xml b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml index 366a82f7aa..366a82f7aa 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_hair.xml b/indra/newview/skins/default/xui/it/panel_edit_hair.xml index 50e2e7e4b3..50e2e7e4b3 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_jacket.xml b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml index 337720d068..337720d068 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_pants.xml b/indra/newview/skins/default/xui/it/panel_edit_pants.xml index 21b5b7c026..21b5b7c026 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_physics.xml b/indra/newview/skins/default/xui/it/panel_edit_physics.xml index 669a2c0eab..669a2c0eab 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_pick.xml b/indra/newview/skins/default/xui/it/panel_edit_pick.xml index 145b8cf4e3..145b8cf4e3 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_profile.xml b/indra/newview/skins/default/xui/it/panel_edit_profile.xml index 545e96a8f1..545e96a8f1 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml index fd6a7af69c..fd6a7af69c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_shirt.xml b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml index 1777c0147f..1777c0147f 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_shoes.xml b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml index c79408b94a..c79408b94a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml index 466eff2708..466eff2708 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_skirt.xml b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml index 87cdd16676..87cdd16676 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_socks.xml b/indra/newview/skins/default/xui/it/panel_edit_socks.xml index f61a72ed76..f61a72ed76 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml index d76fb62c53..d76fb62c53 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_underpants.xml b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml index 924344e3c0..924344e3c0 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml index 2f22c03294..2f22c03294 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml index e54dc26d05..e54dc26d05 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/it/panel_experience_info.xml b/indra/newview/skins/default/xui/it/panel_experience_info.xml new file mode 100644 index 0000000000..706f139bcc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Profilo esperienza"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Luogo: + </text> + <text name="LocationTextText"> + in qualche posto + </text> + <button label="Teleport" name="teleport_btn"/> + <button label="Mappa" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Negozio Marketplace: + </text> + <text name="LocationTextText"> + in qualche posto + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Categoria: + </text> + <text name="ContentRatingText"> + Adulti + </text> + <text name="Owner"> + Proprietario: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Modifica" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/it/panel_experience_list_editor.xml new file mode 100644 index 0000000000..46d39eabdd --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + caricamento in corso... + </panel.string> + <panel.string name="panel_allowed"> + Esperienze consentite: + </panel.string> + <panel.string name="panel_blocked"> + Esperienze bloccate: + </panel.string> + <panel.string name="panel_trusted"> + Esperienze chiave: + </panel.string> + <panel.string name="no_results"> + (vuoto) + </panel.string> + <text name="text_name"> + Elenco esperienze + </text> + <scroll_list name="experience_list"> + <columns label="Nome" name="experience_name"/> + </scroll_list> + <button label="Aggiungi..." name="btn_add"/> + <button label="Rimuovi" name="btn_remove"/> + <button label="Profilo..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_experience_list_item.xml b/indra/newview/skins/default/xui/it/panel_experience_list_item.xml new file mode 100644 index 0000000000..f99c71c22e --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Nome fittizio + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_experience_log.xml b/indra/newview/skins/default/xui/it/panel_experience_log.xml new file mode 100644 index 0000000000..a03e8410b1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Nessun evento."/> + <string name="loading" value="caricamento in corso..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Giorno/ora" name="time"/> + <columns label="Evento" name="event"/> + <columns label="Esperienza" name="experience_name"/> + <columns label="Oggetto" name="object_name"/> + </scroll_list> + <button label="Notifica" name="btn_notify"/> + <button label="Profilo" name="btn_profile_xp"/> + <button label="Segnalazione" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Notifica tutti gli eventi Giorni" name="notify_all"/> + <button label="Cancella" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_experience_search.xml b/indra/newview/skins/default/xui/it/panel_experience_search.xml new file mode 100644 index 0000000000..124b060f20 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + '[TEXT]' non trovato + </string> + <string name="no_results"> + Nessun risultato + </string> + <string name="searching"> + Ricerca in corso... + </string> + <string name="loading"> + Caricamento in corso... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Vai" name="find"/> + <icons_combo_box label="Moderato" name="maturity"> + <icons_combo_box.item label="Adulti" name="Adult" value="42"/> + <icons_combo_box.item label="Moderato" name="Mature" value="21"/> + <icons_combo_box.item label="Generale" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Nome" name="experience_name"/> + <columns label="Proprietario" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annulla" name="cancel_btn"/> + <button label="Visualizza profilo" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_experiences.xml b/indra/newview/skins/default/xui/it/panel_experiences.xml new file mode 100644 index 0000000000..a305860f8f --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Caricamento esperienze in corso..."/> + <string name="no_experiences" value="Nessuna esperienza."/> + <string name="acquire" value="Acquisisci un'esperienza"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_facebook_friends.xml b/indra/newview/skins/default/xui/it/panel_facebook_friends.xml index 917dbec4d9..c1c0489f88 100644 --- a/indra/newview/skins/default/xui/it/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/it/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Attualmente non hai amici su Facebook che sono anche residenti in Second Life. Invita i tuoi amici di Facebook a partecipare a Second Life!"/> - <string name="facebook_friends_no_connected" value="Attualmente non sei in collegamento con Facebook. Accedi alla scheda Account per collegarti e attivare questa funzionalità."/> + <string name="facebook_friends_no_connected" value="Attualmente non sei in collegamento con Facebook. Accedi alla scheda Stato per collegarti e attivare questa funzionalità."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="Amici SL"/> <accordion_tab name="tab_suggested_friends" title="Aggiungi queste persone come amici SL"/> diff --git a/indra/newview/skins/default/xui/it/panel_facebook_photo.xml b/indra/newview/skins/default/xui/it/panel_facebook_photo.xml index 20ec7f0a70..044b8b6164 100644 --- a/indra/newview/skins/default/xui/it/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/it/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> - <combo_box.item label="Finestra attuale" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtri immagini"> - <combo_box.item label="Nessun filtro" name="NoFilter"/> - </combo_box> - <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> - <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> - <text name="caption_label"> - Commento (facoltativo): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Pubblica" name="post_photo_btn"/> - <button label="Annulla" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> + <combo_box.item label="Finestra attuale" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtri immagini"> + <combo_box.item label="Nessun filtro" name="NoFilter"/> + </combo_box> + <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> + <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> + <text name="caption_label"> + Commento (facoltativo): + </text> + <button label="Post" name="post_photo_btn"/> + <button label="Annulla" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_facebook_place.xml b/indra/newview/skins/default/xui/it/panel_facebook_place.xml index 297f0caccc..3f1365f12c 100644 --- a/indra/newview/skins/default/xui/it/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/it/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Racconta dove ti trovi: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Pubblica" name="post_place_btn"/> - <button label="Annulla" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Racconta dove ti trovi: + </text> + <check_box initial_value="false" label="Includi vista dall'alto del luogo" name="add_place_view_cb"/> + <button label="Post" name="post_place_btn"/> + <button label="Annulla" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_facebook_status.xml b/indra/newview/skins/default/xui/it/panel_facebook_status.xml index d373fb0717..9b5171043a 100644 --- a/indra/newview/skins/default/xui/it/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/it/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - A cosa stai pensando? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Pubblica" name="post_status_btn"/> - <button label="Annulla" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Sei in collegamento con Facebook come:"/> + <string name="facebook_disconnected" value="Non in collegamento con Facebook"/> + <text name="account_caption_label"> + Non in collegamento con Facebook. + </text> + <panel name="panel_buttons"> + <button label="Collegamento..." name="connect_btn"/> + <button label="Interrompi collegamento" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Come pubblicare su Facebook] + </text> + </panel> + <text name="status_caption_label"> + A cosa stai pensando? + </text> + <button label="Post" name="post_status_btn"/> + <button label="Annulla" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_flickr_photo.xml b/indra/newview/skins/default/xui/it/panel_flickr_photo.xml index 064c302b14..e989fb2081 100644 --- a/indra/newview/skins/default/xui/it/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/it/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> - <combo_box.item label="Finestra attuale" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtri immagini"> - <combo_box.item label="Nessun filtro" name="NoFilter"/> - </combo_box> - <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> - <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> - <text name="title_label"> - Titolo: - </text> - <text name="description_label"> - Descrizione: - </text> - <check_box initial_value="true" label="Includi l'ubicazione SL al termine della descrizione" name="add_location_cb"/> - <text name="tags_label"> - Tag: - </text> - <text name="tags_help_label"> - Separa tag con spazi + <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> + <combo_box.item label="Finestra attuale" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtri immagini"> + <combo_box.item label="Nessun filtro" name="NoFilter"/> + </combo_box> + <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> + <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> + <text name="title_label"> + Titolo: + </text> + <text name="description_label"> + Descrizione: + </text> + <check_box initial_value="true" label="Includi il luogo SL al termine della descrizione" name="add_location_cb"/> + <text name="tags_label"> + Tag: + </text> + <text name="tags_help_label"> + Separa tag con spazi Usa "" per tag con più di una parola - </text> - <combo_box name="rating_combobox" tool_tip="Categoria del contenuto di Flickr"> - <combo_box.item label="Categoria Flickr Sicuro" name="SafeRating"/> - <combo_box.item label="Categoria Flickr Moderato" name="ModerateRating"/> - <combo_box.item label="Categoria Flickr Censurato" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Carica" name="post_photo_btn"/> - <button label="Annulla" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Categoria del contenuto di Flickr"> + <combo_box.item label="Categoria Flickr Sicuro" name="SafeRating"/> + <combo_box.item label="Categoria Flickr Moderato" name="ModerateRating"/> + <combo_box.item label="Categoria Flickr Censurato" name="RestrictedRating"/> + </combo_box> + <button label="Carica" name="post_photo_btn"/> + <button label="Annulla" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_control_panel.xml b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml index 2d17e4a0cd..2d17e4a0cd 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml index 49baa73811..49baa73811 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_general.xml +++ b/indra/newview/skins/default/xui/it/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml index 138edc3a26..fb51febc58 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Ruoli e membri"/> <accordion_tab name="group_notices_tab" title="Avvisi"/> <accordion_tab name="group_land_tab" title="Terra/Beni"/> + <accordion_tab name="group_experiences_tab" title="Esperienze"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml index 01edb7391a..01edb7391a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml index 27675a18f5..27675a18f5 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml index 72e644008c..72e644008c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml index 524f7d2822..524f7d2822 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_notify.xml b/indra/newview/skins/default/xui/it/panel_group_notify.xml index 91a41353a5..91a41353a5 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/it/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml index 4d414d47ce..4d414d47ce 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/it/panel_im_control_panel.xml b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml index 76b28eab24..76b28eab24 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/it/panel_inventory_item.xml b/indra/newview/skins/default/xui/it/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/it/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_landmark_info.xml b/indra/newview/skins/default/xui/it/panel_landmark_info.xml index b4c5ab01bc..b4c5ab01bc 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/it/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/it/panel_landmarks.xml b/indra/newview/skins/default/xui/it/panel_landmarks.xml index 5617105c31..5617105c31 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/it/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml index 1ce38ac40c..6c1777163c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_login.xml +++ b/indra/newview/skins/default/xui/it/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=it - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=it</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nome utente" name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come roby12 o Stella Solare"/> <line_editor label="Password" name="password_edit"/> - <check_box label="Ricordami" name="remember_check"/> - <text name="forgot_password_text"> - Password dimenticata - </text> - <button label="Accedi" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - all'ultima ubicazione - </text> <combo_box label="I miei luoghi preferiti" name="start_location_combo"> + <combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/> <combo_box.item label="Casa mia" name="MyHome"/> </combo_box> - <button label="Accedi" name="connect_favorite_btn"/> - <line_editor label="Digita un'ubicazione" name="location_edit"/> - <button label="Accedi" name="connect_location_btn"/> + <button label="Accedi" name="connect_btn"/> + <check_box label="Ricordami" name="remember_check"/> + <text name="forgot_password_text">Password dimenticata</text> <combo_box label="Seleziona griglia" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/it/panel_main_inventory.xml b/indra/newview/skins/default/xui/it/panel_main_inventory.xml index 446b51ffa3..446b51ffa3 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml new file mode 100644 index 0000000000..d28dfadf45 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Visualizza/ordina opzioni"/> + <button name="add_btn" tool_tip="Crea una nuova cartella annunci"/> + <button label="Controlla che non ci siano errori" name="audit_btn" tool_tip="Controlla i tuoi annunci su Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtra annunci Marketplace" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..4902442d2b --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TUTTO" name="All Items" tool_tip="Trascina e rilascia qui gli articoli da elencare"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..3fb0d5645c --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="IN ELENCO" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..ac6b2952fc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NON ASSOCIATO" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..6c9fae7ddc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="RIMOSSI" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml index a134f6f1de..a134f6f1de 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_me.xml +++ b/indra/newview/skins/default/xui/it/panel_me.xml diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_general.xml b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml index f11b2415ee..f11b2415ee 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml index 0f0f1c9fe4..0f0f1c9fe4 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml index 785cd048a1..785cd048a1 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml index 0299e2a532..0299e2a532 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml index d46a15c735..d46a15c735 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml index 1fef88870a..1fef88870a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/it/panel_nearby_media.xml b/indra/newview/skins/default/xui/it/panel_nearby_media.xml index 03421456f9..03421456f9 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/it/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml index ef27262010..ef27262010 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/it/panel_online_status_toast.xml b/indra/newview/skins/default/xui/it/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/it/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml index af5e05336e..af5e05336e 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml index 446c211b1c..446c211b1c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml index c7821bc363..c7821bc363 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml index 9e1a45b129..9e1a45b129 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/it/panel_outfits_list.xml b/indra/newview/skins/default/xui/it/panel_outfits_list.xml index d0c275e29f..d0c275e29f 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml index 3bbf2446f5..3bbf2446f5 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml index 2f40d4bdc4..2f40d4bdc4 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_people.xml +++ b/indra/newview/skins/default/xui/it/panel_people.xml diff --git a/indra/newview/skins/default/xui/it/panel_pick_info.xml b/indra/newview/skins/default/xui/it/panel_pick_info.xml index ca9959a581..ca9959a581 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/it/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/it/panel_picks.xml b/indra/newview/skins/default/xui/it/panel_picks.xml index 3faf28a948..3faf28a948 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_picks.xml +++ b/indra/newview/skins/default/xui/it/panel_picks.xml diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml index 890dfc2458..890dfc2458 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml index 69995fb5de..69995fb5de 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_places.xml +++ b/indra/newview/skins/default/xui/it/panel_places.xml diff --git a/indra/newview/skins/default/xui/it/panel_postcard_message.xml b/indra/newview/skins/default/xui/it/panel_postcard_message.xml index c720f4822d..c720f4822d 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/it/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/it/panel_postcard_settings.xml b/indra/newview/skins/default/xui/it/panel_postcard_settings.xml index 6a586c4415..374e6a07e5 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/it/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Personalizza" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Larghezza" name="postcard_snapshot_width"/> - <spinner label="Altezza" name="postcard_snapshot_height"/> - <check_box label="Mantieni le proporzioni" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Qualità dell'immagine" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Larghezza x altezza" name="postcard_snapshot_width"/> + <check_box label="Mantieni le proporzioni" name="postcard_keep_aspect_check"/> + <slider label="Qualità:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml index ccca27cbfd..ccca27cbfd 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml index fd1fd57761..fd1fd57761 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml index 09d7c96370..09d7c96370 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_colors.xml b/indra/newview/skins/default/xui/it/panel_preferences_colors.xml index 016970d9a3..016970d9a3 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml index ef999d03c0..ef999d03c0 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml index 2978c48db6..2978c48db6 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_move.xml b/indra/newview/skins/default/xui/it/panel_preferences_move.xml index 8d172bb8bb..8d172bb8bb 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml index 2a73b66c9e..2a73b66c9e 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml index fcc9661d03..e204d70b03 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="Usa il mio browser (IE, Firefox, Safari)" name="external" tool_tip="Utilizza il browser Web predefinito di sistema per l'aiuto, per i link Web e così via. Sconsigliato durante l'esecuzione a tutto schermo." value="true"/> - <radio_item label="Utilizza il browser Web integrato" name="internal" tool_tip="Utilizza il browser Web integrato per l'aiuto, per i link Web e così via. Questo browser si apre in una nuova finestra in [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Usa il mio browser (Chrome, Firefox, IE) per tutti i link" name="internal" tool_tip="Utilizza il browser Web predefinito di sistema per l'aiuto, per i link Web e così via. Sconsigliato durante l'esecuzione a tutto schermo." value="0"/> + <radio_item label="Usa il browser incorporato solo per i link di Second Life" name="external" tool_tip="Utilizza il browser Web predefinito di sistema per l'aiuto, per i link Web e così via. Il browser incorporato verrà usato solo per i link LindenLab/SecondLife." value="1"/> </radio_group> <check_box initial_value="true" label="Abilita plugin" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Accetta cookie" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index d00512aaf7..d00512aaf7 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml 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 4620d72977..4620d72977 100755..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 diff --git a/indra/newview/skins/default/xui/it/panel_region_covenant.xml b/indra/newview/skins/default/xui/it/panel_region_covenant.xml index 0d3117ca7a..0d3117ca7a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/it/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/it/panel_region_debug.xml b/indra/newview/skins/default/xui/it/panel_region_debug.xml index ca39cf6d05..ca39cf6d05 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/it/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/it/panel_region_environment.xml b/indra/newview/skins/default/xui/it/panel_region_environment.xml index 81bc8253f4..81bc8253f4 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/it/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/it/panel_region_estate.xml b/indra/newview/skins/default/xui/it/panel_region_estate.xml index 98d9b86cfc..98d9b86cfc 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/it/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/it/panel_region_experiences.xml b/indra/newview/skins/default/xui/it/panel_region_experiences.xml new file mode 100644 index 0000000000..e19650553a --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Esperienze" name="Experiences"> + <panel.string name="trusted_estate_text"> + Qualunque esperienza può essere un'esperienza chiave. + +Le esperienze chiave dispongono di autorizzazione per l'esecuzione in questa proprietà immobiliare. + +Inoltre, se la proprietà immobiliare non consente l'accesso pubblico, i Residenti che partecipano a un'esperienza chiave possono accedere alla proprietà e restarvi per tutto il tempo durante il quale partecipano all'esperienza chiave. + </panel.string> + <panel.string name="allowed_estate_text"> + Sono consentite solo le esperienze a livello di terreno. + +Le esperienze consentite dispongono di autorizzazione per l'esecuzione in questa proprietà immobiliare. + </panel.string> + <panel.string name="blocked_estate_text"> + Possono essere bloccate solo le esperienze a livello di griglia. + +Le esperienze bloccate non possono essere eseguite su questa proprietà immobiliare. + </panel.string> + <panel.string name="estate_caption"> + Le modifiche apportate in questa scheda saranno valide per tutte le regioni in questa proprietà. + </panel.string> + <panel.string name="allowed_parcel_text"> + Sono consentite solo le esperienze a livello di terreno. + +Le esperienze consentite dispongono di autorizzazione per l'esecuzione su questo lotto se non sono bloccate a livello di proprietà immobiliare. + </panel.string> + <panel.string name="blocked_parcel_text"> + Qualsiasi esperienza residente può essere bloccata. + +Le esperienze bloccate non possono essere eseguite su questo lotto. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml index 3e2f593d2f..3e2f593d2f 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_general.xml +++ b/indra/newview/skins/default/xui/it/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/it/panel_region_terrain.xml b/indra/newview/skins/default/xui/it/panel_region_terrain.xml index c61ac3ecce..c61ac3ecce 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/it/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/it/panel_script_ed.xml b/indra/newview/skins/default/xui/it/panel_script_ed.xml index 3cbdadbac8..3cbdadbac8 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/it/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/it/panel_script_experience.xml b/indra/newview/skins/default/xui/it/panel_script_experience.xml new file mode 100644 index 0000000000..0f9e2fb9c5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="ESPERIENZA"> + <button label="Esperienza" name="Expand Experience"/> + <check_box label="Usa le esperienze" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Scegli esperienza..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Non sei il fornitore di alcuna esperienza. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml index 98096a391a..98096a391a 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml index df7b0eae1c..df7b0eae1c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/it/panel_script_question_toast.xml b/indra/newview/skins/default/xui/it/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/it/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/it/panel_scrolling_param.xml b/indra/newview/skins/default/xui/it/panel_scrolling_param.xml index b5f8c8d6f0..b5f8c8d6f0 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/it/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml index 3c7874e093..3c7874e093 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml index c9245029b7..e6fba8e3bf 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Salva nell'inventario + Inventario </text> <text name="hint_lbl"> Salvare un'immagine nell'inventario costa L$[UPLOAD_COST]. Per salvare l'immagine come texture, selezionare uno dei formati quadrati. @@ -13,8 +13,8 @@ <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> <combo_box.item label="Personalizza" name="Custom"/> </combo_box> - <spinner label="Larghezza" name="inventory_snapshot_width"/> - <spinner label="Altezza" name="inventory_snapshot_height"/> + <spinner label="Larghezza x altezza" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Mantieni le proporzioni" name="inventory_keep_aspect_check"/> <button label="Annulla" name="cancel_btn"/> <button label="Salva" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_local.xml b/indra/newview/skins/default/xui/it/panel_snapshot_local.xml index 4b725b68f9..f76c19d27b 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Salva sul mio computer + Disco </text> <combo_box label="Risoluzione" name="local_size_combo"> <combo_box.item label="Finestra attuale" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Personalizza" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Larghezza" name="local_snapshot_width"/> - <spinner label="Altezza" name="local_snapshot_height"/> - <check_box label="Mantieni le proporzioni" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Formato" name="local_format_combo"> - <combo_box.item label="PNG (senza perdite)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (senza perdite)" name="BMP"/> - </combo_box> - <slider label="Qualità dell'immagine" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Larghezza x altezza" name="local_snapshot_width"/> + <check_box label="Mantieni le proporzioni" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Formato: + </text> + <combo_box label="Formato" name="local_format_combo"> + <combo_box.item label="PNG (senza perdite)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (senza perdite)" name="BMP"/> + </combo_box> + <slider label="Qualità:" name="image_quality_slider"/> <button label="Annulla" name="cancel_btn"/> <flyout_button label="Salva" name="save_btn" tool_tip="Salva immagine come file"> <flyout_button.item label="Salva" name="save_item"/> diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml index a043e5add6..ba56499987 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Invia post al feed del mio profilo" name="save_to_profile_btn"/> - <button label="E-mail" name="save_to_email_btn"/> + <button label="Salva sul disco" name="save_to_computer_btn"/> <button label="Salva nell'inventario (L$[AMOUNT])" name="save_to_inventory_btn"/> - <button label="Salva sul mio computer" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Invia a: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="Carica sul profilo" name="save_to_profile_btn"/> + <button label="Carica su Facebook" name="send_to_facebook_btn"/> + <button label="Carica su Twitter" name="send_to_twitter_btn"/> + <button label="Carica su Flickr" name="send_to_flickr_btn"/> + <button label="Invia tramite e-mail" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml index 3703b97e6c..be7d8763b6 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml @@ -12,6 +12,10 @@ <text name="title"> E-mail </text> - <button label="Messaggio" name="message_btn"/> - <button label="Impostazioni" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="Messaggio" name="panel_postcard_message"/> + <panel label="Impostazioni" name="panel_postcard_settings"/> + </tab_container> + <button label="Annulla" name="cancel_btn"/> + <button label="Invia" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml index 2cdbf97049..3de12c959c 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Invia post al feed del mio profilo + Profilo </text> <combo_box label="Risoluzione" name="profile_size_combo"> <combo_box.item label="Finestra attuale" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Personalizza" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Larghezza" name="profile_snapshot_width"/> - <spinner label="Altezza" name="profile_snapshot_height"/> - <check_box label="Mantieni le proporzioni" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Didascalia: - </text> - <check_box initial_value="true" label="Includi luogo" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Larghezza x altezza" name="profile_snapshot_width"/> + <check_box label="Mantieni le proporzioni" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Didascalia: + </text> + <check_box initial_value="true" label="Includi luogo" name="add_location_cb"/> <button label="Annulla" name="cancel_btn"/> <button label="Post" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_sound_devices.xml b/indra/newview/skins/default/xui/it/panel_sound_devices.xml index b1934fd515..b1934fd515 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/it/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml index e4ff7019ec..e4ff7019ec 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 0aaf89d8c8..83d2ae5bab 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perdita di pacchetti - </panel.string> - <panel.string name="bandwidth_tooltip"> - Larghezza di banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Perdita di pacchetti</panel.string> + <panel.string name="bandwidth_tooltip">Larghezza di banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-405" name="balance_bg" width="195"> - <text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ 20"/> + <text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ ??"/> <button label="Acquista L$" name="buyL" tool_tip="Clicca per acquistare più L$"/> <button label="Acquisti" name="goShop" tool_tip="Apri Mercato Second Life" width="75"/> </panel> - <text name="TimeText" tool_tip="Orario attuale (Pacifico)"> - 24:00, ora del Pacifico - </text> + <text name="TimeText" tool_tip="Orario attuale (Pacifico)">24:00, ora del Pacifico</text> <button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/> <button name="volume_btn" tool_tip="Regolazione del volume globale"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history.xml b/indra/newview/skins/default/xui/it/panel_teleport_history.xml index f4fa59babe..f4fa59babe 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/it/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml index 050298ffcf..050298ffcf 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/it/panel_twitter_photo.xml b/indra/newview/skins/default/xui/it/panel_twitter_photo.xml index 740ec3961f..69596784bd 100644 --- a/indra/newview/skins/default/xui/it/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/it/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Cosa sta succedendo? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="Includi l'ubicazione in SL" name="add_location_cb"/> - <check_box initial_value="true" label="Includi una foto" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> - <combo_box.item label="Finestra attuale" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtri immagini"> - <combo_box.item label="Nessun filtro" name="NoFilter"/> - </combo_box> - <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> - <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Tweetta" name="post_photo_btn"/> - <button label="Annulla" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Cosa sta succedendo? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="Includi il luogo in SL" name="add_location_cb"/> + <check_box initial_value="true" label="Includi una foto" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Risoluzione immagini"> + <combo_box.item label="Finestra attuale" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtri immagini"> + <combo_box.item label="Nessun filtro" name="NoFilter"/> + </combo_box> + <button label="Aggiorna" name="new_snapshot_btn" tool_tip="Fai clic per aggiornare"/> + <button label="Anteprima" name="big_preview_btn" tool_tip="Fai clic per alternare l'anteprima"/> + <button label="Tweetta" name="post_photo_btn"/> + <button label="Annulla" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_voice_effect.xml b/indra/newview/skins/default/xui/it/panel_voice_effect.xml index b43f766e5e..b43f766e5e 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/it/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml index bc17fc0c89..bc17fc0c89 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/it/panel_world_map.xml b/indra/newview/skins/default/xui/it/panel_world_map.xml index 642af75028..642af75028 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_world_map.xml +++ b/indra/newview/skins/default/xui/it/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml index 80d65a9c74..b53eca4f78 100755..100644 --- a/indra/newview/skins/default/xui/it/role_actions.xml +++ b/indra/newview/skins/default/xui/it/role_actions.xml @@ -71,4 +71,8 @@ <action description="Partecipa alla Chat vocale di gruppo" longdescription=" I membri con questo ruolo e abilità possono partecipare alle sessioni di Chat vocale nel gruppo. NOTA: per poter partecipare alla Chat di gruppo è necessario accedere alla sessione di chat vocale." name="join voice chat" value="27"/> <action description="Moderare la Chat di gruppo" longdescription="I membri con questo ruolo e abilità possono gestire l'accesso e la partecipazione alle sessioni di chat scritta e di chat vocale nel gruppo." name="moderate group chat" value="37"/> </action_set> + <action_set description="Queste Abilità includono la capacità di modificare le esperienze che appartengono al gruppo." name="experience_tools_experience"> + <action description="Amministratore esperienza" longdescription="I membri di un ruolo che include questa abilità possono modificare i metadati di un'esperienza." name="experience admin" value="49"/> + <action description="Fornitore esperienza" longdescription="I membri di un ruolo che include questa abilità possono fornire script per un'esperienza." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml index 220a6f84af..220a6f84af 100755..100644 --- a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index 2f00a023bb..2f00a023bb 100755..100644 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml index 2b3ea0fb83..14c1c43816 100755..100644 --- a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Profilo articolo"> + <panel.string name="loading_experience"> + (caricamento in corso) + </panel.string> <panel.string name="unknown"> (sconosciuto) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Acquisito: </text> + <text name="LabelItemExperienceTitle"> + Esperienza: + </text> <panel name="perms_inv"> <text name="perm_modify"> Tu puoi: @@ -66,8 +72,9 @@ <check_box label="Trasferisci" name="CheckNextOwnerTransfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> </panel> <check_box label="In vendita" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Contenuti" name="Contents"/> <combo_box.item label="Originale" name="Original"/> </combo_box> <spinner label="Prezzo: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml index 5f912dd126..aabefd7d3c 100755..100644 --- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profilo dell'oggetto"> - <panel.string name="text deed continued"> - Cessione - </panel.string> - <panel.string name="text deed"> - Cessione - </panel.string> - <panel.string name="text modify info 1"> - Tu puoi modificare questo oggetto - </panel.string> - <panel.string name="text modify info 2"> - Tu puoi modificare questi oggetti - </panel.string> - <panel.string name="text modify info 3"> - Non puoi modificare questo oggetto - </panel.string> - <panel.string name="text modify info 4"> - Non puoi modificare questi oggetti - </panel.string> - <panel.string name="text modify info 5"> - Questo oggetto non può essere modificato attraverso il confine di una regione - </panel.string> - <panel.string name="text modify info 6"> - Questi oggetti non possono essere modificati attraverso il confine di una regione - </panel.string> - <panel.string name="text modify warning"> - Questo oggetto ha parti collegate - </panel.string> - <panel.string name="Cost Default"> - Prezzo: L$ - </panel.string> - <panel.string name="Cost Total"> - Prezzo totale: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Prezzo per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Prezzo misto - </panel.string> - <panel.string name="Sale Mixed"> - Vendita mista - </panel.string> + <panel.string name="text deed continued">Cessione</panel.string> + <panel.string name="text deed">Cessione</panel.string> + <panel.string name="text modify info 1">Tu puoi modificare questo oggetto</panel.string> + <panel.string name="text modify info 2">Tu puoi modificare questi oggetti</panel.string> + <panel.string name="text modify info 3">Non puoi modificare questo oggetto</panel.string> + <panel.string name="text modify info 4">Non puoi modificare questi oggetti</panel.string> + <panel.string name="text modify info 5">Questo oggetto non può essere modificato attraverso il confine di una regione</panel.string> + <panel.string name="text modify info 6">Questi oggetti non possono essere modificati attraverso il confine di una regione</panel.string> + <panel.string name="text modify warning">Questo oggetto ha parti collegate</panel.string> + <panel.string name="Cost Default">Prezzo: L$</panel.string> + <panel.string name="Cost Total">Prezzo totale: L$</panel.string> + <panel.string name="Cost Per Unit">Prezzo per: L$</panel.string> + <panel.string name="Cost Mixed">Prezzo misto</panel.string> + <panel.string name="Sale Mixed">Vendita mista</panel.string> <text name="title" value="Profilo dell'oggetto"/> <text name="where" value="(in Second Life)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrizione: - </text> - <text name="CreatorNameLabel"> - Ideatore: - </text> - <text name="Owner:"> - Proprietario: - </text> - <text name="Group_label"> - Gruppo: - </text> + <text name="Name:">Nome:</text> + <text name="Description:">Descrizione:</text> + <text name="CreatorNameLabel">Ideatore:</text> + <text name="Owner:">Proprietario:</text> + <text name="Group_label">Gruppo:</text> <button name="button set group" tool_tip="Scegli un gruppo con cui condividere i diritti relativi all'oggetto"/> <name_box initial_value="Caricamento in corso..." name="Group Name Proxy"/> <button label="Cessione" label_selected="Cessione" name="button deed" tool_tip="Con una cessione si trasferisce il bene con i diritti al proprietario successivo Gli oggetti in proprietà condivisa di gruppo possono essere ceduti soltanto da un funzionario del gruppo."/> - <text name="label click action"> - Fai clic per: - </text> + <text name="label click action">Fai clic per:</text> <combo_box name="clickaction"> <combo_box.item label="Tocca (predefinito)" name="Touch/grab(default)"/> <combo_box.item label="Siediti sull'oggetto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Ingrandisci" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Tu puoi modificare questo oggetto - </text> - <text name="Anyone can:"> - Chiunque: - </text> + <text name="perm_modify">Tu puoi modificare questo oggetto</text> + <text name="Anyone can:">Chiunque:</text> <check_box label="Copia" name="checkbox allow everyone copy"/> <check_box label="Sposta" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Gruppo: - </text> + <text name="GroupLabel">Gruppo:</text> <check_box label="Condividi" name="checkbox share with group" tool_tip="Consenti a tutti i membri del gruppo selezionato di condividere i tuoi diritti di modifica di questo oggetto. Per attivare le restrizioni per ruolo devi prima effettuare la cessione."/> - <text name="NextOwnerLabel"> - Proprietario successivo: - </text> + <text name="NextOwnerLabel">Proprietario successivo:</text> <check_box label="Modifica" name="checkbox next owner can modify"/> <check_box label="Copia" name="checkbox next owner can copy"/> <check_box label="Trasferisci" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Prezzo: L$" name="Edit Cost"/> <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti alle persone di vedere questo oggetto nei risultati della ricerca"/> - <text name="pathfinding_attributes_label"> - Attributi pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Attributi pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Apri" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 17ce8aaf5e..78028127b2 100755..100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -35,7 +35,7 @@ Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica! </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> @@ -446,30 +446,51 @@ Prova ad accedere nuovamente tra un minuto. <string name="TooltipMustSingleDrop"> Solo un singolo oggetto può essere creato qui </string> + <string name="TooltipTooManyWearables"> + Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate > Mostra impostazioni di debug > WearFolderLimit. + </string> <string name="TooltipPrice" value="L$ [AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - Non puoi rezzare elementi nella tua casella in uscita del rivenditore + Non puoi rezzare articoli dalla cartella degli annunci di Marketplace + </string> + <string name="TooltipOutboxWorn"> + Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi + </string> + <string name="TooltipOutboxFolderLevels"> + La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli. + </string> + <string name="TooltipOutboxTooManyFolders"> + Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli. + </string> + <string name="TooltipOutboxTooManyObjects"> + Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Il numero di articoli in magazzino è maggiore di [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Puoi trascinare articoli o cartelle solo nella scheda TUTTI. Seleziona la scheda e sposta nuovamente gli articoli o le cartelle. </string> <string name="TooltipOutboxNoTransfer"> - Almeno uno di questi oggetti non può essere venduto o trasferito. + Almeno uno di questi oggetti non può essere venduto o trasferito </string> <string name="TooltipOutboxNotInInventory"> - La tua casella in uscita del rivenditore può accettare solo elementi provenienti dal tuo inventario + Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario </string> - <string name="TooltipOutboxWorn"> - Non puoi mettere gli elementi che indossi nella casella in uscita del rivenditore + <string name="TooltipOutboxLinked"> + Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace </string> <string name="TooltipOutboxCallingCard"> - Non puoi inserire il tuo biglietto da visita nella tua casella in uscita del rivenditore + Non puoi inserire biglietti da visita in Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - La profondità delle caselle nidificate è maggiore di 3 + <string name="TooltipOutboxDragActive"> + non puoi muovere un annuncio attivo </string> - <string name="TooltipOutboxTooManyFolders"> - Il numero di sottocartelle nella cartella al livello più alto è maggiore di 20 + <string name="TooltipOutboxCannotMoveRoot"> + Non puoi spostare la cartella principale degli annunci di Marketplace </string> - <string name="TooltipOutboxTooManyObjects"> - Il numero di elementi nella cartella al livello più alto è maggiore di 200 + <string name="TooltipOutboxMixedStock"> + Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni </string> <string name="TooltipDragOntoOwnChild"> Non puoi spostare una cartella nella relativa cartella secondaria @@ -1051,9 +1072,7 @@ Prova ad accedere nuovamente tra un minuto. <string name="AgentNameSubst"> (Tu) </string> - <string name="JoinAnExperience"> - Partecipa a un'esperienza - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Omette gli avvisi durante la gestione degli elenchi di accesso alle proprietà immobiliari </string> @@ -1120,6 +1139,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="bitmap_image_files"> Immagini Bitmap </string> + <string name="png_image_files"> + Immagini PNG + </string> + <string name="save_texture_image_files"> + Immagini Targa o PNG + </string> <string name="avi_movie_file"> File video AVI </string> @@ -1369,6 +1394,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="FavoritesNoMatchingItems"> Trascina qui un punto di riferimento per aggiungerlo ai Preferiti. </string> + <string name="MarketplaceNoMatchingItems"> + Nessun articolo trovato. Controlla di aver digitato la stringa di ricerca correttamente e riprova. + </string> <string name="InventoryNoTexture"> Non hai una copia di questa texture nel tuo inventario </string> @@ -1416,29 +1444,95 @@ Prova ad accedere nuovamente tra un minuto. <string name="InventoryOutboxError"> Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori. </string> + <string name="InventoryMarketplaceError"> + Questa funzione è al momento in versione beta. Per partecipare, aggiungi il tuo nome a questo [http://goo.gl/forms/FCQ7UXkakz modulo Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + La cartella degli annunci di Marketplace è vuota. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Trascina le cartelle in questa area per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + <string name="Marketplace Validation Warning Stock"> + la cartella di magazzino deve essere inclusa in una cartella di versione + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Errore: tutti gli articoli un una cartella di magazzino devono essere non copiabili e dello stesso tipo + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Errore: la cartella di magazzino non può contenere sottocartelle + </string> + <string name="Marketplace Validation Warning Empty"> + : Avviso: la cartella non contiene alcun articolo + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Avviso: creazione cartella di magazzino in corso + </string> + <string name="Marketplace Validation Warning Create Version"> + : Avviso: creazione cartella di versione in corso + </string> + <string name="Marketplace Validation Warning Move"> + : Avviso: spostamento articoli in corso + </string> + <string name="Marketplace Validation Warning Delete"> + : Avviso: il contenuto della cartella è stato trasferito alla cartella di magazzino e la cartella vuota sta per essere rimossa + </string> + <string name="Marketplace Validation Error Stock Item"> + : Errore: gli articoli di cui non è permessa la copia devono essere all'interno di una cartella di magazzino + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Avviso: gli articoli devono essere inclusi in una cartella di versione + </string> + <string name="Marketplace Validation Error"> + : Errore: + </string> + <string name="Marketplace Validation Warning"> + : Avviso: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Avviso: la cartella di versione deve contenere almeno 1 articolo + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Avviso: la cartella di magazzino deve contenere almeno 1 articolo + </string> + <string name="Marketplace Validation No Error"> + Nessun errore o avviso da segnalare + </string> <string name="Marketplace Error None"> Nessun errore </string> + <string name="Marketplace Error Prefix"> + Errore: + </string> <string name="Marketplace Error Not Merchant"> - Errore: Prima di inviare elementi al Marketplace devi essere impostato come rivenditore (gratis). + Prima di inviare gli articoli al Marketplace devi essere impostato come rivenditore (gratis). </string> - <string name="Marketplace Error Empty Folder"> - Errore: questa cartella non include alcun contenuto. + <string name="Marketplace Error Not Accepted"> + L'articolo non può essere spostato in quella cartella. </string> - <string name="Marketplace Error Unassociated Products"> - Errore: Oggetto non caricato perché il tuo account venditore ha troppi oggetti che non sono associati con dei prodotti. Per risolvere questo errore, esegui l'accesso al sito di Marketplace e riduci il numero di oggetti non associati. + <string name="Marketplace Error Unsellable Item"> + Questo articolo non può essere venduto nel Marketplace. </string> - <string name="Marketplace Error Object Limit"> - Errore: questo elemento contiene troppi oggetti. Per risolvere questo problema, inserisci più oggetti insieme in una scatola per ridurre a meno di 200 il numero totale di oggetti. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - Errore: questo elemento contiene troppi livelli di cartelle nidificate. Riorganizzalo per ottenere un massimo di 3 livelli di cartelle nidificate. + <string name="MarketplaceLive"> + in elenco </string> - <string name="Marketplace Error Unsellable Item"> - Errore: Questo elemento non può essere venduto nel Marketplace. + <string name="MarketplaceActive"> + attivi + </string> + <string name="MarketplaceMax"> + massimo + </string> + <string name="MarketplaceStock"> + magazzino </string> - <string name="Marketplace Error Internal Import"> - Errore: problema con questo elemento. Riprova più tardi. + <string name="MarketplaceNoStock"> + non in magazzino + </string> + <string name="MarketplaceUpdating"> + in aggiornamento... </string> <string name="Open landmarks"> Apri luoghi di riferimento @@ -1459,6 +1553,7 @@ Prova ad accedere nuovamente tra un minuto. Nessun contenuto </string> <string name="WornOnAttachmentPoint" value="(indossato su [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (attivo)"/> <string name="Chat Message" value="Chat:"/> <string name="Sound" value="Suono :"/> @@ -1723,6 +1818,15 @@ Prova ad accedere nuovamente tra un minuto. <string name="Invalid Attachment"> Punto di collegamento non valido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Errore: articolo mancante + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Errore: articolo di base mancante + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Errore: l'oggetto è nel vestiario corrente ma non è collegato + </string> <string name="YearsMonthsOld"> Nato da [AGEYEARS] [AGEMONTHS] </string> @@ -1891,6 +1995,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="SaveComplete"> Salvataggio completato. </string> + <string name="UploadFailed"> + Caricamento file non riuscito: + </string> <string name="ObjectOutOfRange"> Script (oggetto fuori portata) </string> @@ -1900,6 +2007,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="GroupsNone"> nessuno </string> + <string name="CompileNoExperiencePerm"> + Saltato lo script [SCRIPT] con l'esperienza [EXPERIENCE]. + </string> <string name="Group" value="(gruppo)"/> <string name="Unknown"> (Sconosciuto) @@ -4979,6 +5089,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Marketplace_Label"> Mercato </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> Mini mappa </string> @@ -5066,6 +5179,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Marketplace_Tooltip"> Vai allo shopping </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vendi le tue creazioni + </string> <string name="Command_MiniMap_Tooltip"> Mostra le persone vicine </string> @@ -5189,4 +5305,85 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="loading_chat_logs"> Caricamento in corso... </string> + <string name="experience_tools_experience"> + Esperienza + </string> + <string name="ExperienceNameNull"> + (nessuna esperienza) + </string> + <string name="ExperienceNameUntitled"> + (esperienza senza titolo) + </string> + <string name="Land-Scope"> + A livello di terreno + </string> + <string name="Grid-Scope"> + A livello di griglia + </string> + <string name="Allowed_Experiences_Tab"> + CONSENTITO + </string> + <string name="Blocked_Experiences_Tab"> + BLOCCATO + </string> + <string name="Contrib_Experiences_Tab"> + FORNITORE + </string> + <string name="Admin_Experiences_Tab"> + AMMINISTRATORE + </string> + <string name="Recent_Experiences_Tab"> + RECENTE + </string> + <string name="Owned_Experiences_Tab"> + DI PROPRIETÀ + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], massimo [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + gestione dei tuoi comandi + </string> + <string name="ExperiencePermission3"> + attivazione di animazioni per il tuo avatar + </string> + <string name="ExperiencePermission4"> + collegamento al tuo avatar + </string> + <string name="ExperiencePermission9"> + monitoraggio della tua videocamera + </string> + <string name="ExperiencePermission10"> + controllo della tua videocamera + </string> + <string name="ExperiencePermission11"> + ti teletrasporta + </string> + <string name="ExperiencePermission12"> + accettazione automaticamente delle autorizzazioni per le esperienze + </string> + <string name="ExperiencePermissionShortUnknown"> + ha eseguito un'operazione sconosciuta: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Gestione dei comandi + </string> + <string name="ExperiencePermissionShort3"> + Attivazione di animazioni + </string> + <string name="ExperiencePermissionShort4"> + Collegamento + </string> + <string name="ExperiencePermissionShort9"> + Monitoraggio videocamera + </string> + <string name="ExperiencePermissionShort10"> + Controllo videocamera + </string> + <string name="ExperiencePermissionShort11"> + Teleport + </string> + <string name="ExperiencePermissionShort12"> + Autorizzazione + </string> </strings> diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml index bd967ebcc4..e4c4dda889 100755..100644 --- a/indra/newview/skins/default/xui/it/teleport_strings.xml +++ b/indra/newview/skins/default/xui/it/teleport_strings.xml @@ -46,6 +46,9 @@ Per ripetere l'esercitazione, visita 'Welcome Island Public'. <message name="MustGetAgeRegion"> Per poter entrare in questa regione devi avere almeno 18 anni. </message> + <message name="RegionTPSpecialUsageBlocked"> + Impossibile entrare nella regione. '[REGION_NAME]' è una regione per giochi di abilità e per entrare è necessario soddisfare alcuni requisiti. Per dettagli, leggi le [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life domande frequenti sui giochi di abilità]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index 63a4e69c10..91a61ab225 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="[CAPITALIZED_APP_NAME] について"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - コンパイラー [COMPILER] [COMPILER_VERSION] バージョン - </floater.string> - <floater.string name="AboutPosition"> - あなたの現在地は、[POSITION_LOCAL_0,number,1]、[POSITION_LOCAL_1,number,1]、[POSITION_LOCAL_2,number,1] の [REGION] です。位置は <nolink>[HOSTNAME]</nolink> です。([HOSTIP]) -SLURL:<nolink>[SLURL]</nolink> -(グローバル座標 [POSITION_0,number,1]、[POSITION_1,number,1]、[POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -メモリ: [MEMORY_MB] MB -OS バージョン: [OS_VERSION] -グラフィックカード製造元: [GRAPHICS_CARD_VENDOR] -グラフィックカード: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows グラフィックドライババージョン: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL バージョン: [OPENGL_VERSION] - -libcurl バージョン: [LIBCURL_VERSION] -J2C デコーダバージョン: [J2C_VERSION] -オーディオドライババージョン: [AUDIO_DRIVER_VERSION] -Qt Webkit バージョン: [QT_WEBKIT_VERSION] -ボイスサーバーバージョン: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (なし) - </floater.string> - <floater.string name="AboutTraffic"> - パケットロス: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - サーバーのリリースノートの URL を取得中にエラーが発生しました。 - </floater.string> <tab_container name="about_tab"> <panel label="情報" name="support_panel"> <button label="クリップボードにコピー" name="copy_btn"/> </panel> <panel label="クレジット" name="credits_panel"> - <text name="linden_intro"> - Second Life の提供元: Lindens の: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - オープンソースの提供: - </text> - <text_editor name="contrib_names"> - Dummy Name は実行時間に置き換え - </text_editor> - <text name="trans_intro"> - 翻訳会社: - </text> - <text_editor name="trans_names"> - Dummy Name は実行時間に置き換え - </text_editor> + <text name="linden_intro">Second Life の提供元: Lindens の、 +オープンソースの提供:</text> + <text_editor name="contrib_names">Dummy Name は実行時間に置き換え</text_editor> </panel> <panel label="ライセンス" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -95,8 +37,7 @@ Second Life ビューワでは Havok (TM) Physics が使用されています。 無断複写・複製・転載を禁じます。詳細については licenses.txt をご参照ください。 -ボイスチャットのオーディオコーディング:Polycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C) - </text_editor> +ボイスチャットのオーディオコーディング:Polycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index 3b4b5ed070..fc1ed5554a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -310,9 +310,6 @@ <panel.string name="push_restrict_region_text"> プッシュ禁止 (地域設定優先) </panel.string> - <panel.string name="see_avs_text"> - 他の区画にいるアバターは、 - </panel.string> <text name="allow_label"> 他の住人への許可: </text> @@ -338,22 +335,6 @@ <check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/> <check_box label="プッシュ禁止" name="PushRestrictCheck" tool_tip="スクリプトによるプッシュを禁止します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/> <check_box label="検索に区画を表示(週 L$ 30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/> - <combo_box name="land category with adult"> - <combo_box.item label="全カテゴリ" name="item0"/> - <combo_box.item label="Linden 所在地" name="item1"/> - <combo_box.item label="Adult" name="item2"/> - <combo_box.item label="アートとカルチャー" name="item3"/> - <combo_box.item label="ビジネス" name="item4"/> - <combo_box.item label="教育的" name="item5"/> - <combo_box.item label="ゲーム" name="item6"/> - <combo_box.item label="たまり場" name="item7"/> - <combo_box.item label="新住人に好意的" name="item8"/> - <combo_box.item label="公園と自然" name="item9"/> - <combo_box.item label="住宅用" name="item10"/> - <combo_box.item label="ショッピング" name="item11"/> - <combo_box.item label="レンタル" name="item13"/> - <combo_box.item label="その他" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="全カテゴリ" name="item0"/> <combo_box.item label="Linden 所在地" name="item1"/> @@ -450,15 +431,9 @@ <panel.string name="access_estate_defined"> (エステートに限定) </panel.string> - <panel.string name="allow_public_access"> - パブリックアクセスを許可 ([MATURITY])(注意:このオプションをオフにすると立入禁止ラインが作成されます) - </panel.string> <panel.string name="estate_override"> 1 つ以上のオプションが、不動産レベルで設定されています。 </panel.string> - <text name="Limit access to this parcel to:"> - この区画へのアクセス - </text> <check_box label="パブリックアクセスを許可(このオプションをオフにすると立入禁止ラインが作成されます)" name="public_access"/> <text name="Only Allow"> 次の住人にのみアクセスを許可: @@ -490,5 +465,6 @@ <button label="削除" label_selected="削除" name="remove_banned"/> </panel> </panel> + <panel label="経験" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_activeim.xml b/indra/newview/skins/default/xui/ja/floater_activeim.xml index 1c743e1fd2..1c743e1fd2 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_activeim.xml +++ b/indra/newview/skins/default/xui/ja/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml index 2bada303ae..2bada303ae 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml index f74bab3598..20c7298462 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ 表情 </text> <combo_box name="emote_combo" tool_tip="アニメーション再生中の顔の表情を決めます"> - <item label="(なし)" name="[None]" value=""/> - <item label="アーーーーー" name="Aaaaah" value="アーーーーー"/> - <item label="恐れる" name="Afraid" value="恐れる"/> - <item label="怒る" name="Angry" value="怒る"/> - <item label="満面の笑み" name="BigSmile" value="満面の笑み"/> - <item label="退屈" name="Bored" value="退屈"/> - <item label="泣く" name="Cry" value="泣く"/> - <item label="軽蔑" name="Disdain" value="軽蔑"/> - <item label="恥ずかしがる" name="Embarrassed" value="恥ずかしがる"/> - <item label="しかめっ面" name="Frown" value="しかめっ面"/> - <item label="キス" name="Kiss" value="キス"/> - <item label="笑う" name="Laugh" value="笑う"/> - <item label="むかつく" name="Plllppt" value="むかつく"/> - <item label="嫌悪感" name="Repulsed" value="嫌悪感"/> - <item label="悲しい" name="Sad" value="悲しい"/> - <item label="肩をすくめる" name="Shrug" value="肩をすくめる"/> - <item label="微笑む" name="Smile" value="微笑む"/> - <item label="驚く" name="Surprise" value="驚く"/> - <item label="ウィンク" name="Wink" value="ウィンク"/> - <item label="心配する" name="Worry" value="心配する"/> + <item label="(なし)" name="[None]"/> + <item label="アーーーーー" name="Aaaaah"/> + <item label="恐れる" name="Afraid"/> + <item label="怒る" name="Angry"/> + <item label="満面の笑み" name="BigSmile"/> + <item label="退屈" name="Bored"/> + <item label="泣く" name="Cry"/> + <item label="軽蔑" name="Disdain"/> + <item label="恥ずかしがる" name="Embarrassed"/> + <item label="しかめっ面" name="Frown"/> + <item label="キス" name="Kiss"/> + <item label="笑う" name="Laugh"/> + <item label="むかつく" name="Plllppt"/> + <item label="嫌悪感" name="Repulsed"/> + <item label="悲しい" name="Sad"/> + <item label="肩をすくめる" name="Shrug"/> + <item label="微笑む" name="Smile"/> + <item label="驚く" name="Surprise"/> + <item label="ウィンク" name="Wink"/> + <item label="心配する" name="Worry"/> </combo_box> <text name="preview_label"> プレビュー中の動作 </text> <combo_box name="preview_base_anim" tool_tip="これを使用して、アバターが一般的なアクションを実行している間にアニメーションの動作をテストします。"> - <item label="立つ" name="Standing" value="立つ"/> - <item label="歩く" name="Walking" value="歩く"/> - <item label="座る" name="Sitting" value="座る"/> - <item label="飛ぶ" name="Flying" value="飛ぶ"/> + <item label="立つ" name="Standing"/> + <item label="歩く" name="Walking"/> + <item label="座る" name="Sitting"/> + <item label="飛ぶ" name="Flying"/> </combo_box> <spinner label="イーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/> <spinner label="イーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/> diff --git a/indra/newview/skins/default/xui/ja/floater_associate_listing.xml b/indra/newview/skins/default/xui/ja/floater_associate_listing.xml new file mode 100644 index 0000000000..b106750a6f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="リストを関連付ける"> + <text name="message">リスト ID:</text> + <line_editor name="listing_id">ここに ID を入力</line_editor> + <button label="OK" name="OK"/> + <button label="取り消し" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_auction.xml b/indra/newview/skins/default/xui/ja/floater_auction.xml index e9aa287f2c..e9aa287f2c 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_auction.xml +++ b/indra/newview/skins/default/xui/ja/floater_auction.xml diff --git a/indra/newview/skins/default/xui/ja/floater_autoreplace.xml b/indra/newview/skins/default/xui/ja/floater_autoreplace.xml index 21abf59160..21abf59160 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/ja/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/ja/floater_avatar.xml b/indra/newview/skins/default/xui/ja/floater_avatar.xml index d289580506..d289580506 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml index 4bd6b4e053..4bd6b4e053 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml index 5c23b77498..5c23b77498 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/ja/floater_beacons.xml b/indra/newview/skins/default/xui/ja/floater_beacons.xml index a55698e3d0..a55698e3d0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_beacons.xml +++ b/indra/newview/skins/default/xui/ja/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/ja/floater_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml index 6865409e7a..6865409e7a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_build_options.xml +++ b/indra/newview/skins/default/xui/ja/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml index 1b5a745cc4..1b5a745cc4 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/ja/floater_bumps.xml b/indra/newview/skins/default/xui/ja/floater_bumps.xml index fd12a9e69a..fd12a9e69a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_bumps.xml +++ b/indra/newview/skins/default/xui/ja/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml index 7e4932c78f..7e4932c78f 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index a472f163e3..a472f163e3 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml index 37fd6826e5..37fd6826e5 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml index 34f9d38de1..34f9d38de1 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml index ce269df6da..ce269df6da 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml index 982e5ce42b..982e5ce42b 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_camera.xml +++ b/indra/newview/skins/default/xui/ja/floater_camera.xml diff --git a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml index 9f5df6fb85..9f5df6fb85 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/ja/floater_choose_group.xml b/indra/newview/skins/default/xui/ja/floater_choose_group.xml index 7d91cb69ed..7d91cb69ed 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/ja/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml index dc87d27a15..dc87d27a15 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/ja/floater_critical.xml b/indra/newview/skins/default/xui/ja/floater_critical.xml index f69c24622a..f69c24622a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_critical.xml +++ b/indra/newview/skins/default/xui/ja/floater_critical.xml diff --git a/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml index eb39d1b336..eb39d1b336 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/ja/floater_destinations.xml b/indra/newview/skins/default/xui/ja/floater_destinations.xml index b7f6ad4d4e..b7f6ad4d4e 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_destinations.xml +++ b/indra/newview/skins/default/xui/ja/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/ja/floater_display_name.xml b/indra/newview/skins/default/xui/ja/floater_display_name.xml index cc71b1cd9f..cc71b1cd9f 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_display_name.xml +++ b/indra/newview/skins/default/xui/ja/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml index fd601672b6..fd601672b6 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml new file mode 100644 index 0000000000..ac5b2839d1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="ホバー高さの設定"> + <slider label="高さ" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml index 68d0c70baa..68d0c70baa 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml index eddfbd4298..eddfbd4298 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/ja/floater_environment_settings.xml b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml index 0e3803119f..0e3803119f 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/ja/floater_event.xml b/indra/newview/skins/default/xui/ja/floater_event.xml index ca50ba8ef8..ca50ba8ef8 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_event.xml +++ b/indra/newview/skins/default/xui/ja/floater_event.xml diff --git a/indra/newview/skins/default/xui/ja/floater_experience_search.xml b/indra/newview/skins/default/xui/ja/floater_experience_search.xml new file mode 100644 index 0000000000..37f3da7d73 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="体験を選択"/> diff --git a/indra/newview/skins/default/xui/ja/floater_experienceprofile.xml b/indra/newview/skins/default/xui/ja/floater_experienceprofile.xml new file mode 100644 index 0000000000..7819b887db --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (なし) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="体験プロフィール"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="編集" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + 評価: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + 場所: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + 所有者: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + グループ: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="許可" name="allow_btn"/> + <button label="無視" name="forget_btn"/> + <button label="ブロック" name="block_btn"/> + <text name="privileged"> + この体験はすべての住人に対して有効です。 + </text> + <button label="嫌がらせの報告" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="名前:"/> + <text name="edit_experience_desc_label" value="説明:"/> + <button label="グループ" name="Group_btn"/> + <text name="edit_ContentRating"> + 評価: + </text> + <icons_combo_box label="Moderate" name="edit_ContentRatingText" tool_tip="体験のレーティング区分を上げると、体験を許可したすべての住人の権限がリセットされます。"> + <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="Moderate" name="Mature" value="21"/> + <icons_combo_box.item label="全般" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + 場所: + </text> + <button label="現在に設定" name="location_btn"/> + <button label="場所をクリア" name="clear_btn"/> + <check_box label="体験を有効にする" name="edit_enable_btn" tool_tip=""/> + <check_box label="検索で表示しない" name="edit_private_btn"/> + <text name="changes" value="体験がすべてのリージョンに表示されるには数分かかる場合があります。"/> + <button label="戻る" name="cancel_btn"/> + <button label="保存" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_experiences.xml b/indra/newview/skins/default/xui/ja/floater_experiences.xml new file mode 100644 index 0000000000..5186f8ee38 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="体験"/> diff --git a/indra/newview/skins/default/xui/ja/floater_facebook.xml b/indra/newview/skins/default/xui/ja/floater_facebook.xml index d99841f0de..76149a875e 100644 --- a/indra/newview/skins/default/xui/ja/floater_facebook.xml +++ b/indra/newview/skins/default/xui/ja/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="FACEBOOK に投稿"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="ステータス" name="panel_facebook_status"/> - <panel label="写真" name="panel_facebook_photo"/> - <panel label="チェックイン" name="panel_facebook_place"/> - <panel label="フレンド" name="panel_facebook_friends"/> - <panel label="アカウント" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - エラー - </text> - <text name="connection_loading_text"> - ロード中... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="ステータス" name="panel_facebook_status"/> + <panel label="写真" name="panel_facebook_photo"/> + <panel label="チェックイン" name="panel_facebook_place"/> + <panel label="フレンド" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + エラー + </text> + <text name="connection_loading_text"> + ロード中... + </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml index 5f538ecdb0..5f538ecdb0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/ja/floater_font_test.xml b/indra/newview/skins/default/xui/ja/floater_font_test.xml index b853f395dd..b853f395dd 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_font_test.xml +++ b/indra/newview/skins/default/xui/ja/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/ja/floater_gesture.xml b/indra/newview/skins/default/xui/ja/floater_gesture.xml index 1ed5ad31db..1ed5ad31db 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml index 9e5d473db7..9e5d473db7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml index c8b8e918e0..c8b8e918e0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/ja/floater_help_browser.xml b/indra/newview/skins/default/xui/ja/floater_help_browser.xml index 15200d7ef7..15200d7ef7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/ja/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/ja/floater_how_to.xml b/indra/newview/skins/default/xui/ja/floater_how_to.xml index 4cebe27226..4cebe27226 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_how_to.xml +++ b/indra/newview/skins/default/xui/ja/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/ja/floater_hud.xml b/indra/newview/skins/default/xui/ja/floater_hud.xml index e3841c2cd9..e3841c2cd9 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_hud.xml +++ b/indra/newview/skins/default/xui/ja/floater_hud.xml diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml index a155efdc1e..a155efdc1e 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_im_container.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml 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 7ed46f7f01..7ed46f7f01 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_im_session.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml index 1ffc27fd70..1ffc27fd70 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_import_collada.xml b/indra/newview/skins/default/xui/ja/floater_import_collada.xml index 65edafb169..65edafb169 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/ja/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml index 308f6f9a3d..308f6f9a3d 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/ja/floater_inspect.xml b/indra/newview/skins/default/xui/ja/floater_inspect.xml index b3825c0b7f..b3825c0b7f 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_inspect.xml +++ b/indra/newview/skins/default/xui/ja/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index c01c46211e..8d3a655a06 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="インベントリアイテムのプロパティ"> - <floater.string name="unknown"> - (不明) - </floater.string> - <floater.string name="public"> - (公共) - </floater.string> - <floater.string name="you_can"> - できること: - </floater.string> - <floater.string name="owner_can"> - オーナーは次のことができます: - </floater.string> - <floater.string name="acquiredDate"> - [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - 名前: - </text> - <text name="LabelItemDescTitle"> - 説明: - </text> - <text name="LabelCreatorTitle"> - クリエーター - </text> + <floater.string name="unknown">(不明)</floater.string> + <floater.string name="public">(公共)</floater.string> + <floater.string name="you_can">できること:</floater.string> + <floater.string name="owner_can">オーナーは次のことができます:</floater.string> + <floater.string name="acquiredDate">[year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">名前:</text> + <text name="LabelItemDescTitle">説明:</text> + <text name="LabelCreatorTitle">クリエーター</text> <button label="プロフィール..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - オーナー: - </text> + <text name="LabelOwnerTitle">オーナー:</text> <button label="プロフィール..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - 入手日時: - </text> - <text name="LabelAcquiredDate"> - 2006年5月24日水曜日12:50:46 - </text> - <text name="OwnerLabel"> - あなた: - </text> + <text name="LabelAcquiredTitle">入手日時:</text> + <text name="LabelAcquiredDate">2006年5月24日水曜日12:50:46</text> + <text name="OwnerLabel">あなた:</text> <check_box label="編集" name="CheckOwnerModify"/> <check_box label="コピー" name="CheckOwnerCopy"/> <check_box label="再販・プレゼント" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 全員: - </text> + <text name="AnyoneLabel">全員:</text> <check_box label="コピー" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - グループ: - </text> + <text name="GroupLabel">グループ:</text> <check_box label="共有" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="158"> - 次の所有者: - </text> + <text name="NextOwnerLabel" width="158">次の所有者:</text> <check_box label="編集" name="CheckNextOwnerModify"/> <check_box label="コピー" name="CheckNextOwnerCopy"/> <check_box label="再販・プレゼント" name="CheckNextOwnerTransfer"/> <check_box label="売り出し中" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="コンテンツ" name="Contents"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> <spinner label="価格:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml index af96edda79..19d767ab57 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="服" name="check_clothing"/> <check_box label="ジェスチャー" name="check_gesture"/> <check_box label="ランドマーク" name="check_landmark"/> - <check_box label="メッシュ" name="check_mesh"/> <check_box label="ノートカード" name="check_notecard"/> + <check_box label="メッシュ" name="check_mesh"/> <check_box label="オブジェクト" name="check_object"/> <check_box label="スクリプト" name="check_script"/> <check_box label="サウンド" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> -または- </text> + <radio_group name="date_search_direction"> + <radio_item label="より新しい" name="newer"/> + <radio_item label="より古い" name="older"/> + </radio_group> <spinner label="経過時間" name="spin_hours_ago"/> <spinner label="経過日数" name="spin_days_ago"/> <button label="閉じる" label_selected="閉じる" name="Close"/> diff --git a/indra/newview/skins/default/xui/ja/floater_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_item_properties.xml new file mode 100644 index 0000000000..c8648503d7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="アイテムのプロパティ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_joystick.xml b/indra/newview/skins/default/xui/ja/floater_joystick.xml index daa480ef5a..daa480ef5a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_joystick.xml +++ b/indra/newview/skins/default/xui/ja/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml index e3546cd837..dd51d64ed2 100644 --- a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_lagmeter" title="ラグメーター"> <floater.string name="max_title_msg"> - ラグ メーター + ラグ計測器 </floater.string> <floater.string name="max_width_px"> - 350 + 360 </floater.string> <floater.string name="min_title_msg"> ラグ @@ -22,28 +22,28 @@ 15 </floater.string> <floater.string name="client_frame_time_window_bg_msg"> - ノーマル、ウィンドウは背景に + 標準、ウィンドウは背景に </floater.string> <floater.string name="client_frame_time_critical_msg"> - クライアント フレームレート < [CLIENT_FRAME_RATE_CRITICAL] + クライアントのフレームレートが [CLIENT_FRAME_RATE_CRITICAL] 以下 </floater.string> <floater.string name="client_frame_time_warning_msg"> - クライアント フレームレート: [CLIENT_FRAME_RATE_CRITICAL] ~ [CLIENT_FRAME_RATE_WARNING] + クライアントのフレーム レートが [CLIENT_FRAME_RATE_CRITICAL] と [CLIENT_FRAME_RATE_WARNING] の間 </floater.string> <floater.string name="client_frame_time_normal_msg"> - ノーマル + 標準 </floater.string> <floater.string name="client_draw_distance_cause_msg"> - 考えられる原因: 描画距離の設定が大きすぎる + 考えられる原因:描画距離の設定が高すぎる </floater.string> <floater.string name="client_texture_loading_cause_msg"> - 考えられる原因: 画像のロード中 + 考えられる原因:画像のロード中 </floater.string> <floater.string name="client_texture_memory_cause_msg"> - 考えられる原因: メモリ内の画像数が多すぎる + 考えられる原因:メモリ内に画像が多すぎる </floater.string> <floater.string name="client_complex_objects_cause_msg"> - 考えられる原因: 画面に含まれる複雑なオブジェクトが多すぎる + 考えられる原因:シーンに複雑なオブジェクトが多すぎる </floater.string> <floater.string name="network_text_msg"> ネットワーク @@ -55,13 +55,13 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - 接続でドロップされるパケットの割合: > [NETWORK_PACKET_LOSS_CRITICAL] + 接続で [NETWORK_PACKET_LOSS_CRITICAL]% を超えるパケットが脱落しています </floater.string> <floater.string name="network_packet_loss_warning_msg"> - 接続でドロップされるパケットの割合:[NETWORK_PACKET_LOSS_WARNING] ~ [NETWORK_PACKET_LOSS_CRITICAL] + 接続で [NETWORK_PACKET_LOSS_WARNING]%~[NETWORK_PACKET_LOSS_CRITICAL]% のパケットが脱落しています </floater.string> <floater.string name="network_performance_normal_msg"> - ノーマル + 標準 </floater.string> <floater.string name="network_ping_critical_ms"> 600 @@ -70,16 +70,16 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - 接続の ping 時間: > [NETWORK_PING_CRITICAL] ミリ秒 + 接続の ping 時間が [NETWORK_PING_CRITICAL] ms 以上です </floater.string> <floater.string name="network_ping_warning_msg"> - 接続の ping 時間: [NETWORK_PING_WARNING] ~ [NETWORK_PING_CRITICAL] ミリ秒 + 接続の ping 時間が [NETWORK_PING_WARNING]~[NETWORK_PING_CRITICAL] ms です </floater.string> <floater.string name="network_packet_loss_cause_msg"> - 接続不良になっているか、帯域幅設定が高すぎます。 + 接続不良または '帯域幅' の設定が高すぎる可能性があります </floater.string> <floater.string name="network_ping_cause_msg"> - 接続不良になっているか、ファイル共有アプリケーションに問題があります。 + 接続不良またはファイル共有アプリの可能性があります。 </floater.string> <floater.string name="server_text_msg"> サーバー @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - シミュレーターのフレームレート: < [SERVER_FRAME_RATE_CRITICAL] + シミュレータのフレームレートが [SERVER_FRAME_RATE_CRITICAL] 以下 </floater.string> <floater.string name="server_frame_time_warning_msg"> - シミュレーターのフレームレート: [SERVER_FRAME_RATE_CRITICAL] ~ [SERVER_FRAME_RATE_WARNING] + シミュレータのフレームレートが [SERVER_FRAME_RATE_CRITICAL] ~ [SERVER_FRAME_RATE_WARNING] の間 </floater.string> <floater.string name="server_frame_time_normal_msg"> - ノーマル + 標準 </floater.string> <floater.string name="server_physics_cause_msg"> - 考えられる原因: 物理的オブジェクトが多すぎる + 考えられる原因:物理オブジェクトが多すぎる </floater.string> <floater.string name="server_scripts_cause_msg"> - 考えられる原因: スクリプトを含むオブジェクトが多すぎる + 考えられる原因:スクリプトオブジェクトが多すぎる </floater.string> <floater.string name="server_net_cause_msg"> - 考えられる原因: ネットワーク トラフィック過大 + 考えられる原因:ネットワークトラフィックが多すぎる </floater.string> <floater.string name="server_agent_cause_msg"> - 考えられる原因: 地域内にて動いているアバターが多すぎる + 考えられる原因:リージョン内の人の移動が多すぎる </floater.string> <floater.string name="server_images_cause_msg"> - 考えられる原因: 画像計算が多すぎる + 考えられる原因:画像計算が多すぎる </floater.string> <floater.string name="server_generic_cause_msg"> - 考えられる原因: シミュレーターの過負荷 + 考えられる原因:シミュレータのロードが重すぎる </floater.string> <floater.string name="smaller_label"> >> @@ -131,21 +131,21 @@ クライアント </text> <text name="client_text"> - ノーマル + 標準 </text> <button name="network_lagmeter" tool_tip="ネットワーク ラグ ステータス"/> <text name="network"> ネットワーク </text> <text name="network_text"> - ノーマル + 標準 </text> <button name="server_lagmeter" tool_tip="サーバー ラグ ステータス"/> <text name="server"> サーバー </text> <text name="server_text"> - ノーマル + 標準 </text> - <button label=">> " name="minimize" tool_tip="フローターのサイズをトグル"/> + <button label=">>" name="minimize" tool_tip="フローターのサイズをトグル"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml index aca916f22f..aca916f22f 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml index 5a155c9f12..864feef8cc 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> スクリプト: [NAME] </floater.string> + <floater.string name="experience_enabled"> + オフにして、現在の体験を削除する + </floater.string> + <floater.string name="no_experiences"> + どの体験にも権限がありません + </floater.string> + <floater.string name="add_experiences"> + 選択して、体験を追加する + </floater.string> + <floater.string name="show_experience_profile"> + クリックして、体験プロフィールを表示する + </floater.string> + <floater.string name="loading"> + ロード中... + </floater.string> <button label="リセット" label_selected="リセット" name="Reset"/> <check_box initial_value="true" label="実行中" name="running"/> <check_box initial_value="true" label="Mono" name="mono"/> + <check_box label="次の体験を使用:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml index 5773752788..5773752788 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml index 1122203446..1122203446 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_map.xml diff --git a/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml new file mode 100644 index 0000000000..f6b8e2928e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="マーケットプレイスのリスト"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">ロード中...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml new file mode 100644 index 0000000000..164864ed4e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="マーケットプレイスのリストの監査"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml index c4731b73a3..c4731b73a3 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/ja/floater_media_settings.xml b/indra/newview/skins/default/xui/ja/floater_media_settings.xml index 46ac1a8dfd..46ac1a8dfd 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml index f48bb94e32..f48bb94e32 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml index c59a3dc0ab..c59a3dc0ab 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml index 942cc91317..942cc91317 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml index aed3b78a14..aed3b78a14 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_moveview.xml +++ b/indra/newview/skins/default/xui/ja/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_mute_object.xml b/indra/newview/skins/default/xui/ja/floater_mute_object.xml index 04ffd5254d..04ffd5254d 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml index c9a0ecefd7..c9a0ecefd7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml index d708fc3dec..d708fc3dec 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/floater_notification.xml b/indra/newview/skins/default/xui/ja/floater_notification.xml index 0f37b30f52..0f37b30f52 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_notification.xml +++ b/indra/newview/skins/default/xui/ja/floater_notification.xml diff --git a/indra/newview/skins/default/xui/ja/floater_notifications_console.xml b/indra/newview/skins/default/xui/ja/floater_notifications_console.xml index c9d9ea7acb..c9d9ea7acb 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/ja/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml index d727a268fb..d727a268fb 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/ja/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/ja/floater_openobject.xml b/indra/newview/skins/default/xui/ja/floater_openobject.xml index af02ffedda..3f2f71511b 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ja/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="インベントリにコピー" label_selected="インベントリにコピー" name="copy_to_inventory_button"/> - <button label="コピーして装着" label_selected="コピーして装着" name="copy_and_wear_button"/> + <text name="border_note"> + インベントリおよびウェアにコピー + </text> + <button label="アウトフィットに追加" label_selected="アウトフィットに追加" name="copy_and_wear_button"/> + <button label="アウトフィットを交換" label_selected="アウトフィットを交換" name="copy_and_replace_button"/> + <button label="インベントリにコピーするだけ" label_selected="インベントリにコピーするだけ" name="copy_to_inventory_button"/> + <button label="取り消し" label_selected="取り消し" name="cancel_button"/> </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 index 70555e6ded..70555e6ded 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml index f1a05e0eec..f1a05e0eec 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml index ada96b5b62..ada96b5b62 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml index ec107f3e6b..ec107f3e6b 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml index 4441d5e738..4441d5e738 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml index 17965fb60a..0ca0990bd4 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_pay.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - グループに支払う - </string> - <string name="payee_resident"> - 住人に支払う - </string> - <text name="payee_label"> - 支払う: - </text> - <icon name="icon_person" tool_tip="住人"/> - <text name="payee_name"> - 非常に長い名前が途中で切れていないかをテストして確認 - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 金額を指定: - </text> - <button label="支払う" label_selected="支払う" name="pay btn"/> - <button label="取り消し" label_selected="取り消し" name="cancel btn"/> + <string name="payee_group">グループに支払う</string> + <string name="payee_resident">住人に支払う</string> + <text name="paying_text">支払中:</text> + <text name="payee_name">非常に長い名前が途中で切れていないかをテストして確認</text> + <panel label="検索" name="PatternsPanel"> + <button label="L$ 1 支払う" label_selected="L$ 1 支払う" name="fastpay 1"/> + <button label="L$ 5 支払う" label_selected="L$ 5 支払う" name="fastpay 5"/> + <button label="L$ 10 支払う" label_selected="L$ 10 支払う" name="fastpay 10"/> + <button label="L$ 20 支払う" label_selected="L$ 20 支払う" name="fastpay 20"/> + </panel> + <panel label="検索" name="InputPanel"> + <text name="amount text">その他の金額:</text> + <button label="支払い" label_selected="支払い" name="pay btn"/> + <button label="取り消し" label_selected="取り消し" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_pay_object.xml b/indra/newview/skins/default/xui/ja/floater_pay_object.xml index 637ad496ef..3331cee0e0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - グループに支払う - </string> - <string name="payee_resident"> - 住人に支払う - </string> - <icon name="icon_person" tool_tip="住人"/> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - オブジェクトを介して: - </text> + <string name="payee_group">グループに支払う</string> + <string name="payee_resident">住人に支払う</string> + <text name="paying_text">支払中:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">オブジェクトを介して:</text> <icon name="icon_object" tool_tip="オブジェクト"/> - <text name="object_name_text"> - ... - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 金額を指定: - </text> - <button label="支払い" label_selected="支払い" name="pay btn"/> - <button label="取り消し" label_selected="取り消し" name="cancel btn"/> + <text name="object_name_text">...</text> + <panel label="検索" name="PatternsPanel"> + <button label="L$ 1 支払う" label_selected="L$ 1 支払う" name="fastpay 1"/> + <button label="L$ 5 支払う" label_selected="L$ 5 支払う" name="fastpay 5"/> + <button label="L$ 10 支払う" label_selected="L$ 10 支払う" name="fastpay 10"/> + <button label="L$ 20 支払う" label_selected="L$ 20 支払う" name="fastpay 20"/> + </panel> + <panel label="検索" name="InputPanel"> + <text name="amount text">その他の金額:</text> + <button label="支払い" label_selected="支払い" name="pay btn"/> + <button label="取り消し" label_selected="取り消し" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml index b180658ab7..b180658ab7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_people.xml +++ b/indra/newview/skins/default/xui/ja/floater_people.xml diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml index 98cda25a81..98cda25a81 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/ja/floater_picks.xml b/indra/newview/skins/default/xui/ja/floater_picks.xml index 359585eb86..359585eb86 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_picks.xml +++ b/indra/newview/skins/default/xui/ja/floater_picks.xml diff --git a/indra/newview/skins/default/xui/ja/floater_places.xml b/indra/newview/skins/default/xui/ja/floater_places.xml index 0d167444db..0d167444db 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_places.xml +++ b/indra/newview/skins/default/xui/ja/floater_places.xml diff --git a/indra/newview/skins/default/xui/ja/floater_post_process.xml b/indra/newview/skins/default/xui/ja/floater_post_process.xml index 7c4d9c78ee..7c4d9c78ee 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_post_process.xml +++ b/indra/newview/skins/default/xui/ja/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml index d48a8241ec..d48a8241ec 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml index 4638fd002e..4638fd002e 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml index a3042f66ea..a3042f66ea 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml index 59ce36b022..59ce36b022 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml index ae8ae9f7b5..ae8ae9f7b5 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml index 5c0f05cec6..5c0f05cec6 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml index 4617fd1d92..4617fd1d92 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml index 10a46247a7..10a46247a7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/ja/floater_publish_classified.xml b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml index f33406da51..f33406da51 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml b/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml index 4edb4972e4..4edb4972e4 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/ja/floater_region_info.xml b/indra/newview/skins/default/xui/ja/floater_region_info.xml index d08c51c61e..d08c51c61e 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_region_info.xml +++ b/indra/newview/skins/default/xui/ja/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml index 9021be5dda..7631cd7aba 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml @@ -76,7 +76,7 @@ <combo_box.item label="土地 > 不法侵入 > オブジェクトまたはテクスチャ" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="土地>不法侵入>パーティクル" name="Land__Encroachment__Particles"/> <combo_box.item label="土地>不法侵入>樹木/植物" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="賭けまたはギャンブル" name="Wagering_gambling"/> + <combo_box.item label="ゲーミング ポリシー違反" name="Wagering_gambling"/> <combo_box.item label="その他" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug.xml b/indra/newview/skins/default/xui/ja/floater_script_debug.xml index 0ac7a988e0..0ac7a988e0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/ja/floater_script_limits.xml b/indra/newview/skins/default/xui/ja/floater_script_limits.xml index 7ccd858af7..7ccd858af7 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/ja/floater_script_preview.xml b/indra/newview/skins/default/xui/ja/floater_script_preview.xml index 656357aa17..656357aa17 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_script_queue.xml b/indra/newview/skins/default/xui/ja/floater_script_queue.xml index 97e79fb483..97e79fb483 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/ja/floater_script_search.xml b/indra/newview/skins/default/xui/ja/floater_script_search.xml index bc4f48c995..bc4f48c995 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_script_search.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml index 0723be0068..0723be0068 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_search.xml +++ b/indra/newview/skins/default/xui/ja/floater_search.xml diff --git a/indra/newview/skins/default/xui/ja/floater_select_key.xml b/indra/newview/skins/default/xui/ja/floater_select_key.xml index d41be86873..d41be86873 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_select_key.xml +++ b/indra/newview/skins/default/xui/ja/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml index aa368eef11..aa368eef11 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/ja/floater_settings_debug.xml b/indra/newview/skins/default/xui/ja/floater_settings_debug.xml index cb7950bf53..cb7950bf53 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/ja/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index 7d0fb27932..f04193d034 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> コンピュータに保存できませんでした。 </string> - <button name="advanced_options_btn" tool_tip="詳しい設定"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [SIZE] キロバイト - </text> + <button label="更新" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - 詳しい設定 - </text> <text name="layer_type_label"> キャプチャ: </text> @@ -68,4 +59,10 @@ <combo_box.item label="フィルターなし" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH]px (横幅) x [HEIGHT]px (高さ) + </text> + <text name="file_size_label"> + [SIZE] キロバイト + </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml index 28d2388bed..28d2388bed 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml index 7d83309c46..7d83309c46 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/ja/floater_spellcheck.xml b/indra/newview/skins/default/xui/ja/floater_spellcheck.xml index 31fbef9bcf..31fbef9bcf 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/ja/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml index febe153d25..febe153d25 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml index 3bc343639b..3bc343639b 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_stats.xml +++ b/indra/newview/skins/default/xui/ja/floater_stats.xml diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml index 45e97bdf5d..45e97bdf5d 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml index 7318083771..7318083771 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml index 31b5bbd3bf..31b5bbd3bf 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml index 40fd8e9f93..40fd8e9f93 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml index 37233d3e68..37233d3e68 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml index adc35137b5..adc35137b5 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index eeaa361649..eeaa361649 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml diff --git a/indra/newview/skins/default/xui/ja/floater_top_objects.xml b/indra/newview/skins/default/xui/ja/floater_top_objects.xml index c44f409d4e..cc81ead116 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/ja/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> 何も見つかりませんでした。 </floater.string> + <floater.string name="URLs"> + URL + </floater.string> + <floater.string name="memory"> + メモリ(KB) + </floater.string> <text name="title_text"> ロード中... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="所有者" name="owner"/> <scroll_list.columns label="ロケーション" name="location"/> <scroll_list.columns label="区画" name="parcel"/> - <scroll_list.columns label="時間" name="time"/> + <scroll_list.columns label="日付" name="time"/> <scroll_list.columns label="URL" name="URLs"/> <scroll_list.columns label="メモリ(KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/ja/floater_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml index ae064724c0..ae064724c0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_tos.xml +++ b/indra/newview/skins/default/xui/ja/floater_tos.xml diff --git a/indra/newview/skins/default/xui/ja/floater_toybox.xml b/indra/newview/skins/default/xui/ja/floater_toybox.xml index 682352ec82..682352ec82 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_toybox.xml +++ b/indra/newview/skins/default/xui/ja/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/ja/floater_translation_settings.xml b/indra/newview/skins/default/xui/ja/floater_translation_settings.xml index 27143086ac..27143086ac 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/ja/floater_twitter.xml b/indra/newview/skins/default/xui/ja/floater_twitter.xml index 7cd71df800..6df2045554 100644 --- a/indra/newview/skins/default/xui/ja/floater_twitter.xml +++ b/indra/newview/skins/default/xui/ja/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="作成" name="panel_twitter_photo"/> - <panel label="アカウント" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - エラー - </text> - <text name="connection_loading_text"> - ロード中... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="作成" name="panel_twitter_photo"/> + <panel label="アカウント" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + エラー + </text> + <text name="connection_loading_text"> + ロード中... + </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_url_entry.xml b/indra/newview/skins/default/xui/ja/floater_url_entry.xml index 8e09e4748a..8e09e4748a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/ja/floater_url_entry.xml 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 f7d3fd11e0..f7d3fd11e0 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml index b38ea9331a..b38ea9331a 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/ja/floater_web_content.xml b/indra/newview/skins/default/xui/ja/floater_web_content.xml index 48fe8aee78..48fe8aee78 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_web_content.xml +++ b/indra/newview/skins/default/xui/ja/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml index 34aba9d485..34aba9d485 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml index 416813d6cc..416813d6cc 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_window_size.xml +++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml index cc07596adc..cc07596adc 100755..100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml index 42b67cd333..42b67cd333 100755..100644 --- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml index be628befdf..be628befdf 100755..100644 --- a/indra/newview/skins/default/xui/ja/inspect_group.xml +++ b/indra/newview/skins/default/xui/ja/inspect_group.xml diff --git a/indra/newview/skins/default/xui/ja/inspect_object.xml b/indra/newview/skins/default/xui/ja/inspect_object.xml index e6999ac9b1..e6999ac9b1 100755..100644 --- a/indra/newview/skins/default/xui/ja/inspect_object.xml +++ b/indra/newview/skins/default/xui/ja/inspect_object.xml diff --git a/indra/newview/skins/default/xui/ja/inspect_remote_object.xml b/indra/newview/skins/default/xui/ja/inspect_remote_object.xml index 483d3fec52..483d3fec52 100755..100644 --- a/indra/newview/skins/default/xui/ja/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/ja/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml index 91e8f4be7c..91e8f4be7c 100755..100644 --- a/indra/newview/skins/default/xui/ja/language_settings.xml +++ b/indra/newview/skins/default/xui/ja/language_settings.xml diff --git a/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml index 982a03c6a8..982a03c6a8 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index 930af10692..930af10692 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index d87ef8e2a0..e7aa3cfc30 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="容姿" name="Change Outfit"/> <menu_item_call label="アウトフィットの編集" name="Edit Outfit"/> <menu_item_call label="シェイプの編集" name="Edit My Shape"/> + <menu_item_call label="ホバー高さ" name="Hover Height"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index 80ce080e39..80ce080e39 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index f9cadc36ac..f9cadc36ac 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml 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 eb8e98059a..a14cfd5876 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="容姿" name="Chenge Outfit"/> <menu_item_call label="アウトフィットを編集" name="Edit Outfit"/> <menu_item_call label="シェイプを編集" name="Edit My Shape"/> + <menu_item_call label="ホバー高さ" name="Hover Height"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml index e786d02e40..e786d02e40 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml index eb5faa2545..eb5faa2545 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml index d984342896..d984342896 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml index 07bcefd9b3..07bcefd9b3 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_edit.xml b/indra/newview/skins/default/xui/ja/menu_edit.xml index c2ef0179b2..c2ef0179b2 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_edit.xml +++ b/indra/newview/skins/default/xui/ja/menu_edit.xml diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml index 4708b1446c..4708b1446c 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_favorites.xml +++ b/indra/newview/skins/default/xui/ja/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml index abf490a247..abf490a247 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml index 3787f7d645..3787f7d645 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml index 2e633ae1b2..2e633ae1b2 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml index 8cd6fa4a27..8cd6fa4a27 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml index 5bcb96f083..5bcb96f083 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 5453f998fa..5453f998fa 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml index 9d0d0f10a6..9d0d0f10a6 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml index 5a0519ba19..5a0519ba19 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml index e3e206f3aa..e3e206f3aa 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml index 9a4a8138f5..9a4a8138f5 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 8d6c983aa7..9a68ed8a6b 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="リストを作成" name="Marketplace Create Listing"/> + <menu_item_call label="リストを関連付け" name="Marketplace Associate Listing"/> + <menu_item_call label="リストを取得 (更新)" name="Marketplace Get Listing"/> + <menu_item_call label="エラーを確認" name="Marketplace Check Listing"/> + <menu_item_call label="リストを編集" name="Marketplace Edit Listing"/> + <menu_item_call label="リスト" name="Marketplace List"/> + <menu_item_call label="リストから取り除く" name="Marketplace Unlist"/> + <menu_item_call label="有効にする" name="Marketplace Activate"/> + <menu_item_call label="無効にする" name="Marketplace Deactivate"/> <menu_item_call label="共有" name="Share"/> <menu_item_call label="購入" name="Task Buy"/> <menu_item_call label="開く" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="追加" name="Wearable Add"/> <menu_item_call label="取り外す" name="Take Off"/> <menu_item_call label="マーチャントのアウトボックスにコピー" name="Merchant Copy"/> - <menu_item_call label="マーケットプレイスに送信" name="Marketplace Send"/> + <menu_item_call label="マーケットプレイスのリストにコピー" name="Marketplace Copy"/> + <menu_item_call label="マーケットプレイスのリストに移動" name="Marketplace Move"/> <menu_item_call label="--オプションなし--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index ae5ddbb78f..ae5ddbb78f 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index f38dbc71a8..18478b5711 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="新しい順に並べ替え" name="sort_by_recent"/> <menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/> <menu_item_check label="システムフォルダを上にソートする" name="sort_system_folders_to_top"/> - <menu_item_call label="フィルターを表示" name="show_filters"/> + <menu_item_call label="フィルターを表示..." name="show_filters"/> <menu_item_call label="フィルターをリセット" name="reset_filters"/> <menu_item_call label="すべてのフォルダを閉じる" name="close_folders"/> <menu_item_call label="紛失物を空にする" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml index 3754bd7fa4..3754bd7fa4 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_land.xml +++ b/indra/newview/skins/default/xui/ja/menu_land.xml diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml index c134422955..c134422955 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index cd8bd52f91..cd8bd52f91 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml diff --git a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml new file mode 100644 index 0000000000..ad36aa3f77 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="在庫高順に並べ替え (低から高へ)" name="sort_by_stock_amount"/> + <menu_item_check label="リストフォルダのみ表示" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml index faae4ef717..faae4ef717 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml index 2e733ee24b..2e733ee24b 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml index 43f86e84bf..43f86e84bf 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml index 9ae2e58198..9ae2e58198 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml index c2e4a27686..c2e4a27686 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml index 913bae8958..913bae8958 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index ae02edefe2..ae02edefe2 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml index 6448e9244e..6448e9244e 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml index 1969ae2a10..1969ae2a10 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml index 9491c22f31..9491c22f31 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml 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 64d8ded722..64d8ded722 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml index 76340e4d76..76340e4d76 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml index 2c0c85ba28..2c0c85ba28 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml index bfc7d15017..bfc7d15017 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index 972ab767bf..972ab767bf 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml index fe85e278cf..fe85e278cf 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml index 44c5438509..44c5438509 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml index b4f177a068..b4f177a068 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml index 011d3d2526..011d3d2526 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_picks.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks.xml diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml index 84bf90fea0..84bf90fea0 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml index a9f05e126d..a9f05e126d 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_place.xml +++ b/indra/newview/skins/default/xui/ja/menu_place.xml diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml index d5ce88b055..d5ce88b055 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml index c455204722..c455204722 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml index 579f2c2cbd..579f2c2cbd 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index 9d3a5dda1c..9d3a5dda1c 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml index 6513d9264a..6513d9264a 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml index a89dd0bcbe..a89dd0bcbe 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml index 61ba3085d9..61ba3085d9 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml index 901eab9166..901eab9166 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml index 61642048b8..61642048b8 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml index 4dd44d2ec8..4dd44d2ec8 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml index eda973c888..eda973c888 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/ja/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml index d5363a5131..d5363a5131 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml index 1a67a2a8f7..1a67a2a8f7 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index 639602ce3c..639602ce3c 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_experience.xml b/indra/newview/skins/default/xui/ja/menu_url_experience.xml new file mode 100644 index 0000000000..582784c2f0 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml index 1dd3d79438..1dd3d79438 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml index c3da8a8686..c3da8a8686 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml index 147ab44a1b..147ab44a1b 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml index 8d41e1a571..8d41e1a571 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index a02ca8415d..a02ca8415d 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml index 8d264059d3..8d264059d3 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml index a516c5a075..a516c5a075 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml index 2c857ec915..2c857ec915 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml index c3507a9a33..c3507a9a33 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 0b85c693f0..0384dc1efc 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="新しいインベントリウィンドウ" name="NewInventoryWindow"/> <menu_item_call label="場所..." name="Places"/> <menu_item_call label="ピック..." name="Picks"/> + <menu_item_call label="体験..." name="Experiences"/> <menu_item_call label="カメラコントロール..." name="Camera Controls"/> <menu label="ムーブメント" name="Movement"> <menu_item_call label="座る" name="Sit Down Here"/> <menu_item_check label="飛ぶ" name="Fly"/> <menu_item_check label="常に走る" name="Always Run"/> <menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/> - <menu_item_call label="歩行/走行/飛行..." name="Walk / run / fly"/> + <menu_item_call label="歩行/走行/飛行..." name="WalkRunFly"/> </menu> <menu label="ログイン" name="Status"> <menu_item_check label="一時退席中" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="L$ の購入..." name="Buy and Sell L$"/> <menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/> + <menu_item_call label="マーケティングプレイスのリスト..." name="MarketplaceListings"/> <menu_item_call label="マイアカウント..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/> </menu_item_call> @@ -48,7 +50,7 @@ <menu_item_check label="フレンド" name="My Friends"/> <menu_item_check label="グループ" name="My Groups"/> <menu_item_check label="近くにいる人" name="Active Speakers"/> - <menu_item_call label="リストをブロック" name="Block List"/> + <menu_item_check label="リストをブロック" name="Block List"/> <menu_item_check label="着信拒否" name="Do Not Disturb"/> </menu> <menu label="世界" name="World"> @@ -62,7 +64,7 @@ <menu_item_call label="スナップショット" name="Take Snapshot"/> <menu_item_call label="場所のプロフィール" name="Place Profile"/> <menu_item_call label="土地情報" name="About Land"/> - <menu_item_call label="地域 / 不動産" name="Region/Estate"/> + <menu_item_call label="地域 / 不動産" name="RegionEstate"/> <menu_item_call label="保有地..." name="My Land"/> <menu_item_call label="この土地を購入" name="Buy Land"/> <menu label="表示" name="LandShow"> @@ -250,6 +252,7 @@ <menu_item_check label="テクスチャのコンソール" name="Texture Console"/> <menu_item_check label="デバッグコンソール" name="Debug Console"/> <menu_item_call label="通知コンソール" name="Notifications"/> + <menu_item_check label="地域デバッグコンソール" name="Region Debug Console"/> <menu_item_check label="ファーストタイマー" name="Fast Timers"/> <menu_item_check label="メモリ" name="Memory"/> <menu_item_check label="風景の統計" name="Scene Statistics"/> @@ -353,7 +356,7 @@ <menu_item_check label="挿入されたオブジェクトの位置の Ping" name="Ping Interpolate Object Positions"/> <menu_item_call label="パケットドロップ" name="Drop a Packet"/> </menu> - <menu_item_call label="スクリプト付きカメラをダンプ" name="Dump Scripted Camera"/> + <menu_item_call label="スクリプト付きカメラをダンプ" name="Dump Scripted Camera"/> <menu label="レコーダー" name="Recorder"> <menu_item_call label="再生開始" name="Start Playback"/> <menu_item_call label="再生停止" name="Stop Playback"/> 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 c402fa0b6d..c402fa0b6d 100755..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 diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml index 5334042dc9..5334042dc9 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml index 9effed1f42..9effed1f42 100755..100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 54663a0367..bfc8d0b724 100755..100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <mimetypes name="default"> <widgetset name="web"> <label name="web_label"> @@ -27,7 +27,7 @@ コンテンツなし </label> <tooltip name="none_tooltip"> - メディアなし + ここにメディアなし </tooltip> </widgetset> <widgetset name="image"> diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml index 0ec1030113..cb1e48148f 100755..100644 --- a/indra/newview/skins/default/xui/ja/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -44,6 +44,14 @@ このロケーションのオーディオを再生する </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + コンテンツなし + </label> + <tooltip name="none_tooltip"> + ここにメディアなし + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> リアルタイム・ストリーミング diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml index 0ec1030113..cb1e48148f 100755..100644 --- a/indra/newview/skins/default/xui/ja/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -44,6 +44,14 @@ このロケーションのオーディオを再生する </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + コンテンツなし + </label> + <tooltip name="none_tooltip"> + ここにメディアなし + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> リアルタイム・ストリーミング diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 1d52b42039..5f0ce7a73b 100755..100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -72,6 +72,10 @@ [MESSAGE] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。 <usetemplate name="okbutton" yestext="OK"/> @@ -124,6 +128,88 @@ システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。後でもう一度お試しください。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + 在庫フォルダへのコピーまたは移動がエラーにより失敗しました: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + マーケットプレイスのリストへのコピーまたは移動がエラーにより失敗しました: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + マーケットプレイスによる取引が次のエラーにより失敗しました: + +理由:'[ERROR_REASON]' +[ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + この製品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。リストを編集するか、リストフォルダにエラーがないか確認してください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + マーケットプレイスへのリスト表示が次のエラーで失敗しました : + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + このバージョンフォルダの有効化が次のエラーにより失敗しました : + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + この操作により、このリストの有効な内容が変更されます。続けますか? + <usetemplate ignoretext="マーケットプレイスで有効なリストを変更する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + マーケットプレイスのリストウィンドウにドラッグしたアイテムは元の場所からコピーされるのではなく、移動します。続けますか? + <usetemplate ignoretext="アイテムをインベントリからマーケットプレイスに移動する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けますか? + <usetemplate ignoretext="マーケットプレイスからリストを移動または削除する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + これらのアイテムの 1 つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、置き去りにすることはできます。 + <usetemplate canceltext="取り消し" ignoretext="コピー付加アイテムを含む選択内容をマーケットプレイスへコピーする前に確認する" name="yesnocancelbuttons" notext="アイテムを移動しない" yestext="アイテムを移動"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + この操作により、このリストが削除されます。続けますか? + <usetemplate ignoretext="マーケットプレイスで有効なリストを削除する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + この操作により、現在のリストのバージョンフォルダが無効になります。続けますか? + <usetemplate ignoretext="マーケットプレイスでリストのバージョンフォルダを無効にする前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + このリストをアップデートできませんでした。 +[[URL] ここをクリック] してマーケットプレイスで編集します。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + マーケットプレイスのリストフォルダにある衣服やボディパーツを着用できません。 + </notification> + <notification name="AlertMerchantListingInvalidID"> + リスト ID が無効です。 + </notification> + <notification name="AlertMerchantListingActivateRequired"> + このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 + <usetemplate ignoretext="複数のバージョンフォルダのあるリストを作成するときに、バージョンフォルダの有効化に関する警告が表示されます" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 + <usetemplate ignoretext="リストに表示する前に在庫フォルダが分割されると、警告が表示されます" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 + <usetemplate ignoretext="在庫フォルダが空のためにリストが表示されないと警告が表示されます" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 [REASON] @@ -491,6 +577,10 @@ L$ が不足しているのでこのグループに参加することができ 変更を保存しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/> </notification> + <notification name="DeleteNotecard"> + ノートカードを削除しますか? + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> ジェスチャーの保存に失敗しました。 ステップが多すぎます。 @@ -597,6 +687,9 @@ L$ が不足しているのでこのグループに参加することができ <notification name="RegionNoTerraforming"> [REGION] では、地形の変更ができません。 </notification> + <notification name="ParcelNoTerraforming"> + あなたには [PARCEL] 区画を地形編集する許可がありません。 + </notification> <notification name="CannotCopyWarning"> あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたのインベントリから削除されます。本当にこれらのアイテムを譲りますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> @@ -1863,6 +1956,30 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ 不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> + <notification label="不動産を選択" name="EstateAllowedExperienceAdd"> + この不動産の許可リストにのみ追加しますか、それとも [ALL_ESTATES] の許可リストに追加しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> + <notification label="不動産を選択" name="EstateAllowedExperienceRemove"> + この不動産の許可リストからのみ削除しますか、それとも [ALL_ESTATES] の許可リストから削除しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> + <notification label="不動産を選択" name="EstateBlockedExperienceAdd"> + この不動産のブロックされたリストにのみ追加しますか、それとも [ALL_ESTATES] のブロックされたリストに追加しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> + <notification label="不動産を選択" name="EstateBlockedExperienceRemove"> + この不動産のブロックされたリストからのみ削除しますか、それとも [ALL_ESTATES] のブロックされたリストから削除しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> + <notification label="不動産を選択" name="EstateTrustedExperienceAdd"> + この不動産のキー体験リストにのみ追加しますか、それとも [ALL_ESTATES] のキー体験リストに追加しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> + <notification label="不動産を選択" name="EstateTrustedExperienceRemove"> + この不動産の信頼済み体験リストからのみ削除しますか、それとも [ALL_ESTATES] の信頼済みリストから削除しますか? + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> + </notification> <notification label="キックを確認" name="EstateKickUser"> この不動産から [EVIL_USER] を追い出しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> @@ -1875,6 +1992,9 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ 訪問しようとしている地域(リージョン)には現在の環境設定を超えるコンテンツが含まれています。「ミー」 > 「環境設定」 > 「一般」を選択して、環境設定を変更できます。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> 訪問しようとしている地域(リージョン)には、成人のみアクセスできる [REGIONMATURITY] コンテンツが含まれています。 <url name="url"> @@ -1937,6 +2057,10 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ あなたの環境設定がサーバーと同期していないため、テレポートに技術的な問題が発生しています。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + リージョンに入ることができません。'[REGION_NAME]' はスキル ゲーミング リージョンであり、あなたはこのリージョンに入るための特定の基準を満たす必要があります。詳しくは、[http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life スキル ゲーミングのよくある質問] を参照してください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> 今後、[RATING] コンテンツ付きの地域(リージョン)を訪問しようとしているという通知を受け取りません。後でメニューバーの「ミー」 > 「環境設定」 > 「一般」を使用して、コンテンツの環境設定を変更できます。 <usetemplate name="okbutton" yestext="OK"/> @@ -2163,6 +2287,10 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します <ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/> </form> </notification> + <notification name="PayConfirmation"> + L$[AMOUNT] を [TARGET] に支払うことを確認してください。 + <usetemplate ignoretext="支払い前に確認 (合計金額が L$200 以上の場合)" name="okcancelignore" notext="取り消し" yestext="支払い"/> + </notification> <notification name="OpenObjectCannotCopy"> このオブジェクトには、あなたがコピーできるアイテムはありません。 </notification> @@ -2251,6 +2379,9 @@ Linden Lab <button ignore="交換しない" name="No" text="キャンセル"/> </form> </notification> + <notification name="TooManyWearables"> + [AMOUNT] 以上のアイテムを含むフォルダを装着できません。「詳細設定」 > 「デバッグ設定を表示」 > 「WearFolderLimit」でこの制限を変更できます。 + </notification> <notification label="「通知を受けない」モードの警告" name="DoNotDisturbModePay"> 「通知を受けない」をオンにします。この支払との交換で提供されるアイテムが受信されなくなります。 @@ -2705,9 +2836,6 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ <notification name="NoValidCircuit"> 回路コードが無効です。 </notification> - <notification name="NoValidTimestamp"> - タイムスタンプが無効です。 - </notification> <notification name="NoPendingConnection"> 接続を生成できません。 </notification> @@ -2862,7 +2990,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ [MESSAGE] -送信元のオブジェクト:<nolink>[OBJECTNAME]</nolink>、所有者:[NAME]? +送信元のオブジェクト:<nolink>[OBJECTNAME]</nolink>、所有者:[NAME] <form name="form"> <button name="Gotopage" text="ページに移動"/> <button name="Cancel" text="取り消し"/> @@ -2888,6 +3016,72 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ <button name="Mute" text="ブロック"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + 新しい体験を取得できません: +[ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + 所有者が選択されたグループのメンバーでないため、体験グループへの変更が無視されました。 + </notification> + <notification name="UneditableExperienceProfileMessage"> + 体験プロフィールを更新するときに、編集不可の '[field]' フィールドが無視されました。 + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + 体験の所有者のみが設定できる '[field]'フィールドへの変更を無視しました。 + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + 所有者のレーティング区分より高いレーティング区分の体験を設定できません。 + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + 次の条件により、体験プロフィール名および説明の更新ができませんでした: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + 体験 secondlife:///app/experience/[public_id]/profile を削除するために、[region_name] リージョンからテレポートされ、このリージョンに入ることはできなくなりました。 + <form name="form"> + <ignore name="ignore" text="体験を削除するために、リージョンから追放されました"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + キー体験 secondlife:///app/experience/[public_id]/profile に参加することにより、[region_name] リージョンに入ることを許可されました。この体験を削除すると、このリージョンから追放される可能性があります。 + <form name="form"> + <ignore name="ignore" text="体験によりリージョンに入ることを許可されました"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + この目的地へのアクセス権がありません。下の体験を受け入れることにより、このリージョンに入ることができます: + +[EXPERIENCE_LIST] + +その他のキー体験を利用できます。 + </notification> + <notification name="ExperienceEvent"> + [EventType] by the secondlife:///app/experience/[public_id]/profile experience により、オブジェクトでアクション ([EventType]) を実行することが許可されました。 +所有者:secondlife:///app/agent/[OwnerID]/inspect +オブジェクト名:[ObjectName] +区画名:[ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + [EventType] by the secondlife:///app/experience/[public_id]/profile experience により、添付ファイルでアクション ([EventType]) を実行することが許可されました。 +所有者:secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + [NAME] が所有する「<nolink>[OBJECTNAME]</nolink>」 というオブジェクトが、[GRID_WIDE] 体験への参加を要求しています: + +[EXPERIENCE] + +権限が許可されると、体験プロフィールから呼び出さない限り、この体験にこのメッセージが再び表示されることはありません。 + +この体験に関連付けられたスクリプトにより、この体験が有効なリージョンで以下のことを実行できます: + +[QUESTIONS]よろしいですか? + <form name="form"> + <button name="BlockExperience" text="体験をブロック"/> + <button name="Mute" text="オブジェクトをブロックする"/> + <button name="Yes" text="はい"/> + <button name="No" text="いいえ"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> 警告:オブジェクト '<nolink>[OBJECTNAME]</nolink>' は、あなたのリンデンドルアカウントへのフルアクセスを要求しています。アクセスを許可すると、このオブジェクトは、特に警告を発せずに単発で、随時アカウントから資金を削除するか、アカウントを完全に空にします。 @@ -3204,6 +3398,10 @@ M キーを押して変更します。 ( 作成後[EXISTENCE]秒経過) '[BODYREGION]'の[RESOLUTION]のベークドテクスチャは[TIME]秒後にローカルに更新されました。 </notification> + <notification name="CannotUploadTexture"> + テクスチャをアップロードできません。 +[REASON] + </notification> <notification name="LivePreviewUnavailable"> コピー不可および/または転送不可のため、このテクスチャを表示できません。 <usetemplate ignoretext="コピー不可および/または転送不可テクスチャでライブプレビューモードを使用できないことを警告する" name="okignore" yestext="OK"/> @@ -3773,9 +3971,11 @@ M キーを押して変更します。 </notification> <notification name="TeleportedByAttachment"> [ITEM_ID] へのアタッチメントによって、あなたはテレポートされています。 + <usetemplate ignoretext="テレポート:アタッチメントによりテレポートされました" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> 区画 '[PARCEL_NAME]' のオブジェクト '[OBJECT_NAME]' によって、あなたはテレポートされています。 + <usetemplate ignoretext="テレポート:区画上のオブジェクトによりテレポートされました" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> [OWNER_ID] が所有しているオブジェクト '[OBJECT_NAME]' によって、あなたはテレポートされています。 @@ -4107,7 +4307,7 @@ M キーを押して変更します。 <usetemplate ignoretext="ファイルを移動できません。以前のパスがリストアされました。" name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - 次の理由により、デフォルト権限を保存するときに問題がありました: [REASON]。後でデフォルト権限を設定してください。 + デフォルトのオブジェクト権限を保存するときに問題が発生しました: [REASON]。後でデフォルトの権限を設定してください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml index 90491e84c5..90491e84c5 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml index 17e1283d24..17e1283d24 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml index 3ef8eba19f..3ef8eba19f 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml index fd91ea97d1..fd91ea97d1 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml index 9263e5f347..9263e5f347 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml index 95a5a26d4e..95a5a26d4e 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml index 42d8a21660..42d8a21660 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml index 6eca8adfe5..6eca8adfe5 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/ja/panel_chat_header.xml b/indra/newview/skins/default/xui/ja/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/ja/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml index 6717ba9ba3..6717ba9ba3 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml index 57a255afde..57a255afde 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml index 2159f17fec..2159f17fec 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml index 158b2fa6ac..158b2fa6ac 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml index b9bc10c220..b9bc10c220 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml index a1e30283ee..a1e30283ee 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml index 0395d4edd8..0395d4edd8 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml index 7250da69a4..7250da69a4 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml index b556b68e02..b556b68e02 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml index 94967999a1..94967999a1 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml index 72eb120c3d..72eb120c3d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_hair.xml b/indra/newview/skins/default/xui/ja/panel_edit_hair.xml index f73f760192..f73f760192 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml index ee39e9435c..ee39e9435c 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pants.xml b/indra/newview/skins/default/xui/ja/panel_edit_pants.xml index 6a1789c9f4..6a1789c9f4 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_physics.xml b/indra/newview/skins/default/xui/ja/panel_edit_physics.xml index 6ebf0062dc..6ebf0062dc 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml index 39ea1df1e3..39ea1df1e3 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml index 4cbd7f793b..4cbd7f793b 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml index 5a3a949150..5a3a949150 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml index f33daa4eba..f33daa4eba 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml index c7626189af..c7626189af 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml index 7573132576..7573132576 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml index 6efc4ce99a..6efc4ce99a 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_socks.xml b/indra/newview/skins/default/xui/ja/panel_edit_socks.xml index 71fc7c5682..71fc7c5682 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml index f4cfe6d83f..f4cfe6d83f 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml index f345a81922..f345a81922 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml index 66b2ffa8ba..66b2ffa8ba 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml index 000dac7b5b..000dac7b5b 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/ja/panel_experience_info.xml b/indra/newview/skins/default/xui/ja/panel_experience_info.xml new file mode 100644 index 0000000000..b3a17fcb56 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="体験プロフィール"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + 場所: + </text> + <text name="LocationTextText"> + どこか + </text> + <button label="テレポート" name="teleport_btn"/> + <button label="地図" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + マーケットプレイスストア: + </text> + <text name="LocationTextText"> + どこか + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + 評価: + </text> + <text name="ContentRatingText"> + Adult + </text> + <text name="Owner"> + 所有者: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="編集" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/ja/panel_experience_list_editor.xml new file mode 100644 index 0000000000..84e60aea56 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + ローディング... + </panel.string> + <panel.string name="panel_allowed"> + 許可された体験: + </panel.string> + <panel.string name="panel_blocked"> + ブロックされた体験: + </panel.string> + <panel.string name="panel_trusted"> + キー体験: + </panel.string> + <panel.string name="no_results"> + (空) + </panel.string> + <text name="text_name"> + 体験リスト + </text> + <scroll_list name="experience_list"> + <columns label="名前" name="experience_name"/> + </scroll_list> + <button label="追加..." name="btn_add"/> + <button label="削除" name="btn_remove"/> + <button label="プロフィール..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_experience_list_item.xml b/indra/newview/skins/default/xui/ja/panel_experience_list_item.xml new file mode 100644 index 0000000000..d72d2bebf6 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + ダミー名 + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_experience_log.xml b/indra/newview/skins/default/xui/ja/panel_experience_log.xml new file mode 100644 index 0000000000..39e0e27b05 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="イベントなし。"/> + <string name="loading" value="ローディング..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="時間" name="time"/> + <columns label="イベント" name="event"/> + <columns label="体験" name="experience_name"/> + <columns label="オブジェクト" name="object_name"/> + </scroll_list> + <button label="知らせる" name="btn_notify"/> + <button label="プロフィール" name="btn_profile_xp"/> + <button label="報告" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="すべてのイベントを通知 日数" name="notify_all"/> + <button label="クリア" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_experience_search.xml b/indra/newview/skins/default/xui/ja/panel_experience_search.xml new file mode 100644 index 0000000000..9ab84e7d18 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + 「[TEXT]」は見つかりませんでした + </string> + <string name="no_results"> + 検索結果:ゼロ + </string> + <string name="searching"> + 検索中... + </string> + <string name="loading"> + ロード中... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="進む" name="find"/> + <icons_combo_box label="Moderate" name="maturity"> + <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="Moderate" name="Mature" value="21"/> + <icons_combo_box.item label="全般" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="名前" name="experience_name"/> + <columns label="所有者" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="取り消し" name="cancel_btn"/> + <button label="プロフィールを表示" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_experiences.xml b/indra/newview/skins/default/xui/ja/panel_experiences.xml new file mode 100644 index 0000000000..ab0d2a97a4 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="体験をロード中..."/> + <string name="no_experiences" value="体験がありません。"/> + <string name="acquire" value="体験を取得"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_facebook_friends.xml b/indra/newview/skins/default/xui/ja/panel_facebook_friends.xml index 18ae4f9295..17c628a190 100644 --- a/indra/newview/skins/default/xui/ja/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/ja/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Second Life の住人にもなっている Facebook の友だちがいません。今すぐ Facebook の友だちに Second Life に参加してもらいましょう!"/> - <string name="facebook_friends_no_connected" value="現在 Facebook に接続されていません。「アカウント」タブに進んで、この機能を有効にしてください。"/> + <string name="facebook_friends_no_connected" value="現在 Facebook に接続されていません。「ステータス」タブに進んで、この機能を有効にしてください。"/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="SL の友だち"/> <accordion_tab name="tab_suggested_friends" title="これらの人を SL の友だちとして追加"/> diff --git a/indra/newview/skins/default/xui/ja/panel_facebook_photo.xml b/indra/newview/skins/default/xui/ja/panel_facebook_photo.xml index f6d920bd5e..c48f13456b 100644 --- a/indra/newview/skins/default/xui/ja/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/ja/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="画像解像度"> - <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="画像フィルター"> - <combo_box.item label="フィルターなし" name="NoFilter"/> - </combo_box> - <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> - <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> - <text name="caption_label"> - コメント (オプション): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="投稿" name="post_photo_btn"/> - <button label="取り消し" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="画像解像度"> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="画像フィルター"> + <combo_box.item label="フィルターなし" name="NoFilter"/> + </combo_box> + <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> + <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> + <text name="caption_label"> + コメント (オプション): + </text> + <button label="投稿" name="post_photo_btn"/> + <button label="取り消し" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_facebook_place.xml b/indra/newview/skins/default/xui/ja/panel_facebook_place.xml index e29f69101f..61138f90c1 100644 --- a/indra/newview/skins/default/xui/ja/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/ja/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - 自分がいる場所について何か言ってください: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="投稿" name="post_place_btn"/> - <button label="取り消し" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + 自分がいる場所について何か言ってください: + </text> + <check_box initial_value="false" label="場所の俯瞰図を含める" name="add_place_view_cb"/> + <button label="投稿" name="post_place_btn"/> + <button label="取り消し" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_facebook_status.xml b/indra/newview/skins/default/xui/ja/panel_facebook_status.xml index 84e5ae0474..9d962c9d62 100644 --- a/indra/newview/skins/default/xui/ja/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/ja/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - 今、何を考えている? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="投稿" name="post_status_btn"/> - <button label="取り消し" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="次のユーザーとして Facebook に接続:"/> + <string name="facebook_disconnected" value="Facebook に接続していません"/> + <text name="account_caption_label"> + Facebook に接続していません。 + </text> + <panel name="panel_buttons"> + <button label="接続..." name="connect_btn"/> + <button label="切断" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Facebook への投稿について]] + </text> + </panel> + <text name="status_caption_label"> + 今、何を考えている? + </text> + <button label="投稿" name="post_status_btn"/> + <button label="取り消し" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml b/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml index 0deadad91d..16d873a8b1 100644 --- a/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="画像解像度"> - <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="画像フィルター"> - <combo_box.item label="フィルターなし" name="NoFilter"/> - </combo_box> - <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> - <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> - <text name="title_label"> - タイトル: - </text> - <text name="description_label"> - 説明: - </text> - <check_box initial_value="true" label="SL の場所を説明の最後に含める" name="add_location_cb"/> - <text name="tags_label"> - タグ: - </text> - <text name="tags_help_label"> - タグをスペースで区切る + <combo_box name="resolution_combobox" tool_tip="画像解像度"> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="画像フィルター"> + <combo_box.item label="フィルターなし" name="NoFilter"/> + </combo_box> + <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> + <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> + <text name="title_label"> + タイトル: + </text> + <text name="description_label"> + 説明: + </text> + <check_box initial_value="true" label="SL の場所を説明の最後に含める" name="add_location_cb"/> + <text name="tags_label"> + タグ: + </text> + <text name="tags_help_label"> + タグをスペースで区切る 複数単語のタグに "" を使用 - </text> - <combo_box name="rating_combobox" tool_tip="Flickr コンテンツのレーティング区分"> - <combo_box.item label="Flickr レーティング区分「Safe」" name="SafeRating"/> - <combo_box.item label="Flickr レーティング区分「Moderate」" name="ModerateRating"/> - <combo_box.item label="Flickr レーティング区分「Restricted」" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="アップロード" name="post_photo_btn"/> - <button label="取り消し" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Flickr コンテンツのレーティング区分"> + <combo_box.item label="Flickr レーティング区分「Safe」" name="SafeRating"/> + <combo_box.item label="Flickr レーティング区分「Moderate」" name="ModerateRating"/> + <combo_box.item label="Flickr レーティング区分「Restricted」" name="RestrictedRating"/> + </combo_box> + <button label="アップロード" name="post_photo_btn"/> + <button label="取り消し" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml index 49749732c9..49749732c9 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml index a1bfb67823..a1bfb67823 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml index ebcb36d950..bd1013d6ca 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="役割 & メンバー"/> <accordion_tab name="group_notices_tab" title="通知"/> <accordion_tab name="group_land_tab" title="土地・資産"/> + <accordion_tab name="group_experiences_tab" title="体験"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml index 2639454a01..2639454a01 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml index 82be58a0fb..82be58a0fb 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml index 77d3d8f391..77d3d8f391 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml index ddad6c1f9b..ddad6c1f9b 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml index 7135ae780d..7135ae780d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml index 0e231b5b4f..0e231b5b4f 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml index f2429ac12a..f2429ac12a 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/ja/panel_instant_message.xml b/indra/newview/skins/default/xui/ja/panel_instant_message.xml index bf4cbcdc46..bf4cbcdc46 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/ja/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/ja/panel_inventory_item.xml b/indra/newview/skins/default/xui/ja/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml index 7fca66f90f..7fca66f90f 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml index 24d6ff23ae..24d6ff23ae 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/ja/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index c5d5330eb4..5f2007e0da 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=ja - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=ja</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="ユーザー名" name="username_combo" tool_tip="登録時に自分で選んだユーザー名(例:bobsmith12、Steller Sunshineなど)"/> <line_editor label="パスワード" name="password_edit"/> - <check_box label="記憶する" name="remember_check"/> - <text name="forgot_password_text"> - パスワードを忘れた場合 - </text> - <button label="ログイン" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - 前回の場所 - </text> <combo_box label="お気に入りの場所" name="start_location_combo"> + <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/> <combo_box.item label="ホーム" name="MyHome"/> </combo_box> - <button label="ログイン" name="connect_favorite_btn"/> - <line_editor label="場所を入力" name="location_edit"/> - <button label="ログイン" name="connect_location_btn"/> + <button label="ログイン" name="connect_btn"/> + <check_box label="記憶する" name="remember_check"/> + <text name="forgot_password_text">パスワードを忘れた場合</text> <combo_box label="グリッドを選択" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml index f908262f4f..f908262f4f 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml new file mode 100644 index 0000000000..a9218bebff --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="マーケットプレイス" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="表示/並べ替えオプション"/> + <button name="add_btn" tool_tip="新規リストフォルダの作成"/> + <button label="エラーを確認" name="audit_btn" tool_tip="マーケットプレイスのリストを確認"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="マーケットプレイスのリストをフィルタ" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..43cb64d6ba --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="すべて" name="All Items" tool_tip="ここにアイテムをドラッグ&ドロップしてリストに表示します"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..7f27231cbd --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="リストに掲載" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..215be9ae6d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="関連付けされていない" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..04530477f6 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="リストから削除済み" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml index 3df1ae8048..3df1ae8048 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_me.xml +++ b/indra/newview/skins/default/xui/ja/panel_me.xml diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml index 6321dbb048..6321dbb048 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml index 11d9ed4c16..11d9ed4c16 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml index ea4fdb9ce5..ea4fdb9ce5 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml index 51402b2e00..51402b2e00 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml index 4048b48d3a..4048b48d3a 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml index 201fb0a376..201fb0a376 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_media.xml b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml index c29ec64304..c29ec64304 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml 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 aff427ed49..aff427ed49 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml diff --git a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml index 8e0cf4bc9d..8e0cf4bc9d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml b/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml index 1a14283113..1a14283113 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml index e89ce0c479..e89ce0c479 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml index 93df0ba2bd..93df0ba2bd 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml index e8caab0696..e8caab0696 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml index df9ef40113..df9ef40113 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml index fd03e6b89e..fd03e6b89e 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index dd8fd41681..dd8fd41681 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml diff --git a/indra/newview/skins/default/xui/ja/panel_pick_info.xml b/indra/newview/skins/default/xui/ja/panel_pick_info.xml index e7b5d1929d..e7b5d1929d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml index c6eaaeef41..c6eaaeef41 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_picks.xml +++ b/indra/newview/skins/default/xui/ja/panel_picks.xml diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml index 7235bc0f18..7235bc0f18 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index 9d3925afdc..9d3925afdc 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_message.xml b/indra/newview/skins/default/xui/ja/panel_postcard_message.xml index b7c3f48557..b7c3f48557 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/ja/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml index 314aaef7fd..f34fdc6b67 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="カスタム" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="幅" name="postcard_snapshot_width"/> - <spinner label="高さ" name="postcard_snapshot_height"/> - <check_box label="縦横比の固定" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="画質" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="横幅 x 高さ" name="postcard_snapshot_width"/> + <check_box label="縦横比の固定" name="postcard_keep_aspect_check"/> + <slider label="品質:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml index 6e8797ec5e..6e8797ec5e 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml index 7fd2e31698..7fd2e31698 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index 1c3204ea04..1c3204ea04 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml index 9f6abf8fcb..9f6abf8fcb 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml index 39bc05c845..39bc05c845 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml index 15017e330e..15017e330e 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml index 121bebfd52..121bebfd52 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml index 2db6a688f3..2db6a688f3 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index 2c0359cb15..c1ddf08465 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -14,9 +14,10 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="指定のブラウザ(IE や Firefox)を使用" name="external" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="true"/> - <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプや Web リンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。" value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="すべてのリンクにマイ ブラウザ (Chrome、Firefox、IE) を使用" name="internal" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="0"/> + <radio_item label="Second Life リンクにのみ内蔵ブラウザを使用" name="external" tool_tip="ヘルプ、Web リンクなどにはデフォルトシステムのブラウザを使用します。 +内蔵ブラウザは LindenLab/SecondLife リンクにのみ使用されます。" value="1"/> </radio_group> <check_box initial_value="true" label="プラグインを有効にする" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Cookie を受け入れる" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index 3a4c360ccc..3a4c360ccc 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml 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 5506373eb0..5506373eb0 100755..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 diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml index 5214f79141..5214f79141 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml index 908af3d66a..908af3d66a 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/ja/panel_region_environment.xml b/indra/newview/skins/default/xui/ja/panel_region_environment.xml index f6ef3f0934..f6ef3f0934 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml index b5cc6b9765..b5cc6b9765 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/ja/panel_region_experiences.xml b/indra/newview/skins/default/xui/ja/panel_region_experiences.xml new file mode 100644 index 0000000000..f13c7bea4d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="体験" name="Experiences"> + <panel.string name="trusted_estate_text"> + どんな体験でもキーになる可能性があります。 + +キー体験には、この不動産で動作する権限があります。 + +さらに、不動産でパブリックアクセスが許可されない場合、キー体験に参加する住人は不動産に入って、キー体験にいる間滞在することができます。 + </panel.string> + <panel.string name="allowed_estate_text"> + ランドスコープとなる体験のみ許可されます。 + +許可される体験には、この不動産で実行する権限があります。 + </panel.string> + <panel.string name="blocked_estate_text"> + グリッドスコープ体験のみブロックできます。 + +ブロックされた体験は、この不動産では実行できません。 + </panel.string> + <panel.string name="estate_caption"> + このタブの設定への変更は、不動産内のすべての地域に影響されます。 + </panel.string> + <panel.string name="allowed_parcel_text"> + ランドスコープとなる体験のみ許可されます。 + +許可された体験には、この不動産でブロックされていない場合、この区画で実行する権限があります。 + </panel.string> + <panel.string name="blocked_parcel_text"> + 住人の体験をブロックできます。 + +ブロックされた体験は、この区画では実行できません。 + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index d23007dc6b..d23007dc6b 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml index fb853c1925..fb853c1925 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/ja/panel_script_ed.xml b/indra/newview/skins/default/xui/ja/panel_script_ed.xml index 3aa20d0a3c..3aa20d0a3c 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/ja/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/ja/panel_script_experience.xml b/indra/newview/skins/default/xui/ja/panel_script_experience.xml new file mode 100644 index 0000000000..1c5ea2958b --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="体験"> + <button label="体験" name="Expand Experience"/> + <check_box label="次の体験を使用:" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="体験を選択..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + 体験の貢献者ではありません。 + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml index 494884c187..494884c187 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml index d91eba9699..d91eba9699 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml b/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml index b698fa762d..b698fa762d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml index d06db8ccb1..d06db8ccb1 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml index ea17cd6526..ea17cd6526 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml index e496e6602b..a42dd12a9c 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - インベントリに保存 + インベントリ </text> <text name="hint_lbl"> 画像をインベントリに保存するには L$[UPLOAD_COST] の費用がかかります。画像をテクスチャとして保存するには平方形式の 1 つを選択してください。 @@ -13,8 +13,8 @@ <combo_box.item label="大(512x512)" name="Large(512x512)"/> <combo_box.item label="カスタム" name="Custom"/> </combo_box> - <spinner label="幅" name="inventory_snapshot_width"/> - <spinner label="高さ" name="inventory_snapshot_height"/> + <spinner label="横幅 x 高さ" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="縦横比の固定" name="inventory_keep_aspect_check"/> <button label="取り消し" name="cancel_btn"/> <button label="保存" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml index cb658fb6c9..d23056a3d5 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - コンピューターに保存 + ディスク </text> <combo_box label="解像度" name="local_size_combo"> <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="カスタム" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="幅" name="local_snapshot_width"/> - <spinner label="高さ" name="local_snapshot_height"/> - <check_box label="縦横比の固定" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="書式" name="local_format_combo"> - <combo_box.item label="PNG(可逆圧縮)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP(可逆圧縮)" name="BMP"/> - </combo_box> - <slider label="画質" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="横幅 x 高さ" name="local_snapshot_width"/> + <check_box label="縦横比の固定" name="local_keep_aspect_check"/> + <text name="local_format_label"> + フォーマット: + </text> + <combo_box label="書式" name="local_format_combo"> + <combo_box.item label="PNG(可逆圧縮)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP(可逆圧縮)" name="BMP"/> + </combo_box> + <slider label="品質:" name="image_quality_slider"/> <button label="取り消し" name="cancel_btn"/> <flyout_button label="保存" name="save_btn" tool_tip="画像をファイルに保存"> <flyout_button.item label="保存" name="save_item"/> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml index 6ce492476b..492115bec0 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="プロフィールフィードに投稿する" name="save_to_profile_btn"/> - <button label="メール" name="save_to_email_btn"/> - <button label="インベントリに保存(L$[Amount])" name="save_to_inventory_btn"/> - <button label="コンピューターに保存" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - 宛先: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="ディスクに保存" name="save_to_computer_btn"/> + <button label="持ち物に保存(L$[Amount])" name="save_to_inventory_btn"/> + <button label="プロフィールにアップロード" name="save_to_profile_btn"/> + <button label="Facebook にアップロード" name="send_to_facebook_btn"/> + <button label="Twitter にアップロード" name="send_to_twitter_btn"/> + <button label="Flickr にアップロード" name="send_to_flickr_btn"/> + <button label="メールにより送信" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml index 1ddd723840..569c07ad47 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml @@ -10,8 +10,12 @@ 送信中... </string> <text name="title"> - メール + E メール </text> - <button label="メッセージ" name="message_btn"/> - <button label="設定" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="メッセージ" name="panel_postcard_message"/> + <panel label="設定" name="panel_postcard_settings"/> + </tab_container> + <button label="取り消し" name="cancel_btn"/> + <button label="送信" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml index b860a6afe9..80d400c846 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - プロフィールフィードに投稿する + プロフィール </text> <combo_box label="解像度" name="profile_size_combo"> <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="カスタム" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="幅" name="profile_snapshot_width"/> - <spinner label="高さ" name="profile_snapshot_height"/> - <check_box label="縦横比の固定" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - キャプション: - </text> - <check_box initial_value="true" label="場所を含む" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="横幅 x 高さ" name="profile_snapshot_width"/> + <check_box label="縦横比の固定" name="profile_keep_aspect_check"/> + <text name="caption_label"> + キャプション: + </text> + <check_box initial_value="true" label="場所を含む" name="add_location_cb"/> <button label="取り消し" name="cancel_btn"/> <button label="投稿" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_sound_devices.xml b/indra/newview/skins/default/xui/ja/panel_sound_devices.xml index 0824504235..0824504235 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/ja/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml index 2308aff19b..2308aff19b 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index f09643d562..2e1446d450 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - パケット損失 - </panel.string> - <panel.string name="bandwidth_tooltip"> - 帯域幅 - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt]) - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">パケット損失</panel.string> + <panel.string name="bandwidth_tooltip">帯域幅</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-370" name="balance_bg" width="160"> - <text name="balance" tool_tip="クリックして L$ 残高を更新" value="L$20"/> + <text name="balance" tool_tip="クリックして L$ 残高を更新" value="L$??"/> <button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/> - <button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開く" width="40"/> + <button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開く" width="40"/> </panel> - <text name="TimeText" tool_tip="現在時刻(太平洋)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="現在時刻(太平洋)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="すべてのメディアを開始・停止(音楽、ビデオ、Web ページ)"/> <button name="volume_btn" tool_tip="グローバル音量設定"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml b/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml index 81db7c8989..81db7c8989 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml index 58e396877c..58e396877c 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml index 0340bfe754..0340bfe754 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/ja/panel_twitter_photo.xml b/indra/newview/skins/default/xui/ja/panel_twitter_photo.xml index 8e67d8fd19..cdb45e1853 100644 --- a/indra/newview/skins/default/xui/ja/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/ja/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - 何が起きているのでしょうか? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="SL の場所を含む" name="add_location_cb"/> - <check_box initial_value="true" label="写真を掲載する" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="画像解像度"> - <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="画像フィルター"> - <combo_box.item label="フィルターなし" name="NoFilter"/> - </combo_box> - <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> - <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="ツイート" name="post_photo_btn"/> - <button label="取り消し" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + 何が起きているのでしょうか? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="SL の場所を含む" name="add_location_cb"/> + <check_box initial_value="true" label="写真を含める" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="画像解像度"> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="画像フィルター"> + <combo_box.item label="フィルターなし" name="NoFilter"/> + </combo_box> + <button label="更新" name="new_snapshot_btn" tool_tip="クリックして更新"/> + <button label="プレビュー" name="big_preview_btn" tool_tip="クリックしてプレビューを切り替える"/> + <button label="ツイート" name="post_photo_btn"/> + <button label="取り消し" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml index 530f0fb59d..530f0fb59d 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml index 967dedf061..967dedf061 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/ja/panel_world_map.xml b/indra/newview/skins/default/xui/ja/panel_world_map.xml index 8ff853193a..8ff853193a 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_world_map.xml +++ b/indra/newview/skins/default/xui/ja/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index e64460470c..eb2c12accc 100755..100644 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -71,4 +71,8 @@ <action description="グループボイスチャットに参加する" longdescription=" この能力を持つ役割のメンバーは、グループボイスチャットセッションに参加できます。 注: ボイスチャットセッションにアクセスするには、グループチャットに参加する能力が必要です。 " name="join voice chat" value="27"/> <action description="グループチャットを管理する" longdescription=" この能力を持つ役割のメンバーは、グループボイスチャットセッションおよびグループテキストチャットセッションへのアクセスや参加をコントロールすることができます。 " name="moderate group chat" value="37"/> </action_set> + <action_set description="これらの機能には、このグループにより所有される体験を変更する機能が含まれます。" name="experience_tools_experience"> + <action description="体験管理者" longdescription="この機能を持つ役割のメンバーは、体験のメタデータを編集できます。" name="experience admin" value="49"/> + <action description="体験貢献者" longdescription="この機能を持つ役割のメンバーは、体験のスクリプトを提供できます。" name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml index 30cef9ccc0..30cef9ccc0 100755..100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index 5aa0e86a5b..5aa0e86a5b 100755..100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml index e70d91d258..d888470846 100755..100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="アイテムのプロフィール"> + <panel.string name="loading_experience"> + (ローディング) + </panel.string> <panel.string name="unknown"> (不明) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> 取得: </text> + <text name="LabelItemExperienceTitle"> + 体験: + </text> <panel name="perms_inv"> <text name="perm_modify"> あなたができること: @@ -66,8 +72,9 @@ <check_box label="再販・プレゼント" name="CheckNextOwnerTransfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/> </panel> <check_box label="販売中" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="コンテンツ" name="Contents"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> <spinner label="価格: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index 4f65c8477b..858307800b 100755..100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="オブジェクトのプロフィール"> - <panel.string name="text deed continued"> - 譲渡 - </panel.string> - <panel.string name="text deed"> - 譲渡 - </panel.string> - <panel.string name="text modify info 1"> - このオブジェクトを修正できます - </panel.string> - <panel.string name="text modify info 2"> - これらのオブジェクトを修正できます - </panel.string> - <panel.string name="text modify info 3"> - このオブジェクトを修正できません - </panel.string> - <panel.string name="text modify info 4"> - これらのオブジェクトを修正できません - </panel.string> - <panel.string name="text modify info 5"> - 地域(リージョン)の境界を越えてこのオブジェクトを修正できません - </panel.string> - <panel.string name="text modify info 6"> - 地域(リージョン)の境界を越えてこれらのオブジェクトを修正できません - </panel.string> - <panel.string name="text modify warning"> - このオブジェクトには、パーツがリンクされています - </panel.string> - <panel.string name="Cost Default"> - 価格: L$ - </panel.string> - <panel.string name="Cost Total"> - 合計: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Price Per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mixed Price - </panel.string> - <panel.string name="Sale Mixed"> - Mixed Sale - </panel.string> + <panel.string name="text deed continued">譲渡</panel.string> + <panel.string name="text deed">譲渡</panel.string> + <panel.string name="text modify info 1">このオブジェクトを修正できます</panel.string> + <panel.string name="text modify info 2">これらのオブジェクトを修正できます</panel.string> + <panel.string name="text modify info 3">このオブジェクトを修正できません</panel.string> + <panel.string name="text modify info 4">これらのオブジェクトを修正できません</panel.string> + <panel.string name="text modify info 5">地域(リージョン)の境界を越えてこのオブジェクトを修正できません</panel.string> + <panel.string name="text modify info 6">地域(リージョン)の境界を越えてこれらのオブジェクトを修正できません</panel.string> + <panel.string name="text modify warning">このオブジェクトには、パーツがリンクされています</panel.string> + <panel.string name="Cost Default">価格: L$</panel.string> + <panel.string name="Cost Total">合計価格: L$</panel.string> + <panel.string name="Cost Per Unit">Price Per: L$</panel.string> + <panel.string name="Cost Mixed">Mixed Price</panel.string> + <panel.string name="Sale Mixed">Mixed Sale</panel.string> <text name="title" value="オブジェクトのプロフィール"/> <text name="where" value="(インワールド)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - 名前: - </text> - <text name="Description:"> - 説明: - </text> - <text name="CreatorNameLabel"> - 制作者: - </text> - <text name="Owner:"> - 所有者: - </text> - <text name="Group_label"> - グループ: - </text> + <text name="Name:">名前:</text> + <text name="Description:">説明:</text> + <text name="CreatorNameLabel">制作者:</text> + <text name="Owner:">所有者:</text> + <text name="Group_label">グループ:</text> <button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択します"/> <name_box initial_value="ローディング..." name="Group Name Proxy"/> <button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/> - <text name="label click action"> - クリックで: - </text> + <text name="label click action">クリックで:</text> <combo_box name="clickaction"> <combo_box.item label="触る(デフォルト)" name="Touch/grab(default)"/> <combo_box.item label="オブジェクトに座る" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="ズーム" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - このオブジェクトを修正できます - </text> - <text name="Anyone can:"> - 全員: - </text> + <text name="perm_modify">このオブジェクトを修正できます</text> + <text name="Anyone can:">全員:</text> <check_box label="コピー" name="checkbox allow everyone copy"/> <check_box label="移動" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - グループ: - </text> + <text name="GroupLabel">グループ:</text> <check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/> - <text name="NextOwnerLabel"> - 次の所有者: - </text> + <text name="NextOwnerLabel">次の所有者:</text> <check_box label="修正" name="checkbox next owner can modify"/> <check_box label="コピー" name="checkbox next owner can copy"/> <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="価格: L$" name="Edit Cost"/> <check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/> - <text name="pathfinding_attributes_label"> - パスファインディング属性: - </text> - <text name="B:"> - B. - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">パスファインディング属性:</text> + <text name="B:">B.</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="開く" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index d046e11571..c294158d74 100755..100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -38,7 +38,7 @@ グラフィックを初期化できませんでした。グラフィックドライバを更新してください。 </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> コンパイラー [COMPILER] [COMPILER_VERSION] バージョン @@ -448,30 +448,51 @@ support@secondlife.com にお問い合わせください。 <string name="TooltipMustSingleDrop"> アイテムは 1 つだけここにドラッグできます </string> + <string name="TooltipTooManyWearables"> + [AMOUNT] 以上のアイテムを含むフォルダを装着できません。「詳細設定」 > 「デバッグ設定を表示」 > 「WearFolderLimit」でこの制限を変更できます。 + </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - マーチャントボックス内のアイテムを Rez することはできません + マーケットプレイスのリストフォルダからアイテムを Rez できません + </string> + <string name="TooltipOutboxWorn"> + 着ているアイテムをマーケットプレイスのリストフォルダに置くことはできません + </string> + <string name="TooltipOutboxFolderLevels"> + ネスト入りフォルダの深さが [AMOUNT] 階層を超えています必要に応じてアイテムを箱に入れ、フォルダの階層を減らします。 + </string> + <string name="TooltipOutboxTooManyFolders"> + サブフォルダ数が [AMOUNT] 個を超えています。必要に応じてアイテムを箱に入れ、リストのフォルダ階層を減らします。 + </string> + <string name="TooltipOutboxTooManyObjects"> + アイテム数が [AMOUNT] 個を超えています。1 つのリスト内で [AMOUNT] 個を超えるアイテムを販売するためには、いくつかのアイテムを箱に入れる必要があります。 + </string> + <string name="TooltipOutboxTooManyStockItems"> + 在庫アイテム数が [AMOUNT] 個を超えています。 + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + アイテムまたはフォルダは「すべて」タブによってのみドロップできます。このタブを選択してから、もう一度アイテムまたはフォルダを選択してください。 </string> <string name="TooltipOutboxNoTransfer"> - これらオブジェクトの 1 つまたは複数は売り渡したり譲渡したりできないものです。 + これらのオブジェクトの 1 つまたは複数は売り渡したり譲渡したりできないものです </string> <string name="TooltipOutboxNotInInventory"> - マーチャントアウトボックスでは、ご自分のインベントリからのアイテムしか受け入れることができません + アイテムはインベントリからマーケットプレイスへの移動のみできます </string> - <string name="TooltipOutboxWorn"> - 着用しているアイテムをマーチャントアウトボックスに入れることはできません + <string name="TooltipOutboxLinked"> + リンクされた相手またはフォルダをマーケットプレイスに置くことはできません </string> <string name="TooltipOutboxCallingCard"> - コーリングカードをマーチャントアウトボックスに入れることはできません + コーリングカードをマーケットプレイスに置くことはできません </string> - <string name="TooltipOutboxFolderLevels"> - ネスト入りフォルダの深さが 3 を超えています + <string name="TooltipOutboxDragActive"> + 表示されているリストを移動できません </string> - <string name="TooltipOutboxTooManyFolders"> - 最上位フォルダ内のサブフォルダ数が 20 を超えています + <string name="TooltipOutboxCannotMoveRoot"> + ルートフォルダをリストに表示するマーケットプレイスを移動できません </string> - <string name="TooltipOutboxTooManyObjects"> - 最上位フォルダ内のアイテム数が 200 を超えています + <string name="TooltipOutboxMixedStock"> + 在庫フォルダ内のアイテムはすべて同じ種類と権限でなければなりません </string> <string name="TooltipDragOntoOwnChild"> フォルダをその子フォルダに移動することはできません @@ -1059,9 +1080,7 @@ support@secondlife.com にお問い合わせください。 <string name="AgentNameSubst"> (あなた) </string> - <string name="JoinAnExperience"> - 体験に参加する - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> 土地のアクセスリストを管理するときにアラートを表示しない </string> @@ -1128,6 +1147,12 @@ support@secondlife.com にお問い合わせください。 <string name="bitmap_image_files"> ビットマップ画像 </string> + <string name="png_image_files"> + PNG 画像 + </string> + <string name="save_texture_image_files"> + Targa または PNG 画像 + </string> <string name="avi_movie_file"> AVI ムービーファイル </string> @@ -1377,6 +1402,9 @@ support@secondlife.com にお問い合わせください。 <string name="FavoritesNoMatchingItems"> ここにランドマークをドラッグしてお気に入りに追加します。 </string> + <string name="MarketplaceNoMatchingItems"> + アイテムが見つかりませんでした。検索文字列のスペルを確認して、もう一度やり直してください。 + </string> <string name="InventoryNoTexture"> インベントリ内にこのテクスチャのコピーがありません </string> @@ -1424,29 +1452,95 @@ support@secondlife.com にお問い合わせください。 <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] マーケットプレイス ストア] がエラーを返しています。 </string> + <string name="InventoryMarketplaceError"> + この機能は、現在、ベータ版の機能です。参加するには、この [http://goo.gl/forms/FCQ7UXkakz Google form] に名前を追加してください。 + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + マーケットプレイスのリストフォルダが空です。 + </string> + <string name="InventoryMarketplaceListingsNoItems"> + [[MARKETPLACE_DASHBOARD_URL] マーケットプレイス]に販売するアイテムを一覧するには、フォルダをこのエリアにドラッグします。 + </string> + <string name="Marketplace Validation Warning Stock"> + バージョンフォルダに在庫フォルダが含まれなければなりません + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : エラー:在庫フォルダ内のすべてのアイテムはコピー不可で同じ種類でなければなりません + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : エラー:在庫フォルダにサブフォルダを含めることはできません + </string> + <string name="Marketplace Validation Warning Empty"> + : 警告:フォルダにアイテムが含まれていません + </string> + <string name="Marketplace Validation Warning Create Stock"> + : 警告:在庫フォルダを作成しています + </string> + <string name="Marketplace Validation Warning Create Version"> + : 警告:バージョンフォルダ作成中 + </string> + <string name="Marketplace Validation Warning Move"> + : 警告:アイテム移動中 + </string> + <string name="Marketplace Validation Warning Delete"> + : 警告:フォルダの中身が在庫フォルダに移されました。空のフォルダを削除します + </string> + <string name="Marketplace Validation Error Stock Item"> + : エラー:在庫フォルダにコピー不可アイテムを含める必要があります + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : 警告:バージョンフォルダにアイテムが含まれていなければなりません + </string> + <string name="Marketplace Validation Error"> + : エラー: + </string> + <string name="Marketplace Validation Warning"> + : 警告: + </string> + <string name="Marketplace Validation Error Empty Version"> + : 警告:バージョンフォルダには、最低 1 アイテムが含まれなければなりません + </string> + <string name="Marketplace Validation Error Empty Stock"> + : 警告:在庫フォルダには、最低 1 アイテムが含まれていなければなりません + </string> + <string name="Marketplace Validation No Error"> + 報告するエラーまたは警告はありません + </string> <string name="Marketplace Error None"> エラーなし </string> + <string name="Marketplace Error Prefix"> + エラー: + </string> <string name="Marketplace Error Not Merchant"> - エラー:マーケットプレイスにアイテムを送る前に、あなた自身をマーチャント登録する必要があります(登録は無料です)。 + マーケットプレイスに商品を送る前に、あなた自身をマーチャント登録する必要があります(登録は無料です)。 </string> - <string name="Marketplace Error Empty Folder"> - エラー:このフォルダは空です。 + <string name="Marketplace Error Not Accepted"> + アイテムをそのフォルダに移動できません。 </string> - <string name="Marketplace Error Unassociated Products"> - エラー:あなたのマーチャントアカウントには、商品に関連付けられていないアイテムが多すぎるため、このアイテムをアップロードできませんでした。このエラーを解消するには、マーケットプレイスの Web サイトにログインし、関連付けられていないアイテムの数を減らしてください。 + <string name="Marketplace Error Unsellable Item"> + このアイテムをマーケットプレイスで販売することはできません。 </string> - <string name="Marketplace Error Object Limit"> - エラー:このアイテムに含まれるオブジェクトが多すぎます。オブジェクトをいくつかボックスにまとめ、オブジェクト数を200以下に減らしてください。 + <string name="MarketplaceNoID"> + Mkt ID なし </string> - <string name="Marketplace Error Folder Depth"> - エラー:このアイテムはネスト入りフォルダの階層が多すぎます。ネスト入りフォルダを 3 階層以内にまとめ直してください。 + <string name="MarketplaceLive"> + リスト掲載済み </string> - <string name="Marketplace Error Unsellable Item"> - エラー:このアイテムをマーケットプレイスで販売することはできません。 + <string name="MarketplaceActive"> + 有効 + </string> + <string name="MarketplaceMax"> + 最大 + </string> + <string name="MarketplaceStock"> + 在庫 </string> - <string name="Marketplace Error Internal Import"> - エラー:このアイテムに関して問題が発生しました。しばらくしてからお試しください。 + <string name="MarketplaceNoStock"> + 在庫なし + </string> + <string name="MarketplaceUpdating"> + アップデート中... </string> <string name="Open landmarks"> ランドマークを開く @@ -1467,6 +1561,7 @@ support@secondlife.com にお問い合わせください。 コンテンツなし </string> <string name="WornOnAttachmentPoint" value=" ([ATTACHMENT_POINT] に装着中)"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (アクティブ)"/> <string name="PermYes"> はい @@ -1737,6 +1832,15 @@ support@secondlife.com にお問い合わせください。 <string name="Invalid Attachment"> 装着先が正しくありません </string> + <string name="ATTACHMENT_MISSING_ITEM"> + エラー:アイテムが見つかりません + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + エラー:ベースアイテムが見つかりません + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + エラー:オブジェクトは現在のアウトフィット内にありますが、添付されていません + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1905,6 +2009,9 @@ support@secondlife.com にお問い合わせください。 <string name="SaveComplete"> 保存完了。 </string> + <string name="UploadFailed"> + ファイルのアップロードが失敗しました: + </string> <string name="ObjectOutOfRange"> スクリプト(オブジェクトが範囲外にあります) </string> @@ -1914,6 +2021,9 @@ support@secondlife.com にお問い合わせください。 <string name="GroupsNone"> なし </string> + <string name="CompileNoExperiencePerm"> + [EXPERIENCE] 体験による [SCRIPT] スクリプトのスキップ。 + </string> <string name="Group" value=" (グループ)"/> <string name="Unknown"> (不明) @@ -5065,6 +5175,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Command_Marketplace_Label"> マーケットプレイス </string> + <string name="Command_MarketplaceListings_Label"> + マーケットプレイス + </string> <string name="Command_MiniMap_Label"> ミニマップ </string> @@ -5152,6 +5265,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Command_Marketplace_Tooltip"> ショッピングに出掛ける </string> + <string name="Command_MarketplaceListings_Tooltip"> + 創作アイテムを販売します + </string> <string name="Command_MiniMap_Tooltip"> 近くの人を表示する </string> @@ -5275,4 +5391,85 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="loading_chat_logs"> ロード中... </string> + <string name="experience_tools_experience"> + 体験 + </string> + <string name="ExperienceNameNull"> + (体験なし) + </string> + <string name="ExperienceNameUntitled"> + (タイトルのない体験) + </string> + <string name="Land-Scope"> + ランドスコープ + </string> + <string name="Grid-Scope"> + グリッドスコープ + </string> + <string name="Allowed_Experiences_Tab"> + 許可 + </string> + <string name="Blocked_Experiences_Tab"> + 停止 + </string> + <string name="Contrib_Experiences_Tab"> + 貢献者 + </string> + <string name="Admin_Experiences_Tab"> + 管理 + </string> + <string name="Recent_Experiences_Tab"> + 最新 + </string> + <string name="Owned_Experiences_Tab"> + 所有 + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], max [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + コントロールを引き継ぐ + </string> + <string name="ExperiencePermission3"> + アバターでアニメーションをトリガー + </string> + <string name="ExperiencePermission4"> + アバターに装着 + </string> + <string name="ExperiencePermission9"> + カメラ追従 + </string> + <string name="ExperiencePermission10"> + カメラのコントロール + </string> + <string name="ExperiencePermission11"> + あなたをテレポート + </string> + <string name="ExperiencePermission12"> + 体験の権限を自動的に承諾 + </string> + <string name="ExperiencePermissionShortUnknown"> + が不明な操作を実行しました: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + コントロールする + </string> + <string name="ExperiencePermissionShort3"> + アニメーションをトリガー + </string> + <string name="ExperiencePermissionShort4"> + 取り付ける + </string> + <string name="ExperiencePermissionShort9"> + カメラを追跡 + </string> + <string name="ExperiencePermissionShort10"> + カメラを制御 + </string> + <string name="ExperiencePermissionShort11"> + テレポート + </string> + <string name="ExperiencePermissionShort12"> + 権限 + </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml index 7868c25807..4555420ba8 100755..100644 --- a/indra/newview/skins/default/xui/ja/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml @@ -50,6 +50,9 @@ <message name="MustGetAgeRegion"> この地域(リージョン)に入るには 18 才以上である必要があります。 </message> + <message name="RegionTPSpecialUsageBlocked"> + リージョンに入ることができません。'[REGION_NAME]' はスキル ゲーミング リージョンであり、あなたはこのリージョンに入るための特定の基準を満たす必要があります。詳しくは、[http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life スキル ゲーミングのよくある質問] を参照してください。 + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/ja/xui_version.xml b/indra/newview/skins/default/xui/ja/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/ja/xui_version.xml +++ b/indra/newview/skins/default/xui/ja/xui_version.xml diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index 61a72ff27d..f5098ba33c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -1,81 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="O [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Buduj z [COMPILER] wersją [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Położenie [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] w [REGION] zlokalizowanym w <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - Procesor: [CPU] -Pamięć: [MEMORY_MB] MB -Wersja OS: [OS_VERSION] -Sprzedawca karty graficznej: [GRAPHICS_CARD_VENDOR] -Karta graficzna: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Sterownik karty graficznej: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Wersja OpenGL: [OPENGL_VERSION] - -Wersja libcurl: [LIBCURL_VERSION] -Wersja dekodera J2C: [J2C_VERSION] -Wersja Audio Driver: [AUDIO_DRIVER_VERSION] -Wersja Qt Webkit: [QT_WEBKIT_VERSION] -Wersja serwera głosu: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (żadne) - </floater.string> - <floater.string name="AboutTraffic"> - Stracone pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="Kopiuj do schowka" name="copy_btn"/> </panel> <panel label="Podziękowania" name="credits_panel"> - <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, 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. - + <text name="linden_intro">Second Life zostało dla Ciebie stworzone przez Lindenów, +z wkładem open source od::</text> + </panel> + <panel label="Licencje" name="licenses_panel"> + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + APR Copyright (C) 2011 The Apache Software Foundation + Collada DOM Copyright 2006 Sony Computer Entertainment Inc. + cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) + DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. + expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + GL Copyright (C) 1999-2004 Brian Paul. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + google-perftools Copyright (c) 2005, Google Inc. + Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeglib Copyright (C) 1991-1998, Thomas G. Lane. + ogg/vorbis Copyright (C) 2002, Xiphophorus + OpenSSL Copyright (C) 1998-2008 The OpenSSL Project. + PCRE Copyright (c) 1997-2012 University of Cambridge + SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga + SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + xmlrpc-epi Copyright (C) 2000 Epinions, Inc. + zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. + This software contains source code provided by NVIDIA Corporation. -"The work goes on, the cause endures, the hope still lives, and the dreams shall never die" - Edward Kennedy - </text_editor> - </panel> - <panel label="Licencje" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - Wszystkie prawa zastrzeżone. Szczegóły w pliku licenses.txt. + All rights reserved. See licenses.txt for details. - Programowanie dźwięku czatu: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml index badff11a59..badff11a59 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_activeim.xml b/indra/newview/skins/default/xui/pl/floater_activeim.xml index 2a34409f8b..2a34409f8b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_activeim.xml +++ b/indra/newview/skins/default/xui/pl/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml index 3402d8d31f..3402d8d31f 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_associate_listing.xml b/indra/newview/skins/default/xui/pl/floater_associate_listing.xml new file mode 100644 index 0000000000..b5464dd59b --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="PRZYPISANE PRZEDMIOTY"> + <text name="message">ID przedmiotu:</text> + <line_editor name="listing_id">Wpisz tutaj ID</line_editor> + <button label="OK" name="OK"/> + <button label="Anuluj" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml index 9399fa1115..9399fa1115 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_auction.xml +++ b/indra/newview/skins/default/xui/pl/floater_auction.xml diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml index da0e947683..da0e947683 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml index 45b9e066e9..45b9e066e9 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/pl/floater_beacons.xml b/indra/newview/skins/default/xui/pl/floater_beacons.xml index e6286a6ac1..e6286a6ac1 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_beacons.xml +++ b/indra/newview/skins/default/xui/pl/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml index 5d296aa725..5d296aa725 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_build_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_build_options.xml 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 1c24e0b35e..1c24e0b35e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/pl/floater_bumps.xml b/indra/newview/skins/default/xui/pl/floater_bumps.xml index c1045ece9a..c1045ece9a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_bumps.xml +++ b/indra/newview/skins/default/xui/pl/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml index 94f2b50450..94f2b50450 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml index 3e51761b37..3e51761b37 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml index 36ac88f7f6..36ac88f7f6 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml index 7b4f459b4e..7b4f459b4e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_object.xml b/indra/newview/skins/default/xui/pl/floater_buy_object.xml index 85861d9e76..85861d9e76 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml index 60f3cd0fff..60f3cd0fff 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_camera.xml +++ b/indra/newview/skins/default/xui/pl/floater_camera.xml diff --git a/indra/newview/skins/default/xui/pl/floater_choose_group.xml b/indra/newview/skins/default/xui/pl/floater_choose_group.xml index 877cedc0bc..877cedc0bc 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/pl/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/pl/floater_color_picker.xml b/indra/newview/skins/default/xui/pl/floater_color_picker.xml index a607ca982f..a607ca982f 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/pl/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/pl/floater_critical.xml b/indra/newview/skins/default/xui/pl/floater_critical.xml index 8221a4e1bd..8221a4e1bd 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_critical.xml +++ b/indra/newview/skins/default/xui/pl/floater_critical.xml diff --git a/indra/newview/skins/default/xui/pl/floater_display_name.xml b/indra/newview/skins/default/xui/pl/floater_display_name.xml index ea28e65728..ea28e65728 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_display_name.xml +++ b/indra/newview/skins/default/xui/pl/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml new file mode 100644 index 0000000000..80e481c0bc --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="USTAW UNIESIENIE"> + <slider label="Unieś" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_event.xml b/indra/newview/skins/default/xui/pl/floater_event.xml index d278114969..d278114969 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_event.xml +++ b/indra/newview/skins/default/xui/pl/floater_event.xml diff --git a/indra/newview/skins/default/xui/pl/floater_font_test.xml b/indra/newview/skins/default/xui/pl/floater_font_test.xml index 019cee3e1e..019cee3e1e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_font_test.xml +++ b/indra/newview/skins/default/xui/pl/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml index 0c27e4d0bb..0c27e4d0bb 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_gesture.xml +++ b/indra/newview/skins/default/xui/pl/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml index 828898de54..828898de54 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml index 471d2c39ba..471d2c39ba 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_help_browser.xml b/indra/newview/skins/default/xui/pl/floater_help_browser.xml index dfd5f907e5..dfd5f907e5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/pl/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/pl/floater_hud.xml b/indra/newview/skins/default/xui/pl/floater_hud.xml index a5d85aca4e..a5d85aca4e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_hud.xml +++ b/indra/newview/skins/default/xui/pl/floater_hud.xml diff --git a/indra/newview/skins/default/xui/pl/floater_im_container.xml b/indra/newview/skins/default/xui/pl/floater_im_container.xml index ddf0790fa8..ddf0790fa8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_im_container.xml +++ b/indra/newview/skins/default/xui/pl/floater_im_container.xml 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 9041ff7416..9041ff7416 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_im_session.xml +++ b/indra/newview/skins/default/xui/pl/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml index ba9724ff9a..ba9724ff9a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_incoming_call.xml b/indra/newview/skins/default/xui/pl/floater_incoming_call.xml index b06b6d713d..b06b6d713d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/pl/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inspect.xml b/indra/newview/skins/default/xui/pl/floater_inspect.xml index 2c66f2851d..2c66f2851d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inspect.xml +++ b/indra/newview/skins/default/xui/pl/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml index c42f57fb55..c42f57fb55 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml index 054d74b234..97d13c4dfe 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="WŁAŚCIWOŚCI OBIEKTÓW W SZAFIE"> - <floater.string name="unknown"> - (nieznany) - </floater.string> - <floater.string name="public"> - (publiczny) - </floater.string> - <floater.string name="you_can"> - Opcje: - </floater.string> - <floater.string name="owner_can"> - Właściciel może: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nazwa: - </text> - <text name="LabelItemDescTitle"> - Opis: - </text> - <text name="LabelCreatorTitle"> - Twórca: - </text> + <floater.string name="unknown">(nieznany)</floater.string> + <floater.string name="public">(publiczny)</floater.string> + <floater.string name="you_can">Opcje:</floater.string> + <floater.string name="owner_can">Właściciel może:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nazwa:</text> + <text name="LabelItemDescTitle">Opis:</text> + <text name="LabelCreatorTitle">Twórca:</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Właściciel: - </text> + <text name="LabelOwnerTitle">Właściciel:</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Nabyte: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Ty: - </text> + <text name="LabelAcquiredTitle">Nabyte:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Ty:</text> <check_box label="Edytuj" name="CheckOwnerModify"/> <check_box label="Kopiuj" name="CheckOwnerCopy"/> <check_box label="Odsprzedaż" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Każdy: - </text> + <text name="AnyoneLabel">Każdy:</text> <check_box label="Kopiuj" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupa: - </text> + <text name="GroupLabel">Grupa:</text> <check_box label="Udostępnij" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Następny właściciel: - </text> + <text name="NextOwnerLabel">Następny właściciel:</text> <check_box label="Edytuj" name="CheckNextOwnerModify"/> <check_box label="Kopiuje" name="CheckNextOwnerCopy"/> <check_box label="Odsprzedaż" name="CheckNextOwnerTransfer"/> <check_box label="Sprzedaż" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopiuj" name="Copy"/> - <combo_box.item label="Oryginalny" name="Original"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopia" name="Copy"/> + <combo_box.item label="Zawartość" name="Contents"/> + <combo_box.item label="Oryginał" name="Original"/> </combo_box> <spinner label="Cena:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml index bd7b221c5d..bd7b221c5d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml diff --git a/indra/newview/skins/default/xui/pl/floater_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_item_properties.xml new file mode 100644 index 0000000000..8b0cf31a9a --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="WŁAŚCIWOŚCI"/> diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml index 2b1e362b98..2b1e362b98 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml index 72a078949a..72a078949a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml index e03c5faaeb..e03c5faaeb 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml diff --git a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml index 7b1b395f87..7b1b395f87 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/pl/floater_map.xml b/indra/newview/skins/default/xui/pl/floater_map.xml index e01c4c8a82..e01c4c8a82 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_map.xml diff --git a/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml new file mode 100644 index 0000000000..1917a4985b --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="RZECZY NA MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Wczytywanie...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml new file mode 100644 index 0000000000..826c72f2cd --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Sprawdź przedmioty na Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_media_browser.xml b/indra/newview/skins/default/xui/pl/floater_media_browser.xml index 9787736ad8..9787736ad8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/pl/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/pl/floater_media_settings.xml b/indra/newview/skins/default/xui/pl/floater_media_settings.xml index 5a36331c9a..5a36331c9a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/pl/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml index 9ce99692d0..9ce99692d0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/pl/floater_moveview.xml b/indra/newview/skins/default/xui/pl/floater_moveview.xml index 592814dbc0..592814dbc0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_moveview.xml +++ b/indra/newview/skins/default/xui/pl/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml index 4af5872ef5..4af5872ef5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_mute_object.xml 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 214d465f1c..214d465f1c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml index 8e94ae821c..20c9760e6f 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_openobject.xml +++ b/indra/newview/skins/default/xui/pl/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Kopiuj do Szafy" label_selected="Kopiuj do Szafy" name="copy_to_inventory_button"/> - <button label="Kopiuj i zalóż" label_selected="Kopiuj i załóż" name="copy_and_wear_button"/> + <text name="border_note"> + Kopiuj do Szafy i załóż + </text> + <button label="Dodaj do stroju" label_selected="Dodaj do stroju" name="copy_and_wear_button"/> + <button label="Zastąp strój" label_selected="Zastąp strój" name="copy_and_replace_button"/> + <button label="Tylko skopiuj do Szafy" label_selected="Tylko skopiuj do Szafy" name="copy_to_inventory_button"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml index de0b4d08c0..de0b4d08c0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml index 38fe5286a4..cb9c0bd552 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_pay.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Zapłać grupie - </string> - <string name="payee_resident"> - Zapłać Rezydentowi - </string> - <text name="payee_label"> - Zapłać: - </text> - <icon name="icon_person" tool_tip="Osoba"/> - <text name="payee_name"> - Przetestuj nazwę, która jest bardzo długa aby sprawdzić skracanie. - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - lub wybierz kwotę: - </text> - <line_editor left="52" name="amount"/> - <button label="Zapłać" label_selected="Zapłać" name="pay btn"/> - <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + <string name="payee_group">Zapłać grupie</string> + <string name="payee_resident">Zapłać Rezydentowi</string> + <text name="paying_text">Płacisz:</text> + <text name="payee_name">Przetestuj nazwę, która jest bardzo długa aby sprawdzić skracanie.</text> + <panel label="Szukaj" name="PatternsPanel"> + <button label="Płać 1L$" label_selected="Płać 1L$" name="fastpay 1"/> + <button label="Płać 5L$" label_selected="Płać 5L$" name="fastpay 5"/> + <button label="Płać 10L$" label_selected="Płać 10L$" name="fastpay 10"/> + <button label="Płać 20L$" label_selected="Płać 20L$" name="fastpay 20"/> + </panel> + <panel label="Szukaj" name="InputPanel"> + <text name="amount text">Inna kwota:</text> + <button label="Zapłać" label_selected="Zapłać" name="pay btn"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml index bf88348c87..d196e08fee 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - Zapłać grupie - </string> - <string halign="left" name="payee_resident" width="120"> - Zapłać Rezydentowi - </string> - <icon name="icon_person" tool_tip="Osoba"/> - <text left="125" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="95"> - Poprzez obiekt: - </text> + <string halign="left" name="payee_group" width="100">Zapłać grupie</string> + <string halign="left" name="payee_resident" width="120">Zapłać Rezydentowi</string> + <text name="paying_text">Płacisz:</text> + <text left="125" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="95">Poprzez obiekt:</text> <icon name="icon_object" tool_tip="Obiekt"/> - <text left="105" name="object_name_text"> - Poprzez obiekt - </text> - <button label="L$1" label_selected="L$1" left="105" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" left="190" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" left="105" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" left="190" name="fastpay 20"/> - <text halign="left" left="5" name="amount text"> - lub wybierz kwotę: - </text> - <line_editor left="50" name="amount" width="50"/> - <button label="Zapłać" label_selected="Zapłać" name="pay btn"/> - <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + <text left="105" name="object_name_text">Poprzez obiekt</text> + <panel label="Szukaj" name="PatternsPanel"> + <button label="Płać 1L$" label_selected="Płać 1L$" name="fastpay 1"/> + <button label="Płać 5L$" label_selected="Płać 5L$" name="fastpay 5"/> + <button label="Płać 10L$" label_selected="Płać 10L$" name="fastpay 10"/> + <button label="Płać 20L$" label_selected="Płać 20L$" name="fastpay 20"/> + </panel> + <panel label="Szukaj" name="InputPanel"> + <text name="amount text">Inna kwota:</text> + <button label="Zapłać" label_selected="Zapłać" name="pay btn"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml index 2128cfa3c8..2128cfa3c8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml index e3dce84933..e3dce84933 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_post_process.xml +++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml index fe796c6fa0..fe796c6fa0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_postcard.xml +++ b/indra/newview/skins/default/xui/pl/floater_postcard.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preferences.xml b/indra/newview/skins/default/xui/pl/floater_preferences.xml index 930a5c76b0..930a5c76b0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preferences.xml +++ b/indra/newview/skins/default/xui/pl/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml index d276b1f63a..d276b1f63a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml index 8171225666..8171225666 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml index b3275cb7b5..b3275cb7b5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml index 3825fe742e..3825fe742e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml index e58acee139..e58acee139 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_publish_classified.xml b/indra/newview/skins/default/xui/pl/floater_publish_classified.xml index cfdac165cd..cfdac165cd 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/pl/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml b/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml index ce1f3c0ac7..ce1f3c0ac7 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/pl/floater_region_info.xml b/indra/newview/skins/default/xui/pl/floater_region_info.xml index a1f7785f48..a1f7785f48 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_region_info.xml +++ b/indra/newview/skins/default/xui/pl/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml index a5b96601b8..a5b96601b8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_debug.xml b/indra/newview/skins/default/xui/pl/floater_script_debug.xml index 714a600262..714a600262 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_limits.xml b/indra/newview/skins/default/xui/pl/floater_script_limits.xml index dd13d641a0..dd13d641a0 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_preview.xml b/indra/newview/skins/default/xui/pl/floater_script_preview.xml index eb6a1df77b..eb6a1df77b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_queue.xml b/indra/newview/skins/default/xui/pl/floater_script_queue.xml index bdfdba569e..bdfdba569e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml index 901d61a137..901d61a137 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_search.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/pl/floater_search.xml b/indra/newview/skins/default/xui/pl/floater_search.xml index a0198670e4..a0198670e4 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_search.xml +++ b/indra/newview/skins/default/xui/pl/floater_search.xml diff --git a/indra/newview/skins/default/xui/pl/floater_select_key.xml b/indra/newview/skins/default/xui/pl/floater_select_key.xml index 190ad61352..190ad61352 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_select_key.xml +++ b/indra/newview/skins/default/xui/pl/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml index 2201c4b0ad..2201c4b0ad 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml index 131f92d56f..131f92d56f 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml index be92ef917d..be92ef917d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pl/floater_snapshot.xml diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml index ac041dff6a..ac041dff6a 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml index 886a30e5d9..886a30e5d9 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_stats.xml +++ b/indra/newview/skins/default/xui/pl/floater_stats.xml diff --git a/indra/newview/skins/default/xui/pl/floater_sys_well.xml b/indra/newview/skins/default/xui/pl/floater_sys_well.xml index e6c73af4f3..e6c73af4f3 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/pl/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/pl/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml index 32cc08810d..32cc08810d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_telehub.xml +++ b/indra/newview/skins/default/xui/pl/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml index 52c0cb8a93..52c0cb8a93 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index 69d5c23f9c..69d5c23f9c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml index 2b06ae9f78..2b06ae9f78 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml diff --git a/indra/newview/skins/default/xui/pl/floater_tos.xml b/indra/newview/skins/default/xui/pl/floater_tos.xml index 8cdf267f4b..8cdf267f4b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_tos.xml +++ b/indra/newview/skins/default/xui/pl/floater_tos.xml diff --git a/indra/newview/skins/default/xui/pl/floater_url_entry.xml b/indra/newview/skins/default/xui/pl/floater_url_entry.xml index fc170d8d1b..fc170d8d1b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/pl/floater_url_entry.xml 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 2155d56f27..2155d56f27 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml b/indra/newview/skins/default/xui/pl/floater_voice_effect.xml index e2d1fb77e9..e2d1fb77e9 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/pl/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/pl/floater_web_content.xml b/indra/newview/skins/default/xui/pl/floater_web_content.xml index 4cc8d0b27b..4cc8d0b27b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_web_content.xml +++ b/indra/newview/skins/default/xui/pl/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml index 4081b8a37e..4081b8a37e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/pl/floater_window_size.xml b/indra/newview/skins/default/xui/pl/floater_window_size.xml index 2a6c257e54..2a6c257e54 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_window_size.xml +++ b/indra/newview/skins/default/xui/pl/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml index 4f53337365..4f53337365 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml index 5e982c0185..5e982c0185 100755..100644 --- a/indra/newview/skins/default/xui/pl/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/pl/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/pl/inspect_group.xml b/indra/newview/skins/default/xui/pl/inspect_group.xml index 63c79acc8c..63c79acc8c 100755..100644 --- a/indra/newview/skins/default/xui/pl/inspect_group.xml +++ b/indra/newview/skins/default/xui/pl/inspect_group.xml diff --git a/indra/newview/skins/default/xui/pl/inspect_object.xml b/indra/newview/skins/default/xui/pl/inspect_object.xml index 23d8ce7700..23d8ce7700 100755..100644 --- a/indra/newview/skins/default/xui/pl/inspect_object.xml +++ b/indra/newview/skins/default/xui/pl/inspect_object.xml diff --git a/indra/newview/skins/default/xui/pl/inspect_remote_object.xml b/indra/newview/skins/default/xui/pl/inspect_remote_object.xml index 0d570940c1..0d570940c1 100755..100644 --- a/indra/newview/skins/default/xui/pl/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/pl/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml index 93051d1317..93051d1317 100755..100644 --- a/indra/newview/skins/default/xui/pl/language_settings.xml +++ b/indra/newview/skins/default/xui/pl/language_settings.xml 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 index 7c572b4fc9..7c572b4fc9 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml index aacdad97e3..aacdad97e3 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml 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 163b3a231e..ecfc341d73 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mój wygląd" name="Change Outfit"/> <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/> <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/> + <menu_item_call label="Uniesienie" name="Hover Height"/> <menu_item_call label="Moi znajomi" name="Friends..."/> <menu_item_call label="Moje grupy" name="Groups..."/> <menu_item_call label="Mój profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml index e8d2b14231..e8d2b14231 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml index dcf7921bad..dcf7921bad 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml 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 8eb501c5b8..dafad57d98 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mój wygląd" name="Chenge Outfit"/> <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/> <menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/> + <menu_item_call label="Uniesienie" name="Hover Height"/> <menu_item_call label="Moi znajomi" name="Friends..."/> <menu_item_call label="Moje grupy" name="Groups..."/> <menu_item_call label="Mój profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml index 1ec5883cfe..1ec5883cfe 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml diff --git a/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml index 4e5407601b..4e5407601b 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml index ee60d3feb6..ee60d3feb6 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml index ad43900137..ad43900137 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/pl/menu_cof_gear.xml b/indra/newview/skins/default/xui/pl/menu_cof_gear.xml index 9fba39be1a..9fba39be1a 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/pl/menu_edit.xml b/indra/newview/skins/default/xui/pl/menu_edit.xml index 578e270fed..578e270fed 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_edit.xml +++ b/indra/newview/skins/default/xui/pl/menu_edit.xml diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml index 7310ff5c27..7310ff5c27 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_favorites.xml +++ b/indra/newview/skins/default/xui/pl/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml index a72dec22fc..a72dec22fc 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/pl/menu_group_plus.xml b/indra/newview/skins/default/xui/pl/menu_group_plus.xml index 83be4d38c5..83be4d38c5 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/pl/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml index 19d9510cd3..19d9510cd3 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml index 4ead44878a..4ead44878a 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml index 2b9a362123..2b9a362123 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml index 8924d6db3e..8924d6db3e 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml index 59560f236c..59560f236c 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml 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 c12bd490ff..c12bd490ff 100755..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 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 c4ef9761d9..c4ef9761d9 100755..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 diff --git a/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml index 5ef0f2f7a4..5ef0f2f7a4 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml index 5492f78b26..a0c2b2c6c1 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Utwórz nowy przedmiot" name="Marketplace Create Listing"/> + <menu_item_call label="Przypisz" name="Marketplace Associate Listing"/> + <menu_item_call label="Pobierz ponownie (odśwież)" name="Marketplace Get Listing"/> + <menu_item_call label="Zweryfikuj" name="Marketplace Check Listing"/> + <menu_item_call label="Edytuj przedmiot" name="Marketplace Edit Listing"/> + <menu_item_call label="Listuj" name="Marketplace List"/> + <menu_item_call label="Usuń z listy" name="Marketplace Unlist"/> + <menu_item_call label="Aktywuj" name="Marketplace Activate"/> + <menu_item_call label="Dezaktywuj" name="Marketplace Deactivate"/> <menu_item_call label="Udostępnij" name="Share"/> <menu_item_call label="Kupuj" name="Task Buy"/> <menu_item_call label="Otwórz" name="Task Open"/> @@ -81,5 +90,7 @@ <menu_item_call label="Edytuj" name="Wearable Edit"/> <menu_item_call label="Dodaj" name="Wearable Add"/> <menu_item_call label="Zdejmij" name="Take Off"/> + <menu_item_call label="Kopiuj do przedmiotów Marketplace" name="Marketplace Copy"/> + <menu_item_call label="Przenieś do przedmiotów Marketplace" name="Marketplace Move"/> <menu_item_call label="--brak opcji--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml index 04f9b94f7c..04f9b94f7c 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml index 591c3a81d5..591c3a81d5 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml index cbfecaee56..cbfecaee56 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_land.xml +++ b/indra/newview/skins/default/xui/pl/menu_land.xml diff --git a/indra/newview/skins/default/xui/pl/menu_landmark.xml b/indra/newview/skins/default/xui/pl/menu_landmark.xml index aa5808390c..aa5808390c 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_landmark.xml +++ b/indra/newview/skins/default/xui/pl/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml index e50b694641..e50b694641 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_login.xml +++ b/indra/newview/skins/default/xui/pl/menu_login.xml diff --git a/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml b/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml new file mode 100644 index 0000000000..b948074501 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Sortuj według ilości (rosnąco)" name="sort_by_stock_amount"/> + <menu_item_check label="Pokaż tylko foldery" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml b/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml index 60dc3673a9..60dc3673a9 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml 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 8f86965416..8f86965416 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml index 1d434670ee..1d434670ee 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_navbar.xml +++ b/indra/newview/skins/default/xui/pl/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml index fe5bc6ba6f..fe5bc6ba6f 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml index bd3d42f9b1..bd3d42f9b1 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml index 3da6c5c890..3da6c5c890 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_object.xml +++ b/indra/newview/skins/default/xui/pl/menu_object.xml diff --git a/indra/newview/skins/default/xui/pl/menu_object_icon.xml b/indra/newview/skins/default/xui/pl/menu_object_icon.xml index b499bca2db..b499bca2db 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/pl/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml index c093557e86..c093557e86 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml index 998e25f38e..998e25f38e 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml 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 9e59102788..9e59102788 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml 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 b62b85d30a..b62b85d30a 100755..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 diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups.xml b/indra/newview/skins/default/xui/pl/menu_people_groups.xml index ace5ebf888..ace5ebf888 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml index c70ea2315f..c70ea2315f 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml index a8cc6b4a60..a8cc6b4a60 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml 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 dcfc48fb60..dcfc48fb60 100755..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 diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml index 8ec3820f84..8ec3820f84 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml index b474a556bd..b474a556bd 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/pl/menu_picks.xml b/indra/newview/skins/default/xui/pl/menu_picks.xml index 6f6e4b7fa8..6f6e4b7fa8 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_picks.xml +++ b/indra/newview/skins/default/xui/pl/menu_picks.xml diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml index e9c00f51a9..e9c00f51a9 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml index c3b72d6abb..c3b72d6abb 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_place.xml +++ b/indra/newview/skins/default/xui/pl/menu_place.xml diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml index 3d0c1c87fb..3d0c1c87fb 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml index d1f283b7aa..d1f283b7aa 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml index 0139d3a987..0139d3a987 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml index ef836c8ecf..ef836c8ecf 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/pl/menu_save_outfit.xml b/indra/newview/skins/default/xui/pl/menu_save_outfit.xml index 4bc65eca38..4bc65eca38 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/pl/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml index 256500a402..256500a402 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml index 862f538aa7..862f538aa7 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_slurl.xml +++ b/indra/newview/skins/default/xui/pl/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml index 0e58592d46..0e58592d46 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml index cd36c116b0..cd36c116b0 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml index b12df08d6a..b12df08d6a 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/pl/menu_text_editor.xml b/indra/newview/skins/default/xui/pl/menu_text_editor.xml index 812f87bc1a..812f87bc1a 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/pl/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/pl/menu_topinfobar.xml b/indra/newview/skins/default/xui/pl/menu_topinfobar.xml index 53536c8f1c..53536c8f1c 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/pl/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml index db729be725..db729be725 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml index f340b3296a..f340b3296a 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_group.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_http.xml b/indra/newview/skins/default/xui/pl/menu_url_http.xml index e73f7b6745..e73f7b6745 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_http.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml index e36fa0dd2b..e36fa0dd2b 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_map.xml b/indra/newview/skins/default/xui/pl/menu_url_map.xml index 179ab1f676..179ab1f676 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_map.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml index 7576208a9e..7576208a9e 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml index 1b8dd62137..1b8dd62137 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_slapp.xml b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml index eb83245c48..eb83245c48 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml index 4d4a5b4c4d..4d4a5b4c4d 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml index e225546930..e225546930 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index a354cca9ad..6fd498eea8 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -1,48 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> <menu label="Ja" name="Me"> - <menu_item_call label="Ustawienia" name="Preferences"/> - <menu_item_call label="Dashboard" name="Manage My Account"/> - <menu_item_call label="Kup L$" name="Buy and Sell L$"/> <menu_item_call label="Mój Profil" name="Profile"/> <menu_item_call label="Mój wygląd" name="ChangeOutfit"/> <menu_item_check label="Moja Szafa" name="Inventory"/> - <menu_item_check label="Moja Szafa" name="ShowSidetrayInventory"/> - <menu_item_check label="Moje gesturki" name="Gestures"/> - <menu_item_check label="Mój głos" name="ShowVoice"/> <menu label="Ruch" name="Movement"> <menu_item_call label="Usiądź" name="Sit Down Here"/> <menu_item_check label="Zacznij latać" name="Fly"/> <menu_item_check label="Zawsze biegnij" name="Always Run"/> <menu_item_call label="Zatrzymaj animacje" name="Stop Animating My Avatar"/> </menu> - <menu label="Mój Status" name="Status"> - <menu_item_call label="Tryb oddalenia" name="Set Away"/> - <menu_item_call label="Tryb pracy" name="Set Busy"/> - </menu> + <menu label="Mój Status" name="Status"/> + <menu_item_call label="Kup L$" name="Buy and Sell L$"/> + <menu_item_call label="Moje rzeczy na Marketplace" name="MarketplaceListings"/> + <menu_item_call label="Dashboard" name="Manage My Account"/> + <menu_item_call label="Ustawienia" name="Preferences"/> <menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/> </menu> <menu label="Komunikacja" name="Communicate"> - <menu_item_call label="Znajomi" name="My Friends"/> - <menu_item_call label="Grupy" name="My Groups"/> <menu_item_check label="Czat lokalny" name="Nearby Chat"/> - <menu_item_call label="Osoby w pobliżu" name="Active Speakers"/> + <menu_item_check label="Znajomi" name="My Friends"/> + <menu_item_check label="Grupy" name="My Groups"/> + <menu_item_check label="Osoby w pobliżu" name="Active Speakers"/> </menu> <menu label="Świat" name="World"> - <menu_item_check label="Mini-Mapa" name="Mini-Map"/> + <menu_item_call label="Zapamiętaj to miejsce (LM)" name="Create Landmark Here"/> <menu_item_check label="Mapa Świata" name="World Map"/> + <menu_item_check label="Mini-Mapa" name="Mini-Map"/> <menu_item_check label="Szukaj" name="Search"/> + <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> + <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> <menu_item_call label="Zrób zdjęcie" name="Take Snapshot"/> - <menu_item_call label="Zapamiętaj to miejsce (LM)" name="Create Landmark Here"/> - <menu_item_separator/> <menu_item_call label="Profil miejsca" name="Place Profile"/> <menu_item_call label="O posiadłości" name="About Land"/> - <menu_item_call label="Region/Majątek" name="Region/Estate"/> - <menu_item_call label="Kup posiadłość" name="Buy Land"/> + <menu_item_call label="Region/Majątek" name="RegionEstate"/> <menu_item_call label="Moje posiadłości" name="My Land"/> + <menu_item_call label="Kup posiadłość" name="Buy Land"/> <menu label="Pokaż" name="LandShow"> - <menu_item_check label="Ustawienia ruchu" name="Movement Controls"/> - <menu_item_check label="Zobacz ustawienia" name="Camera Controls"/> <menu_item_check label="Linie bana" name="Ban Lines"/> <menu_item_check label="Emitery" name="beacons"/> <menu_item_check label="Granice posiadłości" name="Property Lines"/> @@ -51,15 +45,11 @@ <menu_item_check label="Właściwości posiadłości" name="Parcel Properties"/> <menu_item_check label="Menu Zaawansowane" name="Show Advanced Menu"/> </menu> - <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> - <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> <menu label="Słońce" name="Sun"> - <menu_item_call label="Wschód Słońca" name="Sunrise"/> - <menu_item_call label="Południe" name="Noon"/> - <menu_item_call label="Zachód Słońca" name="Sunset"/> - <menu_item_call label="Północ" name="Midnight"/> - <menu_item_call label="Używaj czasu Regionu" name="Revert to Region Default"/> - <menu_item_call label="Edytor środowiska" name="Environment Editor"/> + <menu_item_check label="Wschód Słońca" name="Sunrise"/> + <menu_item_check label="Południe" name="Noon"/> + <menu_item_check label="Zachód Słońca" name="Sunset"/> + <menu_item_check label="Północ" name="Midnight"/> </menu> </menu> <menu label="Buduj" name="BuildTools"> @@ -86,7 +76,6 @@ <menu_item_call label="Kup" name="Menu Object Buy"/> <menu_item_call label="Weź" name="Menu Object Take"/> <menu_item_call label="Weź kopię" name="Take Copy"/> - <menu_item_call label="Zapisz obiekt do Szafy" name="Save Object Back to My Inventory"/> <menu_item_call label="Zapisz do treści obiektu" name="Save Object Back to Object Contents"/> <menu_item_call label="Zwróć obiekt" name="Return Object back to Owner"/> </menu> @@ -116,17 +105,14 @@ <menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/> <menu_item_call label="animację (L$[COST])..." name="Upload Animation"/> <menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/> - <menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/> </menu> <menu_item_call label="Cofnij" name="Undo"/> <menu_item_call label="Ponów" name="Redo"/> </menu> <menu label="Pomoc" name="Help"> - <menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/> - <menu_item_check label="Włącz podpowiedzi" name="Enable Hints"/> <menu_item_call label="Złóż Raport o Nadużyciu" name="Report Abuse"/> <menu_item_call label="Zgłoś błędy klienta" name="Report Bug"/> - <menu_item_call label="Zderzenia, popchnięcia & uderzenia" name="Bumps, Pushes &amp; Hits"/> + <menu_item_call label="Zderzenia, popchnięcia i uderzenia" name="Bumps, Pushes &amp; Hits"/> <menu_item_call label="O [APP_NAME]" name="About Second Life"/> </menu> <menu label="Zaawansowane" name="Advanced"> @@ -147,7 +133,6 @@ <menu_item_check label="Ukryj cząsteczki" name="Hide Particles"/> <menu_item_check label="Ukryj zaznaczone" name="Hide Selected"/> <menu_item_check label="Pokaż przeźroczyste obiekty" name="Highlight Transparent"/> - <menu_item_check label="Pokaż załączniki HUD" name="Show HUD Attachments"/> <menu_item_check label="Pokaż celownik myszki" name="ShowCrosshairs"/> </menu> <menu label="Rodzaje renderowania" name="Rendering Types"> @@ -178,7 +163,6 @@ <menu_item_call label="Wyczyść bufor danych grupy" name="ClearGroupCache"/> <menu_item_check label="Wygładzanie ruchu myszki" name="Mouse Smoothing"/> <menu label="Skróty" name="Shortcuts"> - <menu_item_call label="Zwolnij klawisze" name="Release Keys"/> <menu_item_check label="Pokaż menu Zaawansowane - skrót" name="Show Advanced Menu - legacy shortcut"/> <menu_item_call label="Zamknij okno" name="Close Window"/> <menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/> @@ -199,8 +183,7 @@ <menu_item_check label="Konsola tekstur" name="Texture Console"/> <menu_item_check label="Debugowanie zdarzeń konsoli" name="Debug Console"/> <menu_item_call label="Konsola powiadomień" name="Notifications"/> - <menu_item_check label="Konsola rozmiaru tekstury" name="Texture Size"/> - <menu_item_check label="Konsola kategorii tekstur" name="Texture Category"/> + <menu_item_check label="Konsola debugowania regionu" name="Region Debug Console"/> <menu_item_check label="Szybkie timery" name="Fast Timers"/> <menu_item_check label="Pamięć" name="Memory"/> <menu_item_call label="Info Regionu do debugowania konsoli" name="Region Info to Debug Console"/> @@ -240,12 +223,10 @@ <menu_item_check label="Oświetlenie i cienie" name="Advanced Lighting Model"/> <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"/> @@ -253,7 +234,7 @@ <menu label="Sieć" name="Network"> <menu_item_check label="Zatrzymaj awatara" name="AgentPause"/> <menu_item_call label="Upuść pakiet pamięci" name="Drop a Packet"/> - </menu> + </menu> <menu label="Świat" name="DevelopWorld"> <menu_item_check label="Domyślne ustawienia środowiska Regionu" name="Sim Sun Override"/> <menu_item_check label="Ustalona pogoda" name="Fixed Weather"/> @@ -263,8 +244,6 @@ <menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/> <menu_item_call label="Przeglądarka zawartości strony" name="Web Content Browser"/> <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="Konsola debugowania regionu" name="Region Debug Console"/> <menu_item_check label="Debugowanie zdarzeń klikania" name="Debug Clicks"/> <menu_item_check label="Debugowanie zdarzeń myszy" name="Debug Mouse Events"/> </menu> @@ -289,7 +268,6 @@ </menu> <menu_item_call label="Powrót do domyślnych parametrów" name="Force Params to Default"/> <menu_item_check label="Info o animacji" name="Animation Info"/> - <menu_item_check label="Wolne animacje" name="Slow Motion Animations"/> <menu_item_check label="Wyłącz poziom detalu" name="Disable LOD"/> <menu_item_check label="Pokaż szczegóły kolizji" name="Show Collision Skeleton"/> <menu_item_check label="Wyświetl cel agenta" name="Display Agent Target"/> 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 bf85246be8..bf85246be8 100755..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 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 47cafdbd99..47cafdbd99 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml 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 7531437043..7531437043 100755..100644 --- a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/pl/mime_types.xml b/indra/newview/skins/default/xui/pl/mime_types.xml index cbf2afa91d..cbf2afa91d 100755..100644 --- a/indra/newview/skins/default/xui/pl/mime_types.xml +++ b/indra/newview/skins/default/xui/pl/mime_types.xml diff --git a/indra/newview/skins/default/xui/pl/mime_types_linux.xml b/indra/newview/skins/default/xui/pl/mime_types_linux.xml index a2b8168b51..a2b8168b51 100755..100644 --- a/indra/newview/skins/default/xui/pl/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/pl/mime_types_linux.xml diff --git a/indra/newview/skins/default/xui/pl/mime_types_mac.xml b/indra/newview/skins/default/xui/pl/mime_types_mac.xml index 7213b26165..7213b26165 100755..100644 --- a/indra/newview/skins/default/xui/pl/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/pl/mime_types_mac.xml diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml index f255b1b8ea..c4a65d92b4 100755..100644 --- a/indra/newview/skins/default/xui/pl/notifications.xml +++ b/indra/newview/skins/default/xui/pl/notifications.xml @@ -28,7 +28,7 @@ <template name="okcancelignore"> <form> <button name="OK_okcancelignore" text="$yestext"/> - <button name="Cancel_okcancelignore" text="$canceltext"/> + <button name="Cancel_okcancelignore" text="$notext"/> </form> </template> <template name="okhelpbuttons"> @@ -67,6 +67,10 @@ Szczegóły błędu: Błąd o nazwie '[_NAME]' nie został odnaleziony [MESSAGE] <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <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"/> @@ -85,6 +89,88 @@ Upewnij się, że Twoje połączenie z internetem działa. Zapisać zmiany dotyczące ubrania/części ciała? <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> </notification> + <notification name="StockPasteFailed"> + Kopiowanie lub przeniesienie do folderu magazynowego nie powiodło się: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Kopiowanie lub przenoszenie przedmiotów na Marketplace nie powiodło się: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Transakcja z Marketplace nie powiodła się: + + Powód: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Wylistowanie tego produktu lub aktywowanie folderu z wersją nie było możliwe. Zazwyczaj jest to spowodowane brakującymi informacjami w formularzu z opisem przedmiotu, ale może to również wynikać z błędów w strukturze folderów. Zmień opis przedmiotu lub sprawdź foldery, aby znaleźć błędy. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Listowanie na Marketplace nie powiodło się: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Aktywacja tego folderu wersji nie powiodła się: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Jeśli kontynuujesz, to zmieni się aktywna zawartość tego przedmiotu. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź przed zmodyfikowaniem aktywnego przedmiotu na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Przedmioty przeciągnięte do okna listowania na Marketplace są przenoszone z ich oryginalnych lokalizacji, a nie kopiowane. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim prześlę na Marketplace przedmiot z mojej Szafy" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Przeniesienie lub usunięcie folderu usunie również Twój przedmiot na Marketplace. Jeśli chcesz, aby przedmiot był ciągle widoczny na Marketplace musisz przesunąć lub usunąć zawartość folderu z wersją, którą chcesz zmodyfikować. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim usunę lub przeniosę przedmiot na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Nie masz praw do skopiowania jednego lub więcej obiektów na Marketplace. Możesz je przenieść lub pozostawić. + <usetemplate canceltext="Anuluj" ignoretext="Potwierdź, zanim wyślę na Marketplace przedmioty bez praw kopiowania" name="yesnocancelbuttons" notext="Nie przenoś" yestext="Przenieś"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Jeśli kontynuujesz, to ten przedmiot zostanie usunięty z listy. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim usunę z listy przedmiot na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Jeśli kontynuujesz, to folder wersji tego przedmiotu zostanie zdeaktywowany. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź przed wyłączeniem folderu wersji dla przedmiotu na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Ten przedmiot nie może zostać zaktualizowany. +[[URL] Kliknij tutaj] aby zaktualizować go na Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Nie możesz założyć ubrań lub części ciała, które znajdują się w folderze listingów Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Nieprawidłowy ID przedmiotu. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Istnieje kilka, lub żadna, wersji folderu dla tego przedmiotu. Będziesz musiała/ wybrać i uaktywnić jedną oddzielnie później. + <usetemplate ignoretext="Powiadamiaj o aktywacji folderu wersji, gdy tworzę przedmiot z kilkoma folderami wersji" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Przedmioty z ograniczonymi zasobami magazynowymi różnych typów zostały rozdzielone do osobnych folderów, aby ogólna hierarchia katalogów umożliwiała ich listowanie. + <usetemplate ignoretext="Powiadom, gdy folder magazynowy jest dzielony przed listowaniem" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Twój przedmiot został usunięty z listy, ponieważ nie ma go już w magazynie. Musisz dodać więcej jego jednostek do folderu magazynowego, aby można było go ponownie wyświetlać na liście. + <usetemplate ignoretext="Powiadom, gdy przedmiot jest zdjęty z listy, bo folder zasobów magazynowych jest pusty" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut. </notification> @@ -391,6 +477,10 @@ Pamiętaj: Opcja ta wyczyszcza bufor danych. Zapisać zmiany? <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/> </notification> + <notification name="DeleteNotecard"> + Usunąć notkę? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Nie można zapisać gesturki. Ta gesturka ma zbyt wiele etapów. @@ -1075,9 +1165,6 @@ Przekazać tą posiadłość o powierzchni [AREA] m² grupie '[GROUP_NAME]& <notification name="DisplaySetToSafe"> Ustawienia grafiki zostały zmienione do bezpiecznego poziomu ponieważ opcja -safe została wybrana. </notification> - <notification name="DisplaySetToRecommended"> - Ustawienia grafiki zostały zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu. - </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] <usetemplate name="okbutton" yestext="OK"/> @@ -1338,6 +1425,7 @@ W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME]. </notification> <notification name="RequiredUpdateDownloadedDialog"> W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME]. +[[INFO_URL] Information about this update] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1415,12 +1503,6 @@ Chcesz opuścić grupę? Nie możesz zaoferować znajomości w tym momencie. Spróbuj jeszcze raz za chwilę. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="BusyModeSet"> - Tryb Pracy jest włączony. -Czat i IM będą ukryte. Wysłane IM będą otrzymywały Twoją odpowiedź Trybu Pracy. Propozycje teleportacji będą odrzucone. -Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywane w folderze "Kosz" w Twojej szafie. - <usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/> - </notification> <notification name="JoinedTooManyGroupsMember"> Należysz już do maksymalnej ilości grup. Opuść proszę przynajmniej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów. [NAME] oferuje Ci członkostwo w grupie. @@ -1434,8 +1516,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywa Wyrzuć tego Rezydenta, wysyłając następujący komunikat. <form name="form"> <input name="message"> - Administrator wylogował Cię. - </input> + Administrator wylogował Cię. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1444,8 +1526,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywa Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu? <form name="form"> <input name="message"> - Administrator wylogował Cię. - </input> + Administrator wylogował Cię. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1454,8 +1536,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywa Unieruchom tego Rezydenta, wysyłając następujący komunikat. <form name="form"> <input name="message"> - Unieruchomiono Cię. Nie możesz się ruszać ani rozmawiać. Administrator skontaktuje się z Tobą poprzez IM. - </input> + Unieruchomiono Cię. Nie możesz się ruszać ani rozmawiać. Administrator skontaktuje się z Tobą poprzez IM. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1464,8 +1546,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywa Cofnij unieruchomienie tego Rezydenta, wysyłając następujący komunikat. <form name="form"> <input name="message"> - Odblokowano Cię. - </input> + Odblokowano Cię. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1617,14 +1699,8 @@ Kontynuować? Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="RegionEntryAccessBlocked_KB"> - Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] </notification> <notification name="RegionEntryAccessBlocked_Notify"> Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. @@ -1648,15 +1724,6 @@ W celu uzyskania dostępu do tego regiony zmień proszę swój status ustawień Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="LandClaimAccessBlocked_KB"> - Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> - </notification> <notification name="LandClaimAccessBlocked_Notify"> Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości. </notification> @@ -1664,7 +1731,6 @@ Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostęp W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości. Możesz wybrać 'Zmień Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja > Ustawienia > Główne. - <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/> </notification> <notification name="LandBuyAccessBlocked"> Ze względu na Twój wiek, nie możesz kupić tej posiadłości. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku. @@ -1672,15 +1738,6 @@ Możesz wybrać 'Zmień Ustawienia' by dokonać zmian w ustawieniach T Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="LandBuyAccessBlocked_KB"> - Ze względu na Twój wiek, nie możesz kupić tej posiadłości. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="Ze względu na Twój wiek, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> - </notification> <notification name="LandBuyAccessBlocked_Notify"> Ze względu na Twój wiek, nie możesz kupić tej posiadłości. </notification> @@ -1688,7 +1745,6 @@ Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostęp W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości. Możesz wybrać 'Zmień Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja > Ustawienia > Główne. - <usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/> </notification> <notification name="TooManyPrimsSelected"> Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie @@ -1849,6 +1905,10 @@ Przenieść obiekty szafy? <ignore name="ignore" text="Opcja Zapłać Obiektowi została aktywowana podczas budowania obiektów bez skryptu z funkcją money()."/> </form> </notification> + <notification name="PayConfirmation"> + Potwierdź, że na pewno chcesz zapłacić [AMOUNT]L$ dla [TARGET]. + <usetemplate ignoretext="Potwierdź przed płaceniem (kwoty ponad 200 L$)" name="okcancelignore" notext="Anuluj" yestext="Płać"/> + </notification> <notification name="OpenObjectCannotCopy"> W tym obiekcie nie ma elementów które możesz skopiować. </notification> @@ -1918,16 +1978,6 @@ Chcesz go zamienić na wybrany obiekt? <button ignore="Nie zamieniaj" name="No" text="Anuluj"/> </form> </notification> - <notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay"> - Jesteś w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę. - -Chcesz wyłączyć Tryb pracy przed zakończeniem tej tranzakcji? - <form name="form"> - <ignore name="ignore" save_option="true" text="Jesteś w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę. Chcesz wyłączyć Tryb Pracy przed zakończeniem tej transakcji?"/> - <button ignore="Zawsz wyłączaj tryb pracy" name="Yes" text="OK"/> - <button ignore="Nie wyłączaj trybu pracy" name="No" text="Anuluj"/> - </form> - </notification> <notification name="ConfirmDeleteProtectedCategory"> Ten folder '[FOLDERNAME]' to folder systemowy. Usunięcie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować? <usetemplate ignoretext="Potwierdź zanim folder systemu zostanie skasowany" name="okcancelignore" notext="Anuluj" yestext="OK"/> @@ -1965,10 +2015,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t Chcesz zmienić zapisane ustawienia? <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> </notification> - <notification name="WLDeletePresetAlert"> - Chcesz usunąć [SKY]? - <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> - </notification> <notification name="WLNoEditDefault"> Nie możesz edytować lub usunąć domyślnych ustawień. </notification> @@ -1979,35 +2025,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce? <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> </notification> - <notification name="NewSkyPreset"> - Nazwij nowe niebo. - <form name="form"> - <input name="message"> - Nowe ustawienie - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Anuluj"/> - </form> - </notification> - <notification name="ExistsSkyPresetAlert"> - Ustawienie już istnieje! - </notification> - <notification name="NewWaterPreset"> - Nazwij nowe ustawienie wody. - <form name="form"> - <input name="message"> - Nowe ustawienie - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Anuluj"/> - </form> - </notification> - <notification name="ExistsWaterPresetAlert"> - Ustawienie już istnieje! - </notification> - <notification name="WaterNoEditDefault"> - Domyślne ustawienie nie może być zmienione ani usunięte. - </notification> <notification name="ChatterBoxSessionStartError"> Błąd podczas rozpoczynania czatu/IM z [RECIPIENT]. [REASON] @@ -2038,10 +2055,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t Nie masz dostępu do tej posiadłości ze względu na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić? [_URL] - <url name="url" option="0"> - https://secondlife.com/account/verification.php - </url> - <usetemplate ignoretext="Brak weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> Nie masz dostępu do tej posiadłości ze względu na brak danych o Twoim koncie. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić? @@ -2076,12 +2089,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t <notification name="GroupNotice"> Temat: [SUBJECT], Treść: [MESSAGE] </notification> - <notification name="FriendOnline"> - <nolink>[NAME]</nolink> jest w Second Life - </notification> - <notification name="FriendOffline"> - <nolink>[NAME]</nolink> opuszcza Second Life - </notification> <notification name="AddSelfFriend"> Nie możesz dodać siebie do listy znajomych. </notification> @@ -2361,9 +2368,6 @@ Spróbuj ponowanie za kilka minut. <notification name="NoValidCircuit"> Nieważny obwód kodowania. </notification> - <notification name="NoValidTimestamp"> - Niewłaściwy czas zapisu. - </notification> <notification name="NoPendingConnection"> Brak możliwości wykonania połączenia. </notification> @@ -2525,22 +2529,17 @@ Czy się zgadzasz? <form name="form"> <button name="Grant" text="Zaakceptuj"/> <button name="Deny" text="Odmów"/> - <button name="Details" text="Szczegóły..."/> </form> </notification> <notification name="ScriptDialog"> [NAME]'s '<nolink>[TITLE]</nolink>' [MESSAGE] - <form name="form"> - <button name="Ignore" text="Zignoruj"/> - </form> + <form name="form"/> </notification> <notification name="ScriptDialogGroup"> [GROUPNAME]'s '<nolink>[TITLE]</nolink>' [MESSAGE] - <form name="form"> - <button name="Ignore" text="Zignoruj"/> - </form> + <form name="form"/> </notification> <notification name="BuyLindenDollarSuccess"> Dziękujemy za wpłatę! @@ -2857,10 +2856,6 @@ Kliknij i przeciągnij gdziekolwiek aby obrócić widok. <button name="cancel" text="Anuluj"/> </form> </notification> - <notification label="" name="ModeChange"> - Zmiana trybu wymaga restartu. - <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> - </notification> <notification label="" name="NoClassifieds"> Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania. <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> @@ -2889,9 +2884,6 @@ Kliknij i przeciągnij gdziekolwiek aby obrócić widok. Płacenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania. <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> </notification> - <global name="UnsupportedCPU"> - - Prędkość Twojego CPU nie spełnia minimalnych wymagań. - </global> <global name="UnsupportedGLRequirements"> Wygląda na to, że Twój system nie spełnia wymagań sprzętowych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz taką kartę zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego. @@ -2916,4 +2908,16 @@ W innym przypadku możesz poszukać na mapie miejsca oznaczone jako "Infohu <global name="You died and have been teleported to your home location"> Nastąpiła śmierć i teleportacja do Miejsca Startu. </global> + <notification name="TeleportedByAttachment"> + You have been teleported by an attachment on [ITEM_ID] + <usetemplate ignoretext="Zostałeś/aś teleportowany/a przez dodatek" name="notifyignore"/> + </notification> + <notification name="TeleportedByObjectOnParcel"> + You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + <usetemplate ignoretext="Zostałeś/aś teleportowany/a przez obiekt na działce" name="notifyignore"/> + </notification> + <notification name="DefaultObjectPermissions"> + Wystąpił problem z zapisywaniem domyślnych zezwoleń obiektu: [REASON]. Spróbuj ustawić je ponownie później. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml index bac885e5d8..bac885e5d8 100755..100644 --- a/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/pl/panel_active_object_row.xml b/indra/newview/skins/default/xui/pl/panel_active_object_row.xml index ab1d8d7007..ab1d8d7007 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/pl/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml index ba0c85e4ef..ba0c85e4ef 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml 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 c43a9bed81..c43a9bed81 100755..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 diff --git a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml index 62cb392ba7..62cb392ba7 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml index cebb6e3cfe..cebb6e3cfe 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml index 560bfe78f4..560bfe78f4 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml index 8a033fc32f..8a033fc32f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml index e32c12a8ee..e32c12a8ee 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml 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 52f54fc7cf..52f54fc7cf 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/pl/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml index 17a6d1eb8b..17a6d1eb8b 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml index 42d1ead400..42d1ead400 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml b/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml index 970b994c20..970b994c20 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml index f9fba4d79f..f9fba4d79f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml index 83210808f1..83210808f1 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml index 51ee3af00d..51ee3af00d 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml 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 7cfd9c221c..7cfd9c221c 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml index 390a5313b5..390a5313b5 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml index d32646d1a3..d32646d1a3 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_hair.xml b/indra/newview/skins/default/xui/pl/panel_edit_hair.xml index cbcba97eb6..cbcba97eb6 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml index 7653e84cc0..7653e84cc0 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pants.xml b/indra/newview/skins/default/xui/pl/panel_edit_pants.xml index 7975e55746..7975e55746 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_physics.xml b/indra/newview/skins/default/xui/pl/panel_edit_physics.xml index a773a52a59..a773a52a59 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_physics.xml 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 72c162f63d..72c162f63d 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml 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 e6fd8b18f8..e6fd8b18f8 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shape.xml b/indra/newview/skins/default/xui/pl/panel_edit_shape.xml index 54f9fdc21c..54f9fdc21c 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml index 9530c781ab..9530c781ab 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml index d90a6d8726..d90a6d8726 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_skin.xml b/indra/newview/skins/default/xui/pl/panel_edit_skin.xml index 9e0acd3cec..9e0acd3cec 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml index f74ad916cd..f74ad916cd 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_socks.xml b/indra/newview/skins/default/xui/pl/panel_edit_socks.xml index b41069e8d7..b41069e8d7 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml index 6fd1e2277a..6fd1e2277a 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml index f2a9b10f17..f2a9b10f17 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml index 7da1341e96..7da1341e96 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml 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 2027b8715b..2027b8715b 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml index 4e373cdf8f..4e373cdf8f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml index a4d76badf0..a4d76badf0 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_general.xml 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 37fb529f2b..37fb529f2b 100755..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 diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml index 1822551e86..1822551e86 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml index aea4e50fd5..aea4e50fd5 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_list_item.xml b/indra/newview/skins/default/xui/pl/panel_group_list_item.xml index a8b4056976..a8b4056976 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml index a3b0998de3..a3b0998de3 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_notify.xml b/indra/newview/skins/default/xui/pl/panel_group_notify.xml index d27a81217a..d27a81217a 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml index 9e9c79d26a..9e9c79d26a 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml index 4aadd3b93b..4aadd3b93b 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/pl/panel_inventory_item.xml b/indra/newview/skins/default/xui/pl/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_landmark_info.xml b/indra/newview/skins/default/xui/pl/panel_landmark_info.xml index 3370f6f58e..3370f6f58e 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/pl/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/pl/panel_landmarks.xml b/indra/newview/skins/default/xui/pl/panel_landmarks.xml index 039be3b504..039be3b504 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/pl/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml index c87a3d3bd4..42809a8afb 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_login.xml +++ b/indra/newview/skins/default/xui/pl/panel_login.xml @@ -1,48 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> - <layout_stack name="login_widgets"> - <layout_panel name="login"> - <text name="log_in_text"> - POŁĄCZ - </text> - <text name="username_text"> - Użytkownik: - </text> - <combo_box name="username_combo" tool_tip="Nazwę użytkownika wybierasz przy rejestracji, np. bobsmith12 lub Steller Sunshine"/> - <text name="password_text"> - Hasło: - </text> - </layout_panel> - <layout_panel name="start_location_panel"> - <text name="start_location_text"> - Rozpocznij w: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/> - <combo_box.item label="Moje Miejsce Startu" name="MyHome"/> - <combo_box.item label="<Wpisz Region>" name="Typeregionname"/> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> + <layout_stack name="ui_stack"> + <layout_panel name="ui_container"> + <combo_box label="My favorite places" name="start_location_combo"> + <combo_box.item label="Ostatnia lokalizacja" name="MyLastLocation"/> </combo_box> </layout_panel> - <layout_panel name="links_login_panel"> - <text name="login_help"> - Potrzebujesz pomocy z logowaniem się? - </text> - <text name="forgot_password_text"> - Zapomniałeś swojej nazwy użytkownika lub hasła? - </text> - <button label="Połącz" name="connect_btn"/> - <check_box label="Zapamiętaj hasło" name="remember_check"/> - </layout_panel> - <layout_panel name="links"> - <text name="create_account_text"> - CREATE YǾUR ACCǾUNT - </text> - <button name="create_new_account_btn" - label="Utwórz nowe konto" - width="120"/> - </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml index 8d6fa1173c..8d6fa1173c 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml new file mode 100644 index 0000000000..7db98a106d --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opcje widoku/sortowania"/> + <button name="add_btn" tool_tip="Utwórz nowy folder"/> + <button label="Zweryfikuj" name="audit_btn" tool_tip="Sprawdź swoje przedmioty na Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtruj przedmioty" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..be4be5b80f --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="WSZYSTKO" name="All Items" tool_tip="Przeciągnij tutaj przedmioty, aby je wylistować"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..3b17298742 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NA LIŚCIE" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..f818da6821 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NIEPRZYPISANE" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..8031fe78f7 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="UKRYTE" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_me.xml b/indra/newview/skins/default/xui/pl/panel_me.xml index 72a5f51520..72a5f51520 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_me.xml +++ b/indra/newview/skins/default/xui/pl/panel_me.xml diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml index 914a2aee73..914a2aee73 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml index a87c29d7b3..a87c29d7b3 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml index 7e95c4942f..7e95c4942f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml index b01e686c41..b01e686c41 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml index 4ed3ff669b..4ed3ff669b 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml index d77c6d7852..d77c6d7852 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml b/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml index e1668e1ef1..e1668e1ef1 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml b/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml 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 50353d4fba..50353d4fba 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml 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 bf23ace58f..bf23ace58f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml index 2f8c008f98..2f8c008f98 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml index ed3057399d..ed3057399d 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml index 5559c151e7..5559c151e7 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml index ef52e2148b..ef52e2148b 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_people.xml +++ b/indra/newview/skins/default/xui/pl/panel_people.xml 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 26afded795..26afded795 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/pl/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/pl/panel_picks.xml b/indra/newview/skins/default/xui/pl/panel_picks.xml index 1ba4e76196..1ba4e76196 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_picks.xml +++ b/indra/newview/skins/default/xui/pl/panel_picks.xml diff --git a/indra/newview/skins/default/xui/pl/panel_place_profile.xml b/indra/newview/skins/default/xui/pl/panel_place_profile.xml index 2a4ffab36c..2a4ffab36c 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml index d69d137d23..d69d137d23 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_places.xml +++ b/indra/newview/skins/default/xui/pl/panel_places.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml index 5e61f62691..5e61f62691 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml index d53a99e8c1..d53a99e8c1 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml 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 7fd1029e6a..7fd1029e6a 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml b/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml index 3affda57bf..3affda57bf 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml index fff56eab6e..fff56eab6e 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml 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 4cd271a141..4cd271a141 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_move.xml b/indra/newview/skins/default/xui/pl/panel_preferences_move.xml index 4c2df2c1f3..4c2df2c1f3 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml index 30b64bc977..30b64bc977 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml index b663e18227..b663e18227 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml index 46f5ebb8e2..46f5ebb8e2 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml 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 b5763e1291..b5763e1291 100755..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 diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml index 932e3631ab..932e3631ab 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_debug.xml b/indra/newview/skins/default/xui/pl/panel_region_debug.xml index c5b08383dc..c5b08383dc 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml index 1b64827725..1b64827725 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml index 601571f62e..601571f62e 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml index f22b4a5989..f22b4a5989 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_texture.xml b/indra/newview/skins/default/xui/pl/panel_region_texture.xml index c6ed2457f1..c6ed2457f1 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_texture.xml diff --git a/indra/newview/skins/default/xui/pl/panel_script_ed.xml b/indra/newview/skins/default/xui/pl/panel_script_ed.xml index b05223aa0f..b05223aa0f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/pl/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml index a52d8aed3d..a52d8aed3d 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml index 070f025087..070f025087 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml index 70a6e39412..70a6e39412 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/pl/panel_side_tray.xml b/indra/newview/skins/default/xui/pl/panel_side_tray.xml index ff4ca23a4d..ff4ca23a4d 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/pl/panel_side_tray.xml 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 95cd7c53dc..95cd7c53dc 100755..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 diff --git a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml index 9f7f7f1238..9f7f7f1238 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml index 6aa0d27bb8..e9b1ba89a5 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml @@ -1,33 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="StatBarDaysOfWeek"> - Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota - </panel.string> - <panel.string name="StatBarMonthsOfYear"> - Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień - </panel.string> - <panel.string name="packet_loss_tooltip"> - Utracone pakiety - </panel.string> - <panel.string name="bandwidth_tooltip"> - Przepustowość - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="StatBarDaysOfWeek">Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota</panel.string> + <panel.string name="StatBarMonthsOfYear">Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień</panel.string> + <panel.string name="packet_loss_tooltip">Utracone pakiety</panel.string> + <panel.string name="bandwidth_tooltip">Przepustowość</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel name="balance_bg"> - <text name="balance" tool_tip="Kliknij aby odświeżyć bilans L$" value="L$20"/> + <text name="balance" tool_tip="Kliknij aby odświeżyć bilans L$" value="L$??"/> <button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić więcej L$"/> </panel> - <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/> <button name="volume_btn" tool_tip="Regulacja głośności"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_teleport_history.xml b/indra/newview/skins/default/xui/pl/panel_teleport_history.xml index b43bd96536..b43bd96536 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/pl/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml index f0fe28c4ce..f0fe28c4ce 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml b/indra/newview/skins/default/xui/pl/panel_voice_effect.xml index f8a076424f..f8a076424f 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/pl/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml index 1611900700..1611900700 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/pl/panel_world_map.xml b/indra/newview/skins/default/xui/pl/panel_world_map.xml index 69f18be767..69f18be767 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_world_map.xml +++ b/indra/newview/skins/default/xui/pl/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/pl/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml index 57df2bc70f..57df2bc70f 100755..100644 --- a/indra/newview/skins/default/xui/pl/role_actions.xml +++ b/indra/newview/skins/default/xui/pl/role_actions.xml diff --git a/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml index cea903769c..cea903769c 100755..100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml index 1034a06f1f..1034a06f1f 100755..100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml 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 9ec3c480b7..4b3df5cde8 100755..100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml @@ -63,9 +63,10 @@ <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 name="ComboBoxSaleType"> + <combo_box.item label="Kopia" name="Copy"/> + <combo_box.item label="Zawartość" name="Contents"/> + <combo_box.item label="Oryginał" name="Original"/> </combo_box> <spinner label="Cena: L$" name="Edit Cost"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml index eb8c9cdbbb..503541a96e 100755..100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml @@ -1,65 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profil Obiektu"> - <panel.string name="text deed continued"> - Przypisz - </panel.string> - <panel.string name="text deed"> - Przypisz - </panel.string> - <panel.string name="text modify info 1"> - Możesz modyfikować ten obiekt - </panel.string> - <panel.string name="text modify info 2"> - Możesz modyfikować te obiekty - </panel.string> - <panel.string name="text modify info 3"> - Nie możesz modyfikować tego obiektu - </panel.string> - <panel.string name="text modify info 4"> - Nie możesz modyfikować tych obiektów - </panel.string> - <panel.string name="text modify warning"> - Ten obiekt ma części zgrupowane - </panel.string> - <panel.string name="Cost Default"> - Cena: L$ - </panel.string> - <panel.string name="Cost Total"> - Cena całkowita: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Cena za jednostkę: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Cena mieszana - </panel.string> - <panel.string name="Sale Mixed"> - Sprzedaż mieszana - </panel.string> + <panel.string name="text deed continued">Przypisz</panel.string> + <panel.string name="text deed">Przypisz</panel.string> + <panel.string name="text modify info 1">Możesz modyfikować ten obiekt</panel.string> + <panel.string name="text modify info 2">Możesz modyfikować te obiekty</panel.string> + <panel.string name="text modify info 3">Nie możesz modyfikować tego obiektu</panel.string> + <panel.string name="text modify info 4">Nie możesz modyfikować tych obiektów</panel.string> + <panel.string name="text modify warning">Ten obiekt ma części zgrupowane</panel.string> + <panel.string name="Cost Default">Cena: L$</panel.string> + <panel.string name="Cost Total">Suma: L$</panel.string> + <panel.string name="Cost Per Unit">Cena za jednostkę: L$</panel.string> + <panel.string name="Cost Mixed">Cena mieszana</panel.string> + <panel.string name="Sale Mixed">Sprzedaż mieszana</panel.string> <text name="title" value="Profil Obiektu"/> <text name="where" value="(W Świecie)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nazwa: - </text> - <text name="Description:"> - Opis: - </text> - <text name="CreatorNameLabel"> - Twórca: - </text> - <text name="Owner:"> - Właściciel: - </text> - <text name="Group_label"> - Grupa: - </text> + <text name="Name:">Nazwa:</text> + <text name="Description:">Opis:</text> + <text name="CreatorNameLabel">Twórca:</text> + <text name="Owner:">Właściciel:</text> + <text name="Group_label">Grupa:</text> <button name="button set group" tool_tip="Wybierz grupę by udostępnić jej prawa do tego obiektu"/> <name_box initial_value="Ładowanie..." name="Group Name Proxy"/> <button label="Przypisz" label_selected="Przypisz" name="button deed" tool_tip="Opcja przepisania udostępnia obiektowi takie same prawa jak zostały zaznaczone dla następnego właściciela. Obiekty udostępnione grupie mogą zostać przepisane dla grupy przez oficera grupy."/> - <text name="label click action"> - Kliknij by: - </text> + <text name="label click action">Kliknij by:</text> <combo_box name="clickaction"> <combo_box.item label="Dotknij (domyślne)" name="Touch/grab(default)"/> <combo_box.item label="Usiądź na obiekcie" name="Sitonobject"/> @@ -68,21 +32,13 @@ <combo_box.item label="Otwórz" name="Open"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Możesz modyfikować ten obiekt - </text> - <text name="Anyone can:"> - Każdy: - </text> + <text name="perm_modify">Możesz modyfikować ten obiekt</text> + <text name="Anyone can:">Każdy:</text> <check_box label="Kopiuj" name="checkbox allow everyone copy"/> <check_box label="Przesuń" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupie: - </text> + <text name="GroupLabel">Grupie:</text> <check_box label="Udostępnij" name="checkbox share with group" tool_tip="Udostępnij prawa do modyfikacji tego obiektu wszystkim członkom, którzy posiadają przywilej modyfikacji obiektów grupy. By ograniczyć, przypisz obiekt do grupy."/> - <text name="NextOwnerLabel"> - Następny Właściciel: - </text> + <text name="NextOwnerLabel">Następny Właściciel:</text> <check_box label="Modyfikuj" name="checkbox next owner can modify"/> <check_box label="Kopiuj" name="checkbox next owner can copy"/> <check_box label="Oddaj" name="checkbox next owner can transfer" tool_tip="Następny właściciel może sprzedać lub oddać ten obiekt"/> @@ -95,24 +51,12 @@ </combo_box> <spinner label="Cena: L$" name="Edit Cost"/> <check_box label="Pokaż w wyszukiwarce" name="search_check" tool_tip="Udostępnij widzialność tego obiektu w wyszukiwarce"/> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Otwórz" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index f86e393646..7801d50457 100755..100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -182,6 +182,48 @@ Tylko pojedynczy obiekt może być tutaj przeciągnięty </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> + <string name="TooltipOutboxDragToWorld"> + Nie możesz rezzować obiektów z folderu rzeczy na Marketplace + </string> + <string name="TooltipOutboxWorn"> + Nie możesz umieszczać na Marketplace przedmiotów, które masz na sobie założone + </string> + <string name="TooltipOutboxFolderLevels"> + Głębokość zagnieżdżonych folderów przekracza [AMOUNT]. Zmniejsz ilość zagdzieżdżeń; Spakuj przedmioty w pudełka, jeśli to pomoże. + </string> + <string name="TooltipOutboxTooManyFolders"> + Ilość podfolderów w folderze najwyższego poziomu przekracza [AMOUNT]. Zmniejsz ilość folderów; Spakuj przedmioty w pudełka, jeśli to pomoże. + </string> + <string name="TooltipOutboxTooManyObjects"> + Ilość pozycji w folderze najwyższego poziomu przekracza [AMOUNT]. Jeśli chcesz sprzedać więcej, niż [AMOUNT] przedmiotów jako jedną pozycję, to musisz je spakować w pudełka. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Ilość przedmiotów w folderze magazynowym przekracza [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Możesz przenosić foldery lub przedmioty wyłącznie do karty WSZYSTKO. Wybierz teraz tą kartę i spróbuj ponownie. + </string> + <string name="TooltipOutboxNoTransfer"> + Jeden lub kilka z tych obiektów nie może zostać sprzedany / przetransferowany + </string> + <string name="TooltipOutboxNotInInventory"> + Marketplace akceptuje tylko przedmioty bezpośrednio z Twojej Szafy. + </string> + <string name="TooltipOutboxLinked"> + Nie możesz sprzedać zlinkowanych folderów lub przedmiotów na Marketplace + </string> + <string name="TooltipOutboxCallingCard"> + Nie możesz umieszczać wizytówek na Marketplace + </string> + <string name="TooltipOutboxDragActive"> + Nie można przenieść wylistowanego przedmiotu + </string> + <string name="TooltipOutboxCannotMoveRoot"> + Nie możesz przenieść folderu głównego przedmiotów na Marketplace + </string> + <string name="TooltipOutboxMixedStock"> + Wszystkie przedmioty w folderze magazynowym muszą mieć ten sam typ i zezwolenia + </string> <string name="TooltipHttpUrl"> Kliknij aby zobaczyć zawartość tej strony internetowej </string> @@ -429,9 +471,6 @@ <string name="AvatarAway"> Śpi </string> - <string name="AvatarBusy"> - Pracuje - </string> <string name="AvatarMuted"> Wyciszony </string> @@ -723,6 +762,7 @@ <string name="ControlYourCamera"> Kontroluj kamerę </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SIM_ACCESS_PG"> 'General' </string> @@ -777,6 +817,12 @@ <string name="bitmap_image_files"> Obrazy bitmap </string> + <string name="png_image_files"> + Obrazy PNG + </string> + <string name="save_texture_image_files"> + Obrazy Targa lub PNG + </string> <string name="avi_movie_file"> Pliki filmowe AVI </string> @@ -798,18 +844,6 @@ <string name="choose_the_directory"> Wybierz katalog </string> - <string name="AvatarSetNotAway"> - Ustaw Nie Śpij - </string> - <string name="AvatarSetAway"> - Śpij - </string> - <string name="AvatarSetNotBusy"> - Ustawiaj Nie Pracuj - </string> - <string name="AvatarSetBusy"> - Pracuj - </string> <string name="shape"> Kształt </string> @@ -1032,10 +1066,102 @@ <string name="FavoritesNoMatchingItems"> Przeciągnij landmark tutaj aby dodać go do swoich ulubionych. </string> + <string name="MarketplaceNoMatchingItems"> + Niczego nie znaleziono. Sprawdź pisownię i spróbuj ponownie. + </string> <string name="InventoryNoTexture"> Nie posiadasz kopii tej tekstury w Twojej Szafie. </string> - <string name="Unconstrained">Swobodny</string> + <string name="InventoryMarketplaceError"> + Ta funkcjonalność jest obecnie w fazie Beta. Dodaj proszę swoje imię do tego [http://goo.gl/forms/FCQ7UXkakz formularza Google] (w języku angielskim), jeśli chcesz wziąć udział w programie Beta i pomóc. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Twój folder przedmiotów na Marketplace jest pusty. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Przeciągnij foldery do tego obszaru, aby dodać je na listę sprzedaży w [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + <string name="Marketplace Validation Warning Stock"> + folder magazynowy musi być zawarty w folderze wersji + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Błąd: wszystkie przedmioty w folderze magazynowym muszą mieć ten sam typ i być niekopiowalne + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Błąd: folder magazynowy nie może zawierać podfolderów + </string> + <string name="Marketplace Validation Warning Empty"> + : Uwaga: folder jest pusty + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Uwaga: tworzę folder magazynowy + </string> + <string name="Marketplace Validation Warning Create Version"> + : Uwaga: tworzę folder wersji + </string> + <string name="Marketplace Validation Warning Move"> + : Uwaga: przenoszę przedmioty + </string> + <string name="Marketplace Validation Warning Delete"> + : Uwaga: zawartość folderu przeniesiona do folderu magazynowego, usuwam pusty katalog + </string> + <string name="Marketplace Validation Error Stock Item"> + : Błąd: przedmioty bez praw kopiowania muszą się znajdować w folderze magazynowym + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Uwaga: przedmioty muszą się znajdować w folderze wersji + </string> + <string name="Marketplace Validation Error"> + : Błąd: + </string> + <string name="Marketplace Validation Warning"> + : Uwaga: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Uwaga: folder wersji musi zawierać przynajmniej jedną pozycję + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Uwaga: folder magazynowy musi zawierać przynajmniej jedną pozycję + </string> + <string name="Marketplace Validation No Error"> + Brak błędów lub ostrzeżeń + </string> + <string name="Marketplace Error Prefix"> + Błąd: + </string> + <string name="Marketplace Error Not Merchant"> + Przed wysłaniem przedmiotów na Marketplace musisz zostać kupcem (darmowe). + </string> + <string name="Marketplace Error Not Accepted"> + Nie można przenieść tego przedmiotu. + </string> + <string name="Marketplace Error Unsellable Item"> + Ta pozycja nie może być sprzedana na Marketplace. + </string> + <string name="MarketplaceNoID"> + no Mkt ID + </string> + <string name="MarketplaceLive"> + na liście + </string> + <string name="MarketplaceActive"> + aktywne + </string> + <string name="MarketplaceMax"> + maks + </string> + <string name="MarketplaceStock"> + magazyn + </string> + <string name="MarketplaceNoStock"> + brak w magazynie + </string> + <string name="MarketplaceUpdating"> + aktualizacja... + </string> + <string name="Unconstrained"> + Swobodny + </string> <string name="no_transfer" value=" (brak oddawania)"/> <string name="no_modify" value=" (brak modyfikowania)"/> <string name="no_copy" value=" (brak kopiowania)"/> @@ -1049,6 +1175,7 @@ Brak zawartości </string> <string name="WornOnAttachmentPoint" value=" (założony na [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (aktywne)"/> <string name="Chat Message" value="Czat:"/> <string name="Sound" value=" Dźwięk :"/> @@ -1286,6 +1413,15 @@ <string name="Invalid Attachment"> Nieważny punkt załącznika </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Błąd: brakujący przedmiot + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Błąd: brakująca baza przedmiotu + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Błąd: obiekt jest w obecnym stroju, ale nie jest założony + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1451,6 +1587,9 @@ <string name="SaveComplete"> Zapisywanie zakończone. </string> + <string name="UploadFailed"> + Ładowanie nieudane: + </string> <string name="ObjectOutOfRange"> Skrypt (obiekt poza zasięgiem) </string> @@ -1675,9 +1814,6 @@ <string name="PanelContentsNewScript"> Nowy skrypt </string> - <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="MuteByName"> (Nazwa) </string> @@ -1780,9 +1916,6 @@ <string name="GroupMoneyDebits"> Debet </string> - <string name="ViewerObjectContents"> - Zawartość - </string> <string name="AcquiredItems"> Zdobyte obiekty </string> @@ -4338,4 +4471,10 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu. <string name="ParticleHiding"> Ukryj cząsteczki </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> + <string name="Command_MarketplaceListings_Tooltip"> + Sprzedaj owoce swojej twórczości + </string> </strings> diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml index 0366c3fdbc..0366c3fdbc 100755..100644 --- a/indra/newview/skins/default/xui/pl/teleport_strings.xml +++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml diff --git a/indra/newview/skins/default/xui/pl/xui_version.xml b/indra/newview/skins/default/xui/pl/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/pl/xui_version.xml +++ b/indra/newview/skins/default/xui/pl/xui_version.xml diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 47975a6386..1e2edd7a2f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -1,73 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="SOBRE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Construído com [COMPILER] versão [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordenadas globais [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memória: [MEMORY_MB] MBs -Versão OS: [OS_VERSION] -Placa de vídeo: [GRAPHICS_CARD_VENDOR] -Placa gráfica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versão do driver de vídeo Windows: [GRAPHICS_CARD_VENDOR] - </floater.string> - <floater.string name="AboutLibs"> - Versão OpenGL: [OPENGL_VERSION] - -Versão libcurl: [LIBCURL_VERSION] -Versão J2C Decoder: [J2C_VERSION] -Versão do driver de áudio: [AUDIO_DRIVER_VERSION] -Versão Qt Webkit: [QT_WEBKIT_VERSION] -Versão do servidor de voz: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (nenhum) - </floater.string> - <floater.string name="AboutTraffic"> - Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Erro ao obter URL de notas de versão do servidor. - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="Copiar" name="copy_btn"/> </panel> <panel label="Créditos" name="credits_panel"> - <text name="linden_intro"> - O Second Life é trazido a você pela Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - com contribuições de código aberto de: - </text> - <text_editor name="contrib_names"> - Dummy Name substituído durante a execução - </text_editor> - <text name="trans_intro"> - e traduções de: - </text> - <text_editor name="trans_names"> - Dummy Name substituído durante a execução - </text_editor> + <text name="linden_intro">O Second Life é trazido a você pela Lindens, +com contribuições de código aberto de:</text> + <text_editor name="contrib_names">Dummy Name substituído durante a execução</text_editor> </panel> <panel label="Licenças" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -94,8 +37,7 @@ Versão do servidor de voz: [VOICE_VERSION] Todos os direitos reservados. Consulte licenses.txt para obter detalhes. - Codificação de áudio da conversa com voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codificação de áudio da conversa com voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index f48280840c..fee939ab46 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -308,9 +308,6 @@ Apenas lotes maiores podem ser listados na busca. <panel.string name="push_restrict_region_text"> Proibido empurrar (regulamento da região) </panel.string> - <panel.string name="see_avs_text"> - Avatares em outros lotes podem ver - </panel.string> <text name="allow_label"> Autorizar outros residentes a: </text> @@ -336,22 +333,6 @@ Apenas lotes maiores podem ser listados na busca. <check_box label="Seguro (sem danos)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, impedindo lutas com danos. Se não ativado, lutas com danos é habilitado."/> <check_box label="Proibido empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. Ativar essa opção ajuda a prevenir comportamentos desordeiros no seu terreno."/> <check_box label="Mostrar terreno nos resultados de busca (L$30/semana)" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/> - <combo_box name="land category with adult"> - <combo_box.item label="Qualquer categoria" name="item0"/> - <combo_box.item label="Locação Linden" name="item1"/> - <combo_box.item label="Adulto" name="item2"/> - <combo_box.item label="Artes e cultura" name="item3"/> - <combo_box.item label="Negócios" name="item4"/> - <combo_box.item label="Educacional" name="item5"/> - <combo_box.item label="Jogos" name="item6"/> - <combo_box.item label="Moradia" name="item7"/> - <combo_box.item label="Amigável a novos usuários" name="item8"/> - <combo_box.item label="Parques & Natureza" name="item9"/> - <combo_box.item label="Residencial" name="item10"/> - <combo_box.item label="Compras" name="item11"/> - <combo_box.item label="Aluguel" name="item13"/> - <combo_box.item label="Outros" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Qualquer categoria" name="item0"/> <combo_box.item label="Locação Linden" name="item1"/> @@ -451,15 +432,9 @@ Mídia: <panel.string name="access_estate_defined"> (Definições do terreno) </panel.string> - <panel.string name="allow_public_access"> - Acesso para público: [MATURITY]) (Desmarcar esse item cria limites) - </panel.string> <panel.string name="estate_override"> Uma ou mais destas opções está definida no nível de propriedade. </panel.string> - <text name="Limit access to this parcel to:"> - Acesso a este lote - </text> <check_box label="Permitir acesso público (Desmarcar esse item cria limites)" name="public_access"/> <text name="Only Allow"> Permitir acesso apenas para residentes que: @@ -491,5 +466,6 @@ Mídia: <button label="Tirar" label_selected="Tirar" name="remove_banned"/> </panel> </panel> + <panel label="EXPERIÊNCIAS" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_activeim.xml b/indra/newview/skins/default/xui/pt/floater_activeim.xml index 892ccdf974..892ccdf974 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_activeim.xml +++ b/indra/newview/skins/default/xui/pt/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml index 05326d8594..05326d8594 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml index 5cae581045..64515dfa61 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ A duração máxima da animação é de [MAX_LENGTH] segundos. Expressão </text> <combo_box name="emote_combo" tool_tip="Controla as expressões faciais durante a animação"> - <item label="(nenhum)" name="[None]" value=""/> - <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> - <item label="Com medo" name="Afraid" value="Com medo"/> - <item label="Bravo" name="Angry" value="Bravo"/> - <item label="Sorriso contagiante" name="BigSmile" value="Sorriso contagiante"/> - <item label="À toa" name="Bored" value="À toa"/> - <item label="Chorar" name="Cry" value="Chorar"/> - <item label="Desdenho" name="Disdain" value="Desdenho"/> - <item label="Com vergonha" name="Embarrassed" value="Com vergonha"/> - <item label="Franzir testa" name="Frown" value="Franzir testa"/> - <item label="Beijo" name="Kiss" value="Beijo"/> - <item label="Rir" name="Laugh" value="Rir"/> - <item label="Mostrar a língua" name="Plllppt" value="Mostrar a língua"/> - <item label="Asco" name="Repulsed" value="Asco"/> - <item label="Triste" name="Sad" value="Triste"/> - <item label="Encolher os ombros" name="Shrug" value="Encolher os ombros"/> - <item label="Sorriso" name="Smile" value="Sorriso"/> - <item label="Surpresa" name="Surprise" value="Surpresa"/> - <item label="Piscar" name="Wink" value="Piscar"/> - <item label="Preocupado" name="Worry" value="Preocupado"/> + <item label="(nenhum)" name="[None]"/> + <item label="Aaaaah" name="Aaaaah"/> + <item label="Com medo" name="Afraid"/> + <item label="Bravo" name="Angry"/> + <item label="Sorriso contagiante" name="BigSmile"/> + <item label="À toa" name="Bored"/> + <item label="Chorar" name="Cry"/> + <item label="Desdenho" name="Disdain"/> + <item label="Com vergonha" name="Embarrassed"/> + <item label="Franzir testa" name="Frown"/> + <item label="Beijo" name="Kiss"/> + <item label="Rir" name="Laugh"/> + <item label="Mostrar a língua" name="Plllppt"/> + <item label="Asco" name="Repulsed"/> + <item label="Triste" name="Sad"/> + <item label="Encolher os ombros" name="Shrug"/> + <item label="Sorriso" name="Smile"/> + <item label="Surpresa" name="Surprise"/> + <item label="Piscar" name="Wink"/> + <item label="Preocupado" name="Worry"/> </combo_box> <text name="preview_label"> Visualizar enquanto </text> <combo_box name="preview_base_anim" tool_tip="Use para testar o comportamento de sua animação enquanto seu avatar executa ações comuns."> - <item label="Em pé" name="Standing" value="Em pé"/> - <item label="Andar" name="Walking" value="Andar"/> - <item label="Sentado" name="Sitting" value="Sentado"/> - <item label="Voar" name="Flying" value="Voar"/> + <item label="Em pé" name="Standing"/> + <item label="Andar" name="Walking"/> + <item label="Sentado" name="Sitting"/> + <item label="Voar" name="Flying"/> </combo_box> <spinner label="Aproximação (seg)" name="ease_in_time" tool_tip="Tempo (em segundos) da transição inicial da animação"/> <spinner label="Afastamento (seg)" name="ease_out_time" tool_tip="Tempo (em segundos) da transição de saída da animação"/> diff --git a/indra/newview/skins/default/xui/pt/floater_associate_listing.xml b/indra/newview/skins/default/xui/pt/floater_associate_listing.xml new file mode 100644 index 0000000000..1fac5643b0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIAR LISTAGEM"> + <text name="message">ID de listagem:</text> + <line_editor name="listing_id">Digite a ID aqui</line_editor> + <button label="OK" name="OK"/> + <button label="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_auction.xml b/indra/newview/skins/default/xui/pt/floater_auction.xml index 074f7bf001..074f7bf001 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_auction.xml +++ b/indra/newview/skins/default/xui/pt/floater_auction.xml diff --git a/indra/newview/skins/default/xui/pt/floater_autoreplace.xml b/indra/newview/skins/default/xui/pt/floater_autoreplace.xml index ca813a8540..ca813a8540 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/pt/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/pt/floater_avatar.xml b/indra/newview/skins/default/xui/pt/floater_avatar.xml index 168cdacae1..168cdacae1 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml index 2b65952676..2b65952676 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml index 9473ee7ce9..9473ee7ce9 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/pt/floater_beacons.xml b/indra/newview/skins/default/xui/pt/floater_beacons.xml index f8ae3cd2d8..f8ae3cd2d8 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_beacons.xml +++ b/indra/newview/skins/default/xui/pt/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/pt/floater_build_options.xml b/indra/newview/skins/default/xui/pt/floater_build_options.xml index acc462ea94..acc462ea94 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_build_options.xml +++ b/indra/newview/skins/default/xui/pt/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml index 998fa8b2d6..998fa8b2d6 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/pt/floater_bumps.xml b/indra/newview/skins/default/xui/pt/floater_bumps.xml index 475d36c119..475d36c119 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_bumps.xml +++ b/indra/newview/skins/default/xui/pt/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml index b9e7a04412..b9e7a04412 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml index 2845a29e1d..2845a29e1d 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml index 24e41ac8c8..24e41ac8c8 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/pt/floater_buy_land.xml b/indra/newview/skins/default/xui/pt/floater_buy_land.xml index 258c95cc7d..258c95cc7d 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/pt/floater_buy_object.xml b/indra/newview/skins/default/xui/pt/floater_buy_object.xml index c465197c9a..c465197c9a 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml index 9cda01c187..9cda01c187 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_camera.xml +++ b/indra/newview/skins/default/xui/pt/floater_camera.xml diff --git a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml index 2eb2c94940..2eb2c94940 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/pt/floater_choose_group.xml b/indra/newview/skins/default/xui/pt/floater_choose_group.xml index 60f01a3733..60f01a3733 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/pt/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/pt/floater_color_picker.xml b/indra/newview/skins/default/xui/pt/floater_color_picker.xml index 4ea014335f..4ea014335f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/pt/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/pt/floater_critical.xml b/indra/newview/skins/default/xui/pt/floater_critical.xml index 5d7fe0142b..5d7fe0142b 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_critical.xml +++ b/indra/newview/skins/default/xui/pt/floater_critical.xml diff --git a/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml index a8b5d8f67d..a8b5d8f67d 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/pt/floater_destinations.xml b/indra/newview/skins/default/xui/pt/floater_destinations.xml index df18698d2f..df18698d2f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_destinations.xml +++ b/indra/newview/skins/default/xui/pt/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/pt/floater_display_name.xml b/indra/newview/skins/default/xui/pt/floater_display_name.xml index 8daa40cc23..8daa40cc23 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_display_name.xml +++ b/indra/newview/skins/default/xui/pt/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml index 9e25938986..9e25938986 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml new file mode 100644 index 0000000000..163ab440ea --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="DEFINIR ALTURA DE FOCO"> + <slider label="Altura" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml index 1f1fbcce7e..1f1fbcce7e 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml index 7bde22851e..7bde22851e 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/pt/floater_environment_settings.xml b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml index 4055ba97ef..4055ba97ef 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/pt/floater_event.xml b/indra/newview/skins/default/xui/pt/floater_event.xml index a8dc3f96d7..a8dc3f96d7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_event.xml +++ b/indra/newview/skins/default/xui/pt/floater_event.xml diff --git a/indra/newview/skins/default/xui/pt/floater_experience_search.xml b/indra/newview/skins/default/xui/pt/floater_experience_search.xml new file mode 100644 index 0000000000..cf87717b45 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="ESCOLHER EXPERIÊNCIA"/> diff --git a/indra/newview/skins/default/xui/pt/floater_experienceprofile.xml b/indra/newview/skins/default/xui/pt/floater_experienceprofile.xml new file mode 100644 index 0000000000..97f8576b16 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (none) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Perfil de experiência"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Classificação: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Localização: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Proprietário: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Grupo: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Permitir" name="allow_btn"/> + <button label="Ignorar" name="forget_btn"/> + <button label="Bloquear" name="block_btn"/> + <text name="privileged"> + Essa experiência está disponível para todos os residentes. + </text> + <button label="Denunciar abuso" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Nome:"/> + <text name="edit_experience_desc_label" value="Descrição:"/> + <button label="Grupo" name="Group_btn"/> + <text name="edit_ContentRating"> + Classificação: + </text> + <icons_combo_box label="Moderado" name="edit_ContentRatingText" tool_tip="Aumentar a classificação de maturidade sobre uma experiência redefinirá a permissão para todos os residentes que permitiram a experiência."> + <icons_combo_box.item label="Adulto" name="Adult" value="42"/> + <icons_combo_box.item label="Moderado" name="Mature" value="21"/> + <icons_combo_box.item label="Geral" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Localização: + </text> + <button label="Definir como atual" name="location_btn"/> + <button label="Limpar localização" name="clear_btn"/> + <check_box label="Ativar experiência" name="edit_enable_btn" tool_tip=""/> + <check_box label="Ocultar nos resultados de pesquisa" name="edit_private_btn"/> + <text name="changes" value="As alterações de experiência podem levar vários minutos para ser visualizadas em todas as regiões."/> + <button label="Retornar" name="cancel_btn"/> + <button label="Salvar" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_experiences.xml b/indra/newview/skins/default/xui/pt/floater_experiences.xml new file mode 100644 index 0000000000..53be98e3f9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="EXPERIÊNCIAS"/> diff --git a/indra/newview/skins/default/xui/pt/floater_facebook.xml b/indra/newview/skins/default/xui/pt/floater_facebook.xml index c211d75e9b..af30582237 100644 --- a/indra/newview/skins/default/xui/pt/floater_facebook.xml +++ b/indra/newview/skins/default/xui/pt/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="PUBLICAR NO FACEBOOK"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="STATUS" name="panel_facebook_status"/> - <panel label="FOTO" name="panel_facebook_photo"/> - <panel label="FAZER CHECK IN" name="panel_facebook_place"/> - <panel label="AMIGOS" name="panel_facebook_friends"/> - <panel label="CONTA" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Erro - </text> - <text name="connection_loading_text"> - Carregando... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="STATUS" name="panel_facebook_status"/> + <panel label="FOTO" name="panel_facebook_photo"/> + <panel label="FAZER CHECK IN" name="panel_facebook_place"/> + <panel label="AMIGOS" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Erro + </text> + <text name="connection_loading_text"> + Carregando... + </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_fast_timers.xml b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml index eeb39583ef..eeb39583ef 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/pt/floater_font_test.xml b/indra/newview/skins/default/xui/pt/floater_font_test.xml index c506cdb12d..c506cdb12d 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_font_test.xml +++ b/indra/newview/skins/default/xui/pt/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/pt/floater_gesture.xml b/indra/newview/skins/default/xui/pt/floater_gesture.xml index 2e5b92aaf7..2e5b92aaf7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/pt/floater_god_tools.xml b/indra/newview/skins/default/xui/pt/floater_god_tools.xml index 8003a35d16..8003a35d16 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml index 1204fb93e2..1204fb93e2 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/pt/floater_help_browser.xml b/indra/newview/skins/default/xui/pt/floater_help_browser.xml index 9cc8a0a6b2..9cc8a0a6b2 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/pt/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/pt/floater_how_to.xml b/indra/newview/skins/default/xui/pt/floater_how_to.xml index 15c4946cb0..15c4946cb0 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_how_to.xml +++ b/indra/newview/skins/default/xui/pt/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/pt/floater_hud.xml b/indra/newview/skins/default/xui/pt/floater_hud.xml index e458913452..e458913452 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_hud.xml +++ b/indra/newview/skins/default/xui/pt/floater_hud.xml diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml index a1cea72b1e..a1cea72b1e 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_im_container.xml +++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml 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 e592b14fa7..e592b14fa7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_im_session.xml +++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/pt/floater_image_preview.xml b/indra/newview/skins/default/xui/pt/floater_image_preview.xml index 362a553d64..362a553d64 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_import_collada.xml b/indra/newview/skins/default/xui/pt/floater_import_collada.xml index ad55d416c3..ad55d416c3 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/pt/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml index 1e86f847ad..1e86f847ad 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/pt/floater_inspect.xml b/indra/newview/skins/default/xui/pt/floater_inspect.xml index 6a00b1a628..6a00b1a628 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_inspect.xml +++ b/indra/newview/skins/default/xui/pt/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml index 8a8f1f5b34..5f04c08531 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPRIEDADES DE ITEM NO INVENTÁRIO"> - <floater.string name="unknown"> - (desconhecido) - </floater.string> - <floater.string name="public"> - (público) - </floater.string> - <floater.string name="you_can"> - Você pode: - </floater.string> - <floater.string name="owner_can"> - Proprietário pode : - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrição: - </text> - <text name="LabelCreatorTitle"> - Criador: - </text> + <floater.string name="unknown">(desconhecido)</floater.string> + <floater.string name="public">(público)</floater.string> + <floater.string name="you_can">Você pode:</floater.string> + <floater.string name="owner_can">Proprietário pode :</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nome:</text> + <text name="LabelItemDescTitle">Descrição:</text> + <text name="LabelCreatorTitle">Criador:</text> <button label="Perfil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Dono: - </text> + <text name="LabelOwnerTitle">Dono:</text> <button label="Perfil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Adquirido: - </text> - <text name="LabelAcquiredDate"> - Qua Mai 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Você: - </text> + <text name="LabelAcquiredTitle">Adquirido:</text> + <text name="LabelAcquiredDate">Qua Mai 24 12:50:46 2006</text> + <text name="OwnerLabel">Você:</text> <check_box label="Editar" name="CheckOwnerModify"/> <check_box label="Copiar" name="CheckOwnerCopy"/> <check_box label="Revender" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Todos: - </text> + <text name="AnyoneLabel">Todos:</text> <check_box label="Cortar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartilhar" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Próximo proprietário: - </text> + <text name="NextOwnerLabel" width="230">Próximo proprietário:</text> <check_box label="Editar" name="CheckNextOwnerModify"/> <check_box label="Copiar" name="CheckNextOwnerCopy"/> <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="À venda" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Cortar" name="Copy"/> + <combo_box.item label="Conteúdo" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preço:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml index 71759abdc2..2bb95a5605 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Roupas" name="check_clothing"/> <check_box label="Gestos" name="check_gesture"/> <check_box label="Landmarks" name="check_landmark"/> - <check_box label="Meshes:" name="check_mesh"/> <check_box label="Anotações" name="check_notecard"/> + <check_box label="Meshes:" name="check_mesh"/> <check_box label="Objetos" name="check_object"/> <check_box label="Scripts" name="check_script"/> <check_box label="Sons" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - OU - </text> + <radio_group name="date_search_direction"> + <radio_item label="Antes de" name="newer"/> + <radio_item label="Depois de" name="older"/> + </radio_group> <spinner label="Horas Atrás" name="spin_hours_ago"/> <spinner label="Dias Atrás" name="spin_days_ago"/> <button label="Fechar" label_selected="Fechar" name="Close"/> diff --git a/indra/newview/skins/default/xui/pt/floater_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_item_properties.xml new file mode 100644 index 0000000000..400196c3c3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPRIEDADES DO ITEM"/> diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml index 98d8c0e319..98d8c0e319 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml index 9932318293..cdaec96c86 100644 --- a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_lagmeter" title="LAG - Índice"> <floater.string name="max_title_msg"> - Medidor de Atraso + Lag Meter </floater.string> <floater.string name="max_width_px"> 360 </floater.string> <floater.string name="min_title_msg"> - Atraso + Lag </floater.string> <floater.string name="min_width_px"> 90 @@ -22,28 +22,28 @@ 15 </floater.string> <floater.string name="client_frame_time_window_bg_msg"> - Normal, janela por baixo + Normal, janela em segundo plano </floater.string> <floater.string name="client_frame_time_critical_msg"> - Taxa de quadros do Cliente abaixo de [CLIENT_FRAME_RATE_CRITICAL] + Taxa de quadros do cliente menor que [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> - Taxa de quadros do Cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] + Taxa de quadros do cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> Normal </floater.string> <floater.string name="client_draw_distance_cause_msg"> - Causa possível: Distância de desenho ajustada muito alta + Possível causa: distância de desenho definida com um valor muito alto </floater.string> <floater.string name="client_texture_loading_cause_msg"> - Causa possível: Carregamento de Imagens + Possível causa: imagens em carregamento </floater.string> <floater.string name="client_texture_memory_cause_msg"> - Causa possível: Muitas imagens na memória + Possível causa: muitas imagens na memória </floater.string> <floater.string name="client_complex_objects_cause_msg"> - Causa possível: Muitos objetos complexos na cena + Possível causa: muitos objetos complexos na cena </floater.string> <floater.string name="network_text_msg"> Rede @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - Conexão está caindo para cerca de [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes + A conexão está caindo devido a [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes </floater.string> <floater.string name="network_packet_loss_warning_msg"> - Conexão está caindo [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes + A conexão está caindo devido a [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes </floater.string> <floater.string name="network_performance_normal_msg"> Normal @@ -70,16 +70,16 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - Tempo de conexão de ping é cerca de [NETWORK_PING_CRITICAL] ms + Ping time da conexão com mais de [NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_ping_warning_msg"> - Tempo de conexão de ping é [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + Ping time da conexão com mais de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms </floater.string> <floater.string name="network_packet_loss_cause_msg"> - Possível conexão ruim ou 'Largura de Banda' escolhida muito alta. + Possível conexão ruim ou pref de 'Banda larga' muito alta </floater.string> <floater.string name="network_ping_cause_msg"> - Possível conexão ruim ou aplicativos compartilhando arquivos. + Possível conexão ruim ou app de compartilhamento de arquivo </floater.string> <floater.string name="server_text_msg"> Servidor @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Taxa de quadros abaixo de [SERVER_FRAME_RATE_CRITICAL] + Taxa de quadros de simulador abaixo de [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Taxa de quadros entre [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] + Taxa de quadros de simulador entre [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> Normal </floater.string> <floater.string name="server_physics_cause_msg"> - Causa possível: Muitos objetos físicos + Possível causa: muitos objetos físicos </floater.string> <floater.string name="server_scripts_cause_msg"> - Causa possível: Muitos objetos com scripts + Possível causa: muitos objetos de script </floater.string> <floater.string name="server_net_cause_msg"> - Causa possível: Muito tráfego na rede + Possível causa: tráfego de rede intenso </floater.string> <floater.string name="server_agent_cause_msg"> - Causa possível: Muitas pessoas se movendo na região + Possível causa: muitas pessoas se movendo na região </floater.string> <floater.string name="server_images_cause_msg"> - Causa possível: Muitos cálculos de imagem + Possível causa: muitos cálculos de imagem </floater.string> <floater.string name="server_generic_cause_msg"> - Causa possível: Carga no simulador muito pesada + Possível causa: carga do simulador muito pesada </floater.string> <floater.string name="smaller_label"> >> @@ -126,7 +126,7 @@ <floater.string name="bigger_label"> << </floater.string> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Status do lag do cliente"/> <text name="client"> Cliente </text> @@ -134,7 +134,7 @@ Normal </text> <text left="30" name="client_lag_cause" right="-10"/> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Status do lag da rede"/> <text name="network"> Rede </text> @@ -142,7 +142,7 @@ Normal </text> <text left="30" name="network_lag_cause" right="-10"/> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Status do lag do servidor"/> <text name="server"> Servidor </text> diff --git a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml index 7475bdd5b8..7475bdd5b8 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml index 5ad116ac8a..635bc2d34b 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> SCRIPT: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Desmarque para remover a experiência atual + </floater.string> + <floater.string name="no_experiences"> + Você não está autorizado a nenhuma experiência + </floater.string> + <floater.string name="add_experiences"> + Selecione para adicionar uma experiência + </floater.string> + <floater.string name="show_experience_profile"> + Clique para visualizar o perfil da experiência + </floater.string> + <floater.string name="loading"> + Carregando... + </floater.string> <button label="Resetar" label_selected="Resetar" name="Reset"/> <check_box initial_value="true" label="Correndo" name="running"/> <check_box initial_value="true" label="Mono" left="86" name="mono"/> + <check_box label="Usar experiência:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml index 73f187f0e4..73f187f0e4 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml index 8233f2a43f..8233f2a43f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_map.xml diff --git a/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml new file mode 100644 index 0000000000..fa4ac50ab0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="LISTAGENS DO MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Carregando...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml new file mode 100644 index 0000000000..39e59a687f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditar Listagens do Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_media_browser.xml b/indra/newview/skins/default/xui/pt/floater_media_browser.xml index 7491218067..7491218067 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/pt/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/pt/floater_media_settings.xml b/indra/newview/skins/default/xui/pt/floater_media_settings.xml index 5af002c502..5af002c502 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml index efb5da4ace..efb5da4ace 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml index bb6113671b..bb6113671b 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml index 8194278b16..8194278b16 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml index 728357a400..728357a400 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_moveview.xml +++ b/indra/newview/skins/default/xui/pt/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_mute_object.xml b/indra/newview/skins/default/xui/pt/floater_mute_object.xml index 97fbd35fcc..97fbd35fcc 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/pt/floater_my_appearance.xml b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml index 38e06d2aed..38e06d2aed 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/pt/floater_my_inventory.xml b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml index 71d8682758..71d8682758 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/pt/floater_object_weights.xml b/indra/newview/skins/default/xui/pt/floater_object_weights.xml index 45bd1c7127..45bd1c7127 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/pt/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/pt/floater_openobject.xml b/indra/newview/skins/default/xui/pt/floater_openobject.xml index 0dc2852bac..e8b72700c9 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_openobject.xml +++ b/indra/newview/skins/default/xui/pt/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copiar para Inventário" label_selected="Copiar para Inventário" name="copy_to_inventory_button" width="132"/> - <button label="Copiar e Vestir" label_selected="Copiar e Vestir" left="152" name="copy_and_wear_button"/> + <text name="border_note"> + Copiar para inventário e vestir + </text> + <button label="Adicionar ao look" label_selected="Adicionar ao look" left="152" name="copy_and_wear_button"/> + <button label="Substituir look" label_selected="Substituir look" name="copy_and_replace_button"/> + <button label="Apenas copiar para inventário" label_selected="Apenas copiar para inventário" name="copy_to_inventory_button" width="132"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_button"/> </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 index 60d4d3dc5c..60d4d3dc5c 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml index 35afde7612..35afde7612 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml index 05784115e7..05784115e7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml index 182f2513e0..182f2513e0 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml index e0c60679dd..e0c60679dd 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml index 8094ad376c..77e814b575 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_pay.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Pagar grupo - </string> - <string name="payee_resident"> - Pagar residente - </string> - <text left="5" name="payee_label"> - Pagar: - </text> - <icon name="icon_person" tool_tip="Pessoa"/> - <text name="payee_name"> - Test Name That Is Extremely Long To Check Clipping - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Outro valor: - </text> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <string name="payee_group">Pagar grupo</string> + <string name="payee_resident">Pagar residente</string> + <text name="paying_text">Você está pagando:</text> + <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar L$ 1" label_selected="Pagar L$ 1" name="fastpay 1"/> + <button label="Pagar L$ 5" label_selected="Pagar L$ 5" name="fastpay 5"/> + <button label="Pagar L$ 10" label_selected="Pagar L$ 10" name="fastpay 10"/> + <button label="Pagar L$ 20" label_selected="Pagar L$ 20" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Outro valor:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_pay_object.xml b/indra/newview/skins/default/xui/pt/floater_pay_object.xml index a5579f03bf..4f7fa6ca67 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - Pagar grupo - </string> - <string halign="left" name="payee_resident" width="120"> - Pagar residente - </string> - <icon name="icon_person" tool_tip="Pessoa"/> - <text left="105" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="95"> - Via objeto: - </text> + <string halign="left" name="payee_group" width="100">Pagar grupo</string> + <string halign="left" name="payee_resident" width="120">Pagar residente</string> + <text name="paying_text">Você está pagando:</text> + <text left="105" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="95">Via objeto:</text> <icon name="icon_object" tool_tip="Objects"/> - <text left="105" name="object_name_text"> - Meu objeto maravilho, fantástico e com nome comprido e imaginativo - </text> - <button label="L$1" label_selected="L$1" left="125" name="fastpay 1" width="70"/> - <button label="L$5" label_selected="L$5" left="200" name="fastpay 5" width="70"/> - <button label="L$10" label_selected="L$10" left="125" name="fastpay 10" width="70"/> - <button label="L$20" label_selected="L$20" left="200" name="fastpay 20" width="70"/> - <text halign="left" left="5" name="amount text"> - Outro valor: - </text> - <line_editor left="60" name="amount" width="50"/> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <text left="105" name="object_name_text">Meu objeto maravilho, fantástico e com nome comprido e imaginativo</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar L$ 1" label_selected="Pagar L$ 1" name="fastpay 1"/> + <button label="Pagar L$ 5" label_selected="Pagar L$ 5" name="fastpay 5"/> + <button label="Pagar L$ 10" label_selected="Pagar L$ 10" name="fastpay 10"/> + <button label="Pagar L$ 20" label_selected="Pagar L$ 20" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Outro valor:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_people.xml b/indra/newview/skins/default/xui/pt/floater_people.xml index 10a516ee36..10a516ee36 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_people.xml +++ b/indra/newview/skins/default/xui/pt/floater_people.xml diff --git a/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml index 33a0d6a456..33a0d6a456 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/pt/floater_picks.xml b/indra/newview/skins/default/xui/pt/floater_picks.xml index 9766196319..9766196319 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_picks.xml +++ b/indra/newview/skins/default/xui/pt/floater_picks.xml diff --git a/indra/newview/skins/default/xui/pt/floater_places.xml b/indra/newview/skins/default/xui/pt/floater_places.xml index 12c6548205..12c6548205 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_places.xml +++ b/indra/newview/skins/default/xui/pt/floater_places.xml diff --git a/indra/newview/skins/default/xui/pt/floater_post_process.xml b/indra/newview/skins/default/xui/pt/floater_post_process.xml index d4f2e96539..d4f2e96539 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_post_process.xml +++ b/indra/newview/skins/default/xui/pt/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml index c89a61d9b1..c89a61d9b1 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preferences.xml +++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml index 3aaee2d4a7..3aaee2d4a7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml index 19474d8099..19474d8099 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index 089694608b..089694608b 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml index d094c1b63a..d094c1b63a 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml index 7c5a1538f2..7c5a1538f2 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml index 6f39635240..6f39635240 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml b/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml index b078962feb..b078962feb 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/pt/floater_publish_classified.xml b/indra/newview/skins/default/xui/pt/floater_publish_classified.xml index de3417ea14..de3417ea14 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/pt/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml b/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml index d3b5df2d74..d3b5df2d74 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/pt/floater_region_info.xml b/indra/newview/skins/default/xui/pt/floater_region_info.xml index cc5e0d59d4..cc5e0d59d4 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_region_info.xml +++ b/indra/newview/skins/default/xui/pt/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml index e6d9961d0b..f30201fc33 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml @@ -76,7 +76,7 @@ <combo_box.item label="Terreno > Invasão > Objetos ou texturas" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Terra > Invasão > Partículas" name="Land__Encroachment__Particles"/> <combo_box.item label="Terra > Violação > Árvores/plantas" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Apostas ou jogos de azar" name="Wagering_gambling"/> + <combo_box.item label="Violação da política sobre jogos" name="Wagering_gambling"/> <combo_box.item label="Outro" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug.xml b/indra/newview/skins/default/xui/pt/floater_script_debug.xml index 6d1d981ca7..6d1d981ca7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/pt/floater_script_limits.xml b/indra/newview/skins/default/xui/pt/floater_script_limits.xml index 64a8a49c85..64a8a49c85 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/pt/floater_script_preview.xml b/indra/newview/skins/default/xui/pt/floater_script_preview.xml index 5be866d052..5be866d052 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_script_queue.xml b/indra/newview/skins/default/xui/pt/floater_script_queue.xml index 5fb6dd1c35..5fb6dd1c35 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/pt/floater_script_search.xml b/indra/newview/skins/default/xui/pt/floater_script_search.xml index 8878590a4e..8878590a4e 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_script_search.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/pt/floater_search.xml b/indra/newview/skins/default/xui/pt/floater_search.xml index 3509cb786d..3509cb786d 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_search.xml +++ b/indra/newview/skins/default/xui/pt/floater_search.xml diff --git a/indra/newview/skins/default/xui/pt/floater_select_key.xml b/indra/newview/skins/default/xui/pt/floater_select_key.xml index 7264a5a713..7264a5a713 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_select_key.xml +++ b/indra/newview/skins/default/xui/pt/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/pt/floater_sell_land.xml b/indra/newview/skins/default/xui/pt/floater_sell_land.xml index 014ae0845e..014ae0845e 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml index 83f7b24572..83f7b24572 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml index 3dd7f69d50..e3812ed708 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Falha ao salvar no computador. </string> - <button name="advanced_options_btn" tool_tip="Opções avançadas"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [TAMANHO] KB - </text> + <button label="ATUALIZAR" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - OPÇÕES AVANÇADAS - </text> <text name="layer_type_label"> Capturar: </text> @@ -68,4 +59,10 @@ <combo_box.item label="Sem filtro" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH]px (largura) x [HEIGHT]px (altura) + </text> + <text name="file_size_label"> + [TAMANHO] KB + </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml index 948d727540..948d727540 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml index e62260c2e3..e62260c2e3 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/pt/floater_spellcheck.xml b/indra/newview/skins/default/xui/pt/floater_spellcheck.xml index 02bb154d26..02bb154d26 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/pt/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml index f4e95bddec..f4e95bddec 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml index f41fe17778..f41fe17778 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_stats.xml +++ b/indra/newview/skins/default/xui/pt/floater_stats.xml diff --git a/indra/newview/skins/default/xui/pt/floater_sys_well.xml b/indra/newview/skins/default/xui/pt/floater_sys_well.xml index 38beec022c..38beec022c 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/pt/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/pt/floater_telehub.xml b/indra/newview/skins/default/xui/pt/floater_telehub.xml index 6b35d3f919..6b35d3f919 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_telehub.xml +++ b/indra/newview/skins/default/xui/pt/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml index dd282bf1fc..dd282bf1fc 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml index ba4ef0afde..ba4ef0afde 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml index 0e897aea09..0e897aea09 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index 356063a94f..356063a94f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml diff --git a/indra/newview/skins/default/xui/pt/floater_top_objects.xml b/indra/newview/skins/default/xui/pt/floater_top_objects.xml index ef682714c6..f37b5be23f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/pt/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Nenhum encontrado. </floater.string> + <floater.string name="URLs"> + URLs + </floater.string> + <floater.string name="memory"> + Memória (KB) + </floater.string> <text name="title_text"> Carregando... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Proprietário" name="owner"/> <scroll_list.columns label="Local" name="location"/> <scroll_list.columns label="Lote" name="parcel"/> - <scroll_list.columns label="Tempo" name="time"/> + <scroll_list.columns label="Data" name="time"/> <scroll_list.columns label="URLs" name="URLs"/> <scroll_list.columns label="Memória (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml index c4954cb61f..c4954cb61f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_tos.xml +++ b/indra/newview/skins/default/xui/pt/floater_tos.xml diff --git a/indra/newview/skins/default/xui/pt/floater_toybox.xml b/indra/newview/skins/default/xui/pt/floater_toybox.xml index 3677c3b1f5..3677c3b1f5 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_toybox.xml +++ b/indra/newview/skins/default/xui/pt/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/pt/floater_translation_settings.xml b/indra/newview/skins/default/xui/pt/floater_translation_settings.xml index 1955599a81..1955599a81 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/pt/floater_twitter.xml b/indra/newview/skins/default/xui/pt/floater_twitter.xml index 4d7f9e323c..14bee3ffc3 100644 --- a/indra/newview/skins/default/xui/pt/floater_twitter.xml +++ b/indra/newview/skins/default/xui/pt/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="REDIGIR" name="panel_twitter_photo"/> - <panel label="CONTA" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Erro - </text> - <text name="connection_loading_text"> - Carregando... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="REDIGIR" name="panel_twitter_photo"/> + <panel label="CONTA" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Erro + </text> + <text name="connection_loading_text"> + Carregando... + </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_url_entry.xml b/indra/newview/skins/default/xui/pt/floater_url_entry.xml index 48af8de363..48af8de363 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/pt/floater_url_entry.xml 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 745a7d0e00..745a7d0e00 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml index 71d3c33ae5..71d3c33ae5 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/pt/floater_web_content.xml b/indra/newview/skins/default/xui/pt/floater_web_content.xml index 5101579c6f..5101579c6f 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_web_content.xml +++ b/indra/newview/skins/default/xui/pt/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml index 865d939d24..865d939d24 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/pt/floater_window_size.xml b/indra/newview/skins/default/xui/pt/floater_window_size.xml index 7deb799bd7..7deb799bd7 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_window_size.xml +++ b/indra/newview/skins/default/xui/pt/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml index 490a975e80..490a975e80 100755..100644 --- a/indra/newview/skins/default/xui/pt/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml index 19244d9b27..19244d9b27 100755..100644 --- a/indra/newview/skins/default/xui/pt/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/pt/inspect_group.xml b/indra/newview/skins/default/xui/pt/inspect_group.xml index 889d35f269..889d35f269 100755..100644 --- a/indra/newview/skins/default/xui/pt/inspect_group.xml +++ b/indra/newview/skins/default/xui/pt/inspect_group.xml diff --git a/indra/newview/skins/default/xui/pt/inspect_object.xml b/indra/newview/skins/default/xui/pt/inspect_object.xml index b72de7038d..b72de7038d 100755..100644 --- a/indra/newview/skins/default/xui/pt/inspect_object.xml +++ b/indra/newview/skins/default/xui/pt/inspect_object.xml diff --git a/indra/newview/skins/default/xui/pt/inspect_remote_object.xml b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml index 789194bf2e..789194bf2e 100755..100644 --- a/indra/newview/skins/default/xui/pt/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml index 8799475ace..8799475ace 100755..100644 --- a/indra/newview/skins/default/xui/pt/language_settings.xml +++ b/indra/newview/skins/default/xui/pt/language_settings.xml 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 index 4b81276ab3..4b81276ab3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml index 61953f9f78..61953f9f78 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml 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 2d4cd670e6..ac79422110 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Minha aparência" name="Change Outfit"/> <menu_item_call label="Editar meu look" name="Edit Outfit"/> <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> + <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml index f6211790a8..f6211790a8 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml index 1af8d64438..1af8d64438 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml 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 447b77657b..a0ac71e018 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Minha aparência" name="Chenge Outfit"/> <menu_item_call label="Editar meu look" name="Edit Outfit"/> <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> + <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml index 527e3af3c9..527e3af3c9 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml index 704fd226eb..704fd226eb 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml index 051323ae6a..051323ae6a 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml index b59895573e..b59895573e 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/pt/menu_edit.xml b/indra/newview/skins/default/xui/pt/menu_edit.xml index ff431c9a21..ff431c9a21 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_edit.xml +++ b/indra/newview/skins/default/xui/pt/menu_edit.xml diff --git a/indra/newview/skins/default/xui/pt/menu_favorites.xml b/indra/newview/skins/default/xui/pt/menu_favorites.xml index 062820fbca..062820fbca 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_favorites.xml +++ b/indra/newview/skins/default/xui/pt/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml index 70d8ae7a8e..70d8ae7a8e 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/pt/menu_group_plus.xml b/indra/newview/skins/default/xui/pt/menu_group_plus.xml index 1083845d68..1083845d68 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/pt/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml index 5f6bd096a8..5f6bd096a8 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml index ead949ba13..ead949ba13 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml index dd177d1b8d..dd177d1b8d 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml index d821b3ded0..d821b3ded0 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml index 2b5aa7508b..2b5aa7508b 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml 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 7e271904e9..7e271904e9 100755..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 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 e8fafa58a9..e8fafa58a9 100755..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 diff --git a/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml index c404719c95..c404719c95 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 636b356c8b..79261ceb1f 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Criar listagem" name="Marketplace Create Listing"/> + <menu_item_call label="Associar listagem" name="Marketplace Associate Listing"/> + <menu_item_call label="Obter listagem (Atualizar)" name="Marketplace Get Listing"/> + <menu_item_call label="Verificar erros" name="Marketplace Check Listing"/> + <menu_item_call label="Editar listagem" name="Marketplace Edit Listing"/> + <menu_item_call label="Listar" name="Marketplace List"/> + <menu_item_call label="Parar de oferecer" name="Marketplace Unlist"/> + <menu_item_call label="Ativar" name="Marketplace Activate"/> + <menu_item_call label="Desativar" name="Marketplace Deactivate"/> <menu_item_call label="Compartilhar" name="Share"/> <menu_item_call label="Comprar" name="Task Buy"/> <menu_item_call label="Abrir" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Adicionar" name="Wearable Add"/> <menu_item_call label="Tirar" name="Take Off"/> <menu_item_call label="Copiar para Caixa de saída do lojista" name="Merchant Copy"/> - <menu_item_call label="Enviar para Mercado" name="Marketplace Send"/> + <menu_item_call label="Copiar para Listagens do Marketplace" name="Marketplace Copy"/> + <menu_item_call label="Mover para Listagens do Marketplace" name="Marketplace Move"/> <menu_item_call label="--Sem opções--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml index 7a7ebc50af..7a7ebc50af 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml index 6faea517fe..d3e6534912 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Ordenar por mais recente" name="sort_by_recent"/> <menu_item_check label="Sempre ordenar pastas por nome" name="sort_folders_by_name"/> <menu_item_check label="Pastas do sistema no topo" name="sort_system_folders_to_top"/> - <menu_item_call label="Mostrar filtros" name="show_filters"/> + <menu_item_call label="Mostrar filtros..." name="show_filters"/> <menu_item_call label="Restabelecer filtros" name="reset_filters"/> <menu_item_call label="Fechar todas as pastas" name="close_folders"/> <menu_item_call label="Esvaziar achados e perdidos" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/pt/menu_land.xml b/indra/newview/skins/default/xui/pt/menu_land.xml index 2ebe85df6e..2ebe85df6e 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_land.xml +++ b/indra/newview/skins/default/xui/pt/menu_land.xml diff --git a/indra/newview/skins/default/xui/pt/menu_landmark.xml b/indra/newview/skins/default/xui/pt/menu_landmark.xml index 6accfebee7..6accfebee7 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_landmark.xml +++ b/indra/newview/skins/default/xui/pt/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index 29dae6292a..29dae6292a 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml diff --git a/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml b/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml new file mode 100644 index 0000000000..2236df5c87 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordenar por quantidade em estoque stock (baixo a alto)" name="sort_by_stock_amount"/> + <menu_item_check label="Exibir apenas pastas da listagem" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml b/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml index ac84b02870..ac84b02870 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml 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 6a3fe55de5..6a3fe55de5 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pt/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml index 079f876add..079f876add 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/pt/menu_navbar.xml b/indra/newview/skins/default/xui/pt/menu_navbar.xml index 57c1471de3..57c1471de3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_navbar.xml +++ b/indra/newview/skins/default/xui/pt/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml index f1ea83c837..f1ea83c837 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml index 43ad4134ec..43ad4134ec 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml index 47b08a170c..47b08a170c 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_object.xml +++ b/indra/newview/skins/default/xui/pt/menu_object.xml diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml index df224a88fa..df224a88fa 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml index 3602bdaac4..3602bdaac4 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml index 8db5e405b3..8db5e405b3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml diff --git a/indra/newview/skins/default/xui/pt/menu_participant_list.xml b/indra/newview/skins/default/xui/pt/menu_participant_list.xml index 01f1d4ef80..01f1d4ef80 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/pt/menu_participant_list.xml 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 e7c325010f..e7c325010f 100755..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 diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups.xml b/indra/newview/skins/default/xui/pt/menu_people_groups.xml index 2ba7af17cd..2ba7af17cd 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml index 86a9d2263f..86a9d2263f 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml index 51464fed68..51464fed68 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml 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 7f3c6ace27..7f3c6ace27 100755..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 diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml index 0d32d58de4..0d32d58de4 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml index f3b89e01cd..f3b89e01cd 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/pt/menu_picks.xml b/indra/newview/skins/default/xui/pt/menu_picks.xml index 8b9e10fc02..8b9e10fc02 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_picks.xml +++ b/indra/newview/skins/default/xui/pt/menu_picks.xml diff --git a/indra/newview/skins/default/xui/pt/menu_picks_plus.xml b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml index 95a7c05262..95a7c05262 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/pt/menu_place.xml b/indra/newview/skins/default/xui/pt/menu_place.xml index 282ea20a7a..282ea20a7a 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_place.xml +++ b/indra/newview/skins/default/xui/pt/menu_place.xml diff --git a/indra/newview/skins/default/xui/pt/menu_place_add_button.xml b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml index d099d04f8d..d099d04f8d 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml index 7cba70a110..7cba70a110 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml index fec0911fcf..fec0911fcf 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml index d41ecbd755..d41ecbd755 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/pt/menu_save_outfit.xml b/indra/newview/skins/default/xui/pt/menu_save_outfit.xml index 61c6b9202f..61c6b9202f 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/pt/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml index ccf3878e14..ccf3878e14 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/pt/menu_slurl.xml b/indra/newview/skins/default/xui/pt/menu_slurl.xml index 6d4c84fc3c..6d4c84fc3c 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_slurl.xml +++ b/indra/newview/skins/default/xui/pt/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml index f034509be8..f034509be8 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml index 3a2b3a8847..3a2b3a8847 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml index 6a633cf74c..6a633cf74c 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/pt/menu_text_editor.xml b/indra/newview/skins/default/xui/pt/menu_text_editor.xml index a26b50e1c2..a26b50e1c2 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/pt/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/pt/menu_toolbars.xml b/indra/newview/skins/default/xui/pt/menu_toolbars.xml index b58a1a6e4f..b58a1a6e4f 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/pt/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/pt/menu_topinfobar.xml b/indra/newview/skins/default/xui/pt/menu_topinfobar.xml index d9347950b1..d9347950b1 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/pt/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml index 102df18b28..102df18b28 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_experience.xml b/indra/newview/skins/default/xui/pt/menu_url_experience.xml new file mode 100644 index 0000000000..1bbc27f267 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_group.xml b/indra/newview/skins/default/xui/pt/menu_url_group.xml index 5b67a69c9a..5b67a69c9a 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_group.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_http.xml b/indra/newview/skins/default/xui/pt/menu_url_http.xml index e53a2572b8..e53a2572b8 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_http.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_inventory.xml b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml index 45c14355d0..45c14355d0 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_map.xml b/indra/newview/skins/default/xui/pt/menu_url_map.xml index ba114cccaa..ba114cccaa 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_map.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml index 2cd0f52ef3..2cd0f52ef3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_parcel.xml b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml index 6cc668bfd3..6cc668bfd3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_slapp.xml b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml index d0784149ac..d0784149ac 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_slurl.xml b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml index 7216ccf0b3..7216ccf0b3 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/pt/menu_url_teleport.xml b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml index f007425646..f007425646 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 0bbb9683a0..3d5d9eccc6 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Nova janela de inventário" name="NewInventoryWindow"/> <menu_item_call label="Lugares..." name="Places"/> <menu_item_call label="Destaques..." name="Picks"/> + <menu_item_call label="Experiências..." name="Experiences"/> <menu_item_call label="Controles da câmera..." name="Camera Controls"/> <menu label="Movimentos" name="Movement"> <menu_item_call label="Sentar" name="Sit Down Here"/> <menu_item_check label="Voar" name="Fly"/> <menu_item_check label="Correr sempre" name="Always Run"/> <menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/> - <menu_item_call label="Andar/correr/voar..." name="Walk / run / fly"/> + <menu_item_call label="Andar/correr/voar..." name="WalkRunFly"/> </menu> <menu label="Status" name="Status"> <menu_item_check label="Ausente" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> <menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/> + <menu_item_call label="Listagens do Marketplace..." name="MarketplaceListings"/> <menu_item_call label="Painel da conta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/> </menu_item_call> @@ -48,7 +50,7 @@ <menu_item_check label="Amigos" name="My Friends"/> <menu_item_check label="Grupos" name="My Groups"/> <menu_item_check label="Pessoas próximas" name="Active Speakers"/> - <menu_item_call label="Lista de bloqueados" name="Block List"/> + <menu_item_check label="Lista de bloqueados" name="Block List"/> <menu_item_check label="Não perturbe" name="Do Not Disturb"/> </menu> <menu label="Mundo" name="World"> @@ -62,7 +64,7 @@ <menu_item_call label="Foto" name="Take Snapshot"/> <menu_item_call label="Perfil da região" name="Place Profile"/> <menu_item_call label="Sobre terrenos" name="About Land"/> - <menu_item_call label="Região/Propriedade" name="Region/Estate"/> + <menu_item_call label="Região/Propriedade" name="RegionEstate"/> <menu_item_call label="Meus terrenos..." name="My Land"/> <menu_item_call label="Comprar este terreno" name="Buy Land"/> <menu label="Mostrar" name="LandShow"> @@ -176,7 +178,7 @@ <menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/> <menu_item_call label="Denunciar abuso" name="Report Abuse"/> <menu_item_call label="Relatar bug" name="Report Bug"/> - <menu_item_call label="Empurrões, trombadas e tapas" name="Bumps, Pushes &amp; Hits"/> + <menu_item_call label="Bumps, Pushes & Hits" name="Bumps, Pushes &amp; Hits"/> <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avançado" name="Advanced"> @@ -249,6 +251,7 @@ <menu_item_check label="Painel de textura" name="Texture Console"/> <menu_item_check label="Console de depuração" name="Debug Console"/> <menu_item_call label="Painel de avisos" name="Notifications"/> + <menu_item_check label="Console de depuração de região" name="Region Debug Console"/> <menu_item_check label="Tempos" name="Fast Timers"/> <menu_item_check label="Memória" name="Memory"/> <menu_item_check label="Estatísticas da cena" name="Scene Statistics"/> @@ -324,7 +327,7 @@ <menu label="Rede" name="Network"> <menu_item_check label="Pausar avatar" name="AgentPause"/> <menu_item_call label="Drop a Packet" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mundo" name="DevelopWorld"> <menu_item_check label="Impor sobre sol de simulação" name="Sim Sun Override"/> <menu_item_check label="Clima fixo" name="Fixed Weather"/> 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 2487f6779f..2487f6779f 100755..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 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 75dca703cb..75dca703cb 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml 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 4e6e52ebc7..4e6e52ebc7 100755..100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/pt/mime_types.xml b/indra/newview/skins/default/xui/pt/mime_types.xml index f9c0496eea..be387088bd 100755..100644 --- a/indra/newview/skins/default/xui/pt/mime_types.xml +++ b/indra/newview/skins/default/xui/pt/mime_types.xml @@ -24,10 +24,10 @@ </widgetset> <widgetset name="none"> <label name="none_label"> - Sem conteúdo disponível + Sem conteúdo </label> <tooltip name="none_tooltip"> - Não há mídia disponível aqui. + Sem mídia aqui </tooltip> </widgetset> <widgetset name="image"> @@ -64,7 +64,7 @@ </mimetype> <mimetype name="none/none"> <label name="none/none_label"> - - Nenhum - + - Nenhum - </label> </mimetype> <mimetype name="audio/*"> diff --git a/indra/newview/skins/default/xui/pt/mime_types_linux.xml b/indra/newview/skins/default/xui/pt/mime_types_linux.xml index 789843cbba..70dd03feab 100755..100644 --- a/indra/newview/skins/default/xui/pt/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/pt/mime_types_linux.xml @@ -44,6 +44,14 @@ Tocar clipe </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Sem conteúdo + </label> + <tooltip name="none_tooltip"> + Sem mídia aqui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Stream em tempo real diff --git a/indra/newview/skins/default/xui/pt/mime_types_mac.xml b/indra/newview/skins/default/xui/pt/mime_types_mac.xml index 34b40e94ab..17cb5f7093 100755..100644 --- a/indra/newview/skins/default/xui/pt/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/pt/mime_types_mac.xml @@ -44,6 +44,14 @@ Tocar o áudio desta localização </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Sem conteúdo + </label> + <tooltip name="none_tooltip"> + Sem mídia aqui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Real Time Streaming diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 00c0b13670..a264495404 100755..100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -72,6 +72,10 @@ Detalhes do erro: O aviso '[_NAME]' não foi localizado no arquivo not [MESSAGE] <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Um erro ocorreu ao atualizar o [APP_NAME]. [http://get.secondlife.com Baixe a versão atual] do Visualizador. <usetemplate name="okbutton" yestext="OK"/> @@ -124,6 +128,88 @@ Nenhuma pasta foi enviada ao Marketplace devido a um erro do sistema ou da rede. Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema ou da rede. Tente novamente mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Copiar ou mover para Pasta de estoque com falha com o erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Copiar ou mover para Listagens do Marketplace com falha com o erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Ocorreu uma falha na transação com o Marketplace com o seguinte erro: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Não foi possível listar este produto ou ativar a pasta de versões. Geralmente, isso é causado por ausência de informações no formulário de descrição da listagem, mas pode ser causado por erros na estrutura de pastas. Edite a listagem ou verifique se há erros na pasta de listagem. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Falha ao listar no Marketplace com erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Falha ao ativar esta pasta de versões com erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Esta ação alterará o conteúdo ativo desta listagem. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de alterar uma listagem ativa no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Os itens arrastados para a janela Listagens do Marketplace são movidos de seus locais originais e não copiados. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de mover um item do inventário para o Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Mover ou excluir uma pasta de listagem excluirá sua listagem do Marketplace. Se você deseja manter a listagem do Marketplace, mova ou exclua o conteúdo da pasta de versões que você deseja modificar. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de mover ou excluir uma listagem do Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Você não tem permissão para copiar um ou mais deste itens para o Marketplace. Você pode movê-los ou deixá-los para trás. + <usetemplate canceltext="Cancelar" ignoretext="Confirmar antes de tentar copiar uma seleção que contenha itens de cópia proibida para o Marketplace" name="yesnocancelbuttons" notext="Não mover item(ns)" yestext="Mover item(ns)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Esta ação removerá esta listagem. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de remover uma listagem ativa no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Esta ação desativará a pasta de versões da listagem atual. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de desativar a pasta de versões de uma listagem no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + A listagem não pode ser atualizada. +[[URL] Clique aqui] para editá-la no Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Não é possível usar roupas ou partes do corpo que estejam na pasta Listagens do Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID de listagem inválida. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Há várias pastas sem versão ou com várias versões nesta listagem. Você precisará selecionar e ativar uma delas separadamente mais tarde. + <usetemplate ignoretext="Alertar sobre a ativação da pasta de versões quando criar uma listagem com várias pastas de versões" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Separamos itens de estoque de tipos diferentes em pastas de estoque diferentes para que sua pasta fique organizada de maneira que possamos listá-la. + <usetemplate ignoretext="Alertar quando a pasta de estoque for dividida antes de ser listada" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Removemos sua listagem porque o estoque está vazio. Você precisa adicionar mais unidades à pasta de estoque para que a listagem seja exibida novamente. + <usetemplate ignoretext="Alertar quando uma listagem não for listada porque a pasta de estoque está vazia" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Houve um problema com o carregamento do texto para um script devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. </notification> @@ -463,6 +549,10 @@ Nota: Este procedimento limpa o cache. Salvar alterações? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/> </notification> + <notification name="DeleteNotecard"> + Excluir nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Falha ao salvar Gesto. Este gesto possui muitos passos. @@ -569,6 +659,9 @@ Para aumentar a qualidade do vídeo, vá para Preferências > Vídeo. <notification name="RegionNoTerraforming"> A região [REGION] não permite ser aplainada. </notification> + <notification name="ParcelNoTerraforming"> + Você não está autorizado a terraplanar o terreno [PARCEL]. + </notification> <notification name="CannotCopyWarning"> Você não tem autorização para copiar os itens abaixo: [ITEMS] @@ -1817,6 +1910,30 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. Remover o gerente da propriedade desta propriedade apenas ou para [ALL_ESTATES]? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> </notification> + <notification label="Selecionar propriedade" name="EstateAllowedExperienceAdd"> + Adicionar à lista de permitidos apenas para essa propriedade ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> + <notification label="Selecionar propriedade" name="EstateAllowedExperienceRemove"> + Remover da lista de permitidos apenas para essa propriedade ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> + <notification label="Selecionar propriedade" name="EstateBlockedExperienceAdd"> + Adicionar à lista de bloqueados dessa propriedade apenas ou de [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> + <notification label="Selecionar propriedade" name="EstateBlockedExperienceRemove"> + Remover da lista de bloqueados para essa propriedade somente ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> + <notification label="Selecionar propriedade" name="EstateTrustedExperienceAdd"> + Adicionar à lista-chave dessa propriedade apenas ou de [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> + <notification label="Selecionar propriedade" name="EstateTrustedExperienceRemove"> + Remover da lista-chave para essa propriedade somente ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as propriedades" yestext="Esta propriedade"/> + </notification> <notification label="Confirmar expulsão" name="EstateKickUser"> Expulsar [EVIL_USER] desta propriedade? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/> @@ -1829,6 +1946,9 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. A região que você está tentando visitar tem conteúdo que excede suas preferências atuais. Você pode alterar suas preferências acessando Eu > Preferências > Geral. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> A região que você está tentando visitar tem conteúdo [REGIONMATURITY], acessível apenas para adultos. <url name="url"> @@ -1891,6 +2011,10 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. Estamos tendo dificuldades técnicas com seu teletransporte, pois suas preferências estão dessincronizadas com o servidor. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Não é possível inserir a região. '[REGION_NAME]' é uma Região de Skill Gaming, portanto você deve atender certos critérios para poder entrar. Para maiores detalhes, consulte as [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> Você não receberá mais notificações de que está prestes a visitar uma região com conteúdo [RATING]. Posteriormente você poderá alterar suas preferências de conteúdo acessando Eu > Preferências > Geral da barra do menu. <usetemplate name="okbutton" yestext="OK"/> @@ -2113,6 +2237,10 @@ Mover para o inventário o(s) item(s)? <ignore name="ignore" text="Definir 'Pagar por objeto' ao construir um objeto sem script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirme que você deseja pagar L$[AMOUNT] a [TARGET]. + <usetemplate ignoretext="Confirmar antes de pagar (somas acima de L$ 200)" name="okcancelignore" notext="Cancelar" yestext="Pagar"/> + </notification> <notification name="OpenObjectCannotCopy"> Não há itens neste objeto que você está autorizado a copiar. </notification> @@ -2198,6 +2326,9 @@ Você deseja substituí-lo pelo objeto selecionado? <button ignore="Never Replace" name="No" text="Não"/> </form> </notification> + <notification name="TooManyWearables"> + Você não pode usar uma pasta que contenha mais de [AMOUNT] itens. Você pode mudar esse limite em Avançado > Mostrar configurações de depuração > WearFolderLimit. + </notification> <notification label="Aviso de modo Não perturbe" name="DoNotDisturbModePay"> Você ativou o Não perturbe. Você não receberá qualquer item oferecido em troca deste pagamento. @@ -2646,9 +2777,6 @@ Por favor, tente novamente em alguns instantes. <notification name="NoValidCircuit"> Código de circuito inválido. </notification> - <notification name="NoValidTimestamp"> - Hora inválida. - </notification> <notification name="NoPendingConnection"> Impossível criar a conexão pendente. </notification> @@ -2803,7 +2931,7 @@ Se permanecer aqui, você será desconectado. [MESSAGE] -Do objeto: <nolink>[OBJECTNAME]</nolink>, de: [NAME]? +Do objeto: <nolink>[OBJECTNAME]</nolink>, de: [NAME] <form name="form"> <button name="Gotopage" text="Carregar"/> <button name="Cancel" text="Cancelar"/> @@ -2829,6 +2957,72 @@ OK? <button name="Mute" text="Bloquear"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Não foi possível adquirir uma nova experiência: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Uma alteração do grupo de experiência foi ignorada porque o proprietário não é membro do grupo selecionado. + </notification> + <notification name="UneditableExperienceProfileMessage"> + O campo não editável '[field]' foi ignorado ao atualizar o perfil de experiência. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Alterações ignoradas para o campo '[field]' que só podem ser definidas pelo proprietário da experiência. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Você não pode definir a classificação de maturidade de uma experiência como sendo mais alta que a do proprietário. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Os seguintes termos impediram a atualização do nome e/ou descrição do perfil de experiência: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Você foi teletransportado da região [region_name] por remover a experiência secondlife:///app/experience/[public_id]/profile e não tem mais permissão na região. + <form name="form"> + <ignore name="ignore" text="Ejetar da região por remover uma experiência"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + Você recebeu permissão para a região [region_name] ao participar da experiência-chave secondlife:///app/experience/[public_id]/profile Remover essa experiência pode ejetá-lo da região. + <form name="form"> + <ignore name="ignore" text="Permitido em uma região devido a uma experiência"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + Você não está autorizado a acessar esse destino. Você pode ser permitido na região aceitando uma das experiências abaixo: + +[EXPERIENCE_LIST] + +Outras experiências chave podem estar disponíveis. + </notification> + <notification name="ExperienceEvent"> + Um objeto foi permitido para [EventType] pelo secondlife:///app/experience/[public_id]/profile experience. + Proprietário: secondlife:///app/agent/[OwnerID]/inspect + Nome do objeto: [ObjectName] + Nome do Terreno: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + Um anexo teve permissão para executar [EventType] pelo secondlife:///app/experience/[public_id]/profile experience. + Proprietário: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + '<nolink>[OBJECTNAME]</nolink>', um objeto de propriedade de '[NAME]', solicita a sua participação na experiência [GRID_WIDE]: + +[EXPERIENCE] + +Quando a permissão for dada, você não irá mais visualizar essa mensagem novamente a não ser que seja revogada do perfil de experiência. + +Os scripts associados a essa experiência serão capazes de realizar o seguinte nas regiões onde a experiência esteja ativa: + +[QUESTIONS]Isso está bem? + <form name="form"> + <button name="BlockExperience" text="Bloquear experiência"/> + <button name="Mute" text="Bloquear objeto"/> + <button name="Yes" text="Sim"/> + <button name="No" text="Não"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Aviso: O objeto '<nolink>[OBJECTNAME]</nolink>' deseja obter acesso total à sua conta de dólares Linden. Se você conceder acesso, ele poderá remover fundos de sua conta a qualquer momento ou esvaziar sua conta completamente, continuamente e sem avisos adicionais. @@ -3148,6 +3342,10 @@ Você carregou uma textura com [RESOLUTION] para o(a) '[BODYREGION]' e ( [EXISTENCE] segundos de vida ) Você carregou uma textura com [RESOLUTION] para o(a) '[BODYREGION]' em [TIME] segundos. </notification> + <notification name="CannotUploadTexture"> + Não foi possível carregar textura. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Não podemos exibir uma visualização desta textura, pois ela é cópia proibida e/ou transferência proibida. <usetemplate ignoretext="Avise-me quando o modo Visualização em Tempo Real estiver indisponível para texturas de cópia proibida e/ou transferência proibida" name="okignore" yestext="OK"/> @@ -3721,9 +3919,11 @@ Tente novamente em instantes. </notification> <notification name="TeleportedByAttachment"> Você foi teletransportado por um anexo em [ITEM_ID] + <usetemplate ignoretext="Teletransportar: Você foi teletransportado por um anexo" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Você foi teletransportado pelo objeto '[OBJECT_NAME]' no lote '[PARCEL_NAME]' + <usetemplate ignoretext="Teletransportar: Você foi teletransportado por um objeto em um lote" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Você foi teletransportado pelo objeto '[OBJECT_NAME]' de propriedade de [OWNER_ID] @@ -4055,7 +4255,7 @@ Tente selecionar uma quantidade menor de terreno. <usetemplate ignoretext="Não foi possível mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ocorreu um problema ao salvar as permissões padrão devido ao seguinte motivo: [REASON]. Tente definir as permissões padrão mais tarde. + Ocorreu um problema ao salvar as permissões padrão do objeto: [REASON]. Tente definir as permissões padrão mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml index b1ffa0d2e5..b1ffa0d2e5 100755..100644 --- a/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml diff --git a/indra/newview/skins/default/xui/pt/panel_active_object_row.xml b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml index 73f6b2225f..73f6b2225f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml index bd50d4953d..bd50d4953d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml 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 22eb23ebc5..22eb23ebc5 100755..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 diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml index 2fcf6b9932..2fcf6b9932 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml index 87a2e1674d..87a2e1674d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml index 094a03553b..094a03553b 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml index 78d9826099..78d9826099 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml index 0551d9cba6..0551d9cba6 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml 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 73bfe7444e..73bfe7444e 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml index bfdc7290d2..bfdc7290d2 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml index 4b45a49f74..4b45a49f74 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml b/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml index 3e4b12b001..3e4b12b001 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml index 7ca5e23981..7ca5e23981 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml index 3dfb5a0a16..3dfb5a0a16 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml index b274945dbd..b274945dbd 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml 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 23e00bfc3a..23e00bfc3a 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml index f21656d526..f21656d526 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml index 281823d641..281823d641 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_hair.xml b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml index 13f1f892f9..13f1f892f9 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml index 5798325bd7..5798325bd7 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pants.xml b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml index 18568a81a8..18568a81a8 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_physics.xml b/indra/newview/skins/default/xui/pt/panel_edit_physics.xml index 967aab8bc3..967aab8bc3 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_physics.xml 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 5eb9987e71..5eb9987e71 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml 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 0ba7382845..0ba7382845 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml index de41ba3ad2..de41ba3ad2 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml index c7e2b1e64c..c7e2b1e64c 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml index 08465d09e7..08465d09e7 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml index d00aa2dc66..d00aa2dc66 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml index 275efba6e6..275efba6e6 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_socks.xml b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml index 6f4779d855..6f4779d855 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml index f85bb3c499..f85bb3c499 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml index c383471851..c383471851 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml index 0bf510c67f..0bf510c67f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml 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 2e3e3d6305..2e3e3d6305 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/pt/panel_experience_info.xml b/indra/newview/skins/default/xui/pt/panel_experience_info.xml new file mode 100644 index 0000000000..7fad25dad6 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Perfil de experiência"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Localização: + </text> + <text name="LocationTextText"> + qualquer lugar + </text> + <button label="Teletransportar" name="teleport_btn"/> + <button label="Mapa" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Loja do Marketplace + </text> + <text name="LocationTextText"> + qualquer lugar + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Classificação: + </text> + <text name="ContentRatingText"> + Adulto + </text> + <text name="Owner"> + Proprietário: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/pt/panel_experience_list_editor.xml new file mode 100644 index 0000000000..6e10cc583c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + Carregando... + </panel.string> + <panel.string name="panel_allowed"> + Experiências permitidas: + </panel.string> + <panel.string name="panel_blocked"> + Experiências bloqueadas: + </panel.string> + <panel.string name="panel_trusted"> + Experiências-chave: + </panel.string> + <panel.string name="no_results"> + (vazio) + </panel.string> + <text name="text_name"> + Lista de experiências + </text> + <scroll_list name="experience_list"> + <columns label="Nome" name="experience_name"/> + </scroll_list> + <button label="Adicionar..." name="btn_add"/> + <button label="Remover" name="btn_remove"/> + <button label="Perfil..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_experience_list_item.xml b/indra/newview/skins/default/xui/pt/panel_experience_list_item.xml new file mode 100644 index 0000000000..24022faeae --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Nome fictício + </text> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_experience_log.xml b/indra/newview/skins/default/xui/pt/panel_experience_log.xml new file mode 100644 index 0000000000..97ef760716 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Sem eventos."/> + <string name="loading" value="Carregando..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Hora" name="time"/> + <columns label="Evento" name="event"/> + <columns label="Experiência" name="experience_name"/> + <columns label="Objeto" name="object_name"/> + </scroll_list> + <button label="Avisar" name="btn_notify"/> + <button label="Perfil" name="btn_profile_xp"/> + <button label="Denunciar" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Avisar sobre todos os eventos Dias" name="notify_all"/> + <button label="Limpar" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_experience_search.xml b/indra/newview/skins/default/xui/pt/panel_experience_search.xml new file mode 100644 index 0000000000..e8d5ba63d5 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + '[TEXT]' não encontrado + </string> + <string name="no_results"> + Sem resultados + </string> + <string name="searching"> + Pesquisando... + </string> + <string name="loading"> + Carregando... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Ir" name="find"/> + <icons_combo_box label="Moderado" name="maturity"> + <icons_combo_box.item label="Adulto" name="Adult" value="42"/> + <icons_combo_box.item label="Moderado" name="Mature" value="21"/> + <icons_combo_box.item label="Geral" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Nome" name="experience_name"/> + <columns label="Proprietário" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Exibir perfil" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_experiences.xml b/indra/newview/skins/default/xui/pt/panel_experiences.xml new file mode 100644 index 0000000000..cdf1a760d8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Carregando experiências..."/> + <string name="no_experiences" value="Nenhuma experiência."/> + <string name="acquire" value="Adquirir uma experiência"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_facebook_friends.xml b/indra/newview/skins/default/xui/pt/panel_facebook_friends.xml index 9cb7a8b7d1..8c5c24d08b 100644 --- a/indra/newview/skins/default/xui/pt/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/pt/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="No momento, você não tem amigos do Facebook que também são residentes do Second Life. Convide seus amigos do Facebook para ingressar no Second Life hoje mesmo!"/> - <string name="facebook_friends_no_connected" value="No momento, você não está conectado ao Facebook. Vá para a aba Conta para se conectar e ativar esse recurso."/> + <string name="facebook_friends_no_connected" value="No momento, você não está conectado ao Facebook. Vá para a aba Status para se conectar e ativar esse recurso."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="Amigos do SL"/> <accordion_tab name="tab_suggested_friends" title="Adicionar essas pessoas como amigos do SL"/> diff --git a/indra/newview/skins/default/xui/pt/panel_facebook_photo.xml b/indra/newview/skins/default/xui/pt/panel_facebook_photo.xml index 22615e0769..cdf3222092 100644 --- a/indra/newview/skins/default/xui/pt/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/pt/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> - <combo_box.item label="Janela atual" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> - <combo_box.item label="Sem filtro" name="NoFilter"/> - </combo_box> - <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> - <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> - <text name="caption_label"> - Comentário (opcional): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Postar" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> + <combo_box.item label="Janela atual" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> + <combo_box.item label="Sem filtro" name="NoFilter"/> + </combo_box> + <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> + <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> + <text name="caption_label"> + Comentário (opcional): + </text> + <button label="Postar" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_facebook_place.xml b/indra/newview/skins/default/xui/pt/panel_facebook_place.xml index 97596d64c6..aa8b51d64b 100644 --- a/indra/newview/skins/default/xui/pt/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/pt/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Diga algo sobre onde você está: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Postar" name="post_place_btn"/> - <button label="Cancelar" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Diga algo sobre onde você está: + </text> + <check_box initial_value="false" label="Incluir vista abstrata da localização" name="add_place_view_cb"/> + <button label="Postar" name="post_place_btn"/> + <button label="Cancelar" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_facebook_status.xml b/indra/newview/skins/default/xui/pt/panel_facebook_status.xml index 251580666e..0bbaf1086c 100644 --- a/indra/newview/skins/default/xui/pt/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/pt/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - No que você está pensando? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Postar" name="post_status_btn"/> - <button label="Cancelar" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Você está conectado ao Facebook como:"/> + <string name="facebook_disconnected" value="Não conectado ao Facebook"/> + <text name="account_caption_label"> + Não conectado ao Facebook. + </text> + <panel name="panel_buttons"> + <button label="Conectar..." name="connect_btn"/> + <button label="Desconectar" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Aprenda a publicar no Facebook] + </text> + </panel> + <text name="status_caption_label"> + No que você está pensando? + </text> + <button label="Postar" name="post_status_btn"/> + <button label="Cancelar" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml b/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml index 77d8afb47c..cbb3e362fe 100644 --- a/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> - <combo_box.item label="Janela atual" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> - <combo_box.item label="Sem filtro" name="NoFilter"/> - </combo_box> - <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> - <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> - <text name="title_label"> - Título: - </text> - <text name="description_label"> - Descrição: - </text> - <check_box initial_value="true" label="Incluir localização do SL no final da descrição" name="add_location_cb"/> - <text name="tags_label"> - Tags: - </text> - <text name="tags_help_label"> - Separe as tags com espaços + <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> + <combo_box.item label="Janela atual" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> + <combo_box.item label="Sem filtro" name="NoFilter"/> + </combo_box> + <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> + <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> + <text name="title_label"> + Título: + </text> + <text name="description_label"> + Descrição: + </text> + <check_box initial_value="true" label="Incluir localização do SL no final da descrição" name="add_location_cb"/> + <text name="tags_label"> + Tags: + </text> + <text name="tags_help_label"> + Separe as tags com espaços Use "" para tags com várias palavras - </text> - <combo_box name="rating_combobox" tool_tip="Classificação de conteúdo do Flickr"> - <combo_box.item label="Classificação segura do Flickr" name="SafeRating"/> - <combo_box.item label="Classificação moderada do Flickr" name="ModerateRating"/> - <combo_box.item label="Classificação restrita do Flickr" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Enviar" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Classificação de conteúdo do Flickr"> + <combo_box.item label="Classificação segura do Flickr" name="SafeRating"/> + <combo_box.item label="Classificação moderada do Flickr" name="ModerateRating"/> + <combo_box.item label="Classificação restrita do Flickr" name="RestrictedRating"/> + </combo_box> + <button label="Enviar" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml index 502dae8d67..502dae8d67 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml index b634ec3f64..b634ec3f64 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml 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 7d8531a482..d322c60ec0 100755..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 @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Funções e membros"/> <accordion_tab name="group_notices_tab" title="Avisos"/> <accordion_tab name="group_land_tab" title="Terrenos/Bens"/> + <accordion_tab name="group_experiences_tab" title="Experiências"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/pt/panel_group_invite.xml b/indra/newview/skins/default/xui/pt/panel_group_invite.xml index 08bd4a3b6b..08bd4a3b6b 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml index 2346fe7f4f..2346fe7f4f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml index 0490878507..0490878507 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml index 3bff1f8fb3..3bff1f8fb3 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_notify.xml b/indra/newview/skins/default/xui/pt/panel_group_notify.xml index 5a8ea81074..5a8ea81074 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml index 162c4743ec..162c4743ec 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml index 91b7d1b7cd..91b7d1b7cd 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/pt/panel_inventory_item.xml b/indra/newview/skins/default/xui/pt/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml index 39c19a22d4..39c19a22d4 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/pt/panel_landmarks.xml b/indra/newview/skins/default/xui/pt/panel_landmarks.xml index 49e1203601..49e1203601 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/pt/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml index 8ac3e57c4c..ffcf72b1b4 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_login.xml +++ b/indra/newview/skins/default/xui/pt/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=pt - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=pt</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nome de usuário" name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 ou Magia Solar"/> <line_editor label="Senha" name="password_edit"/> - <check_box label="Lembrar-me" name="remember_check"/> - <text name="forgot_password_text"> - Senha esquecida - </text> - <button label="Login" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - no último local - </text> <combo_box label="Meus locais favoritos" name="start_location_combo"> + <combo_box.item label="Última posição" name="MyLastLocation"/> <combo_box.item label="Minha casa" name="MyHome"/> </combo_box> - <button label="Login" name="connect_favorite_btn"/> - <line_editor label="Digite um local" name="location_edit"/> - <button label="Login" name="connect_location_btn"/> + <button label="Login" name="connect_btn"/> + <check_box label="Lembrar-me" name="remember_check"/> + <text name="forgot_password_text">Senha esquecida</text> <combo_box label="Selecionar grade" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml index dbf8e4fa52..dbf8e4fa52 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml new file mode 100644 index 0000000000..cfa0e10038 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opções de exibição/ordenação"/> + <button name="add_btn" tool_tip="Cria uma nova pasta de listagem"/> + <button label="Verificar erros" name="audit_btn" tool_tip="Verificar suas listagens do Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrar listagens do Marketplace" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..5967f24628 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TUDO" name="All Items" tool_tip="Arraste e solte os itens aqui para listá-los"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..6549f82b5c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="PUBLICADA" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..1797be5ae8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="DESASSOCIADA" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..79b8557ec3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NÃO PUBLICADA" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml index 281c886bd4..281c886bd4 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_me.xml +++ b/indra/newview/skins/default/xui/pt/panel_me.xml diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml index 43c0820036..43c0820036 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml index 55226db274..55226db274 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml index e38c44d8fe..e38c44d8fe 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml index 4fa5436805..4fa5436805 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml index 6828d41dee..6828d41dee 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml index 5628a87109..5628a87109 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_media.xml b/indra/newview/skins/default/xui/pt/panel_nearby_media.xml index 43bf8f9661..43bf8f9661 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/pt/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml index dcd9ba1815..dcd9ba1815 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml b/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml index 442622035a..442622035a 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml 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 eb23f5c079..eb23f5c079 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml 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 816a9bc46e..816a9bc46e 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml index 736b8f1fdd..736b8f1fdd 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml index 2d74e092a4..2d74e092a4 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml index 9224ec4742..9224ec4742 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml index 205fd6b97d..205fd6b97d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_people.xml +++ b/indra/newview/skins/default/xui/pt/panel_people.xml 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 caa140a245..caa140a245 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/pt/panel_picks.xml b/indra/newview/skins/default/xui/pt/panel_picks.xml index 2ff1eed624..2ff1eed624 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_picks.xml +++ b/indra/newview/skins/default/xui/pt/panel_picks.xml diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml index 8abe579702..8abe579702 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml index 69f0baf65f..69f0baf65f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_places.xml +++ b/indra/newview/skins/default/xui/pt/panel_places.xml diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_message.xml b/indra/newview/skins/default/xui/pt/panel_postcard_message.xml index 9cde810430..9cde810430 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/pt/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml b/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml index 3088b9a996..3608c96c6a 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Customizado" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Largura" name="postcard_snapshot_width"/> - <spinner label="Altura" name="postcard_snapshot_height"/> - <check_box label="Limitar proporções" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Qualidade da imagem" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Largura X Altura" name="postcard_snapshot_width"/> + <check_box label="Limitar proporções" name="postcard_keep_aspect_check"/> + <slider label="Qualidade:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml index 3ea592a957..3ea592a957 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml index 2ffe720ccf..2ffe720ccf 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml 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 89f1e07647..89f1e07647 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml b/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml index d6c6f66e37..d6c6f66e37 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml 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 68fbd049b1..68fbd049b1 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml 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 756e345cb8..756e345cb8 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml index fa6f5f5851..fa6f5f5851 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml index 78323fc47d..78323fc47d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml index 1279e74e21..87f2a9bc8f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="Usar meu navegador (IE, Firefox, Safari)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado." value="true"/> - <radio_item label="Usar navegador incluso" name="internal" tool_tip="Use este navegador para consultar a ajuda, abrir links da web, etc. As janelas abrem dentro do [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Usar meu navegador (Chrome, Firefox, IE) para todos os links" name="internal" tool_tip="Use o navegador padrão do sistema para consultar a ajuda, abrir links da web etc. Uso em tela inteira não recomendado." value="0"/> + <radio_item label="Usar o navegador incorporado somente para links do SecondLife" name="external" tool_tip="Usar o navegador padrão do sistema para consultar a ajuda, abrir links da web etc. O navegador incorporado será usado somente para os links da LindenLab/SecondLife." value="1"/> </radio_group> <check_box initial_value="true" label="Habilitar plugins" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Aceitar cookies" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index fff5fd7005..fff5fd7005 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml 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 9e07b6772f..9e07b6772f 100755..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 diff --git a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml index 65ac89baf8..65ac89baf8 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml index 2647c7a1e2..2647c7a1e2 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/pt/panel_region_environment.xml b/indra/newview/skins/default/xui/pt/panel_region_environment.xml index 79eedebe5f..79eedebe5f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/pt/panel_region_estate.xml b/indra/newview/skins/default/xui/pt/panel_region_estate.xml index b1453c9c32..b1453c9c32 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/pt/panel_region_experiences.xml b/indra/newview/skins/default/xui/pt/panel_region_experiences.xml new file mode 100644 index 0000000000..c7e252cd6f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiências" name="Experiences"> + <panel.string name="trusted_estate_text"> + Qualquer experiência pode ser chave. + +Experiências-chave têm permissão para serem executadas nessa propriedade. + +Além disso, se a propriedade não permitir acesso público, os residentes participantes de qualquer experiência-chave podem entrar e permanecer na propriedade, desde que estejam na experiência-chave. + </panel.string> + <panel.string name="allowed_estate_text"> + Somente experiências dentro do terreno podem ser permitidas. + +Experiências permitidas têm permissão para ser executadas nessa propriedade. + </panel.string> + <panel.string name="blocked_estate_text"> + Somente experiências dentro da grade podem ser bloqueadas. + +É possível que as experiências bloqueadas não sejam executadas nessa propriedade. + </panel.string> + <panel.string name="estate_caption"> + Mudar as opções desta guia afeta todas as regiões desta propriedade. + </panel.string> + <panel.string name="allowed_parcel_text"> + Somente experiências dentro do terreno podem ser permitidas. + +Experiências permitidas têm permissão para ser executadas nesse terreno se não estiverem bloqueadas pela propriedade. + </panel.string> + <panel.string name="blocked_parcel_text"> + Qualquer experiência de residente pode ser bloqueada. + +É possível que as experiências bloqueadas não sejam executadas neste terreno. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_general.xml b/indra/newview/skins/default/xui/pt/panel_region_general.xml index a0d4579a04..a0d4579a04 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml index 74330a8946..74330a8946 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/pt/panel_script_ed.xml b/indra/newview/skins/default/xui/pt/panel_script_ed.xml index c546adcf8b..c546adcf8b 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/pt/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/pt/panel_script_experience.xml b/indra/newview/skins/default/xui/pt/panel_script_experience.xml new file mode 100644 index 0000000000..8366306581 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="EXPERIÊNCIA"> + <button label="Experiência" name="Expand Experience"/> + <check_box label="Usa experiência(s)" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Escolher experiência..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Você não é colaborador de nenhuma experiência. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml index daf87c4dc6..daf87c4dc6 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml index 94274b2cfe..94274b2cfe 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml b/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml index 87e6d16056..87e6d16056 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml index 0a5a2e2572..0a5a2e2572 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml 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 09444a5535..09444a5535 100755..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 diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml index 3c4bb18687..b038c628bc 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Salvar no meu inventário + Inventário </text> <text name="hint_lbl"> Salvar uma imagem em seu inventário custa L$[UPLOAD_COST]. Para salvar sua imagem como uma textura, selecione um dos formatos quadrados. @@ -13,8 +13,8 @@ <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> <combo_box.item label="Customizado" name="Custom"/> </combo_box> - <spinner label="Largura" name="inventory_snapshot_width"/> - <spinner label="Altura" name="inventory_snapshot_height"/> + <spinner label="Largura X Altura" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Limitar proporções" name="inventory_keep_aspect_check"/> <button label="Cancelar" name="cancel_btn"/> <button label="Salvar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml index 36b5b0cbe6..c6dbec189d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Salvar no meu PC + Disco </text> <combo_box label="Resolução" name="local_size_combo"> <combo_box.item label="Janela atual" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Customizado" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Largura" name="local_snapshot_width"/> - <spinner label="Altura" name="local_snapshot_height"/> - <check_box label="Limitar proporções" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Formato" name="local_format_combo"> - <combo_box.item label="PNG (sem perda)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (sem perda)" name="BMP"/> - </combo_box> - <slider label="Qualidade da imagem" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Largura X Altura" name="local_snapshot_width"/> + <check_box label="Limitar proporções" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Formato: + </text> + <combo_box label="Formato" name="local_format_combo"> + <combo_box.item label="PNG (sem perda)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (sem perda)" name="BMP"/> + </combo_box> + <slider label="Qualidade:" name="image_quality_slider"/> <button label="Cancelar" name="cancel_btn"/> <flyout_button label="Salvar" name="save_btn" tool_tip="Salvar imagem em um arquivo"> <flyout_button.item label="Salvar" name="save_item"/> diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml index bce44d2ed6..d588e59f6d 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Postar no feed do meu perfil" name="save_to_profile_btn"/> - <button label="E-mail" name="save_to_email_btn"/> - <button label="Salvar em Meu inventário (L$[AMOUNT])" name="save_to_inventory_btn"/> - <button label="Salvar no meu PC" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Enviar para: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="Salvar no disco" name="save_to_computer_btn"/> + <button label="Salvar em inventário (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Carregar no perfil" name="save_to_profile_btn"/> + <button label="Carregar no Facebook" name="send_to_facebook_btn"/> + <button label="Carregar no Twitter" name="send_to_twitter_btn"/> + <button label="Carregar no Flickr" name="send_to_flickr_btn"/> + <button label="Enviar por email" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml index 12a648f600..ab1545a231 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml @@ -10,8 +10,12 @@ Enviando... </string> <text name="title"> - E-mail + Email </text> - <button label="Mensagem" name="message_btn"/> - <button label="Configurações" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="Mensagem" name="panel_postcard_message"/> + <panel label="Configurações" name="panel_postcard_settings"/> + </tab_container> + <button label="Cancelar" name="cancel_btn"/> + <button label="Enviar" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml index 095b8fc75d..f1d7334752 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Postar no feed do meu perfil + Perfil </text> <combo_box label="Resolução" name="profile_size_combo"> <combo_box.item label="Janela atual" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Customizado" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Largura" name="profile_snapshot_width"/> - <spinner label="Altura" name="profile_snapshot_height"/> - <check_box label="Limitar proporções" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Legenda: - </text> - <check_box initial_value="true" label="Incluir local" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Largura X Altura" name="profile_snapshot_width"/> + <check_box label="Limitar proporções" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Legenda: + </text> + <check_box initial_value="true" label="Incluir local" name="add_location_cb"/> <button label="Cancelar" name="cancel_btn"/> <button label="Postar" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_sound_devices.xml b/indra/newview/skins/default/xui/pt/panel_sound_devices.xml index 66db89f48f..66db89f48f 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/pt/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml index 05869cf67a..05869cf67a 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml index cb9a6eb757..cfe52ff404 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perda de pacote - </panel.string> - <panel.string name="bandwidth_tooltip"> - Banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Perda de pacote</panel.string> + <panel.string name="bandwidth_tooltip">Banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-410" name="balance_bg" width="200"> - <text name="balance" tool_tip="Atualizar saldo de L$" value="L$20"/> + <text name="balance" tool_tip="Atualizar saldo de L$" value="L$??"/> <button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/> <button label="Comprar" name="goShop" tool_tip="Abrir Mercado do Second Life" width="80"/> </panel> - <text name="TimeText" tool_tip="Hora atual (Pacífico)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Hora atual (Pacífico)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Tocar/Pausar todas mídias (música, vídeo, páginas web)"/> <button name="volume_btn" tool_tip="Volume geral"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml index b77064a1ff..b77064a1ff 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml index 5d8a024754..5d8a024754 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/pt/panel_twitter_photo.xml b/indra/newview/skins/default/xui/pt/panel_twitter_photo.xml index 3958d5f0f9..7c4990f71e 100644 --- a/indra/newview/skins/default/xui/pt/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/pt/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Próximas etapas? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="Incluir localização do SL" name="add_location_cb"/> - <check_box initial_value="true" label="Incluir uma foto" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> - <combo_box.item label="Janela atual" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> - <combo_box.item label="Sem filtro" name="NoFilter"/> - </combo_box> - <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> - <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Enviar tweet" name="post_photo_btn"/> - <button label="Cancelar" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Próximas etapas? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="Incluir localização do SL" name="add_location_cb"/> + <check_box initial_value="true" label="Incluir uma foto" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Resolução da imagem"> + <combo_box.item label="Janela atual" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Filtros de imagem"> + <combo_box.item label="Sem filtro" name="NoFilter"/> + </combo_box> + <button label="Atualizar" name="new_snapshot_btn" tool_tip="Clique para atualizar"/> + <button label="Visualizar" name="big_preview_btn" tool_tip="Clique para alternar entre visualizações"/> + <button label="Enviar tweet" name="post_photo_btn"/> + <button label="Cancelar" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml index 1d7878408a..1d7878408a 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml index 1dfd2a69ca..1dfd2a69ca 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/pt/panel_world_map.xml b/indra/newview/skins/default/xui/pt/panel_world_map.xml index accab068fd..accab068fd 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_world_map.xml +++ b/indra/newview/skins/default/xui/pt/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml index 90e2264940..8d5bc061f9 100755..100644 --- a/indra/newview/skins/default/xui/pt/role_actions.xml +++ b/indra/newview/skins/default/xui/pt/role_actions.xml @@ -66,4 +66,8 @@ <action description="Enviar aviso" longdescription="Membros que exercem cargos com esta função podem enviar avisos na seção Avisos." name="notices send" value="42"/> <action description="Receber novos avisos e ver os anteriores" longdescription="Membros que exercem cargos com esta função podem receber e ler avisos antigos na seção Avisos." name="notices receive" value="43"/> </action_set> + <action_set description="Estas funções incluem o poder de modificar as experiências desse grupo." name="experience_tools_experience"> + <action description="Administrador de experiência" longdescription="Os membros em uma função com essa permissão podem editar os metadados de uma experiência." name="experience admin" value="49"/> + <action description="Colaborador de experiência" longdescription="Os membros em uma função com essa permissão podem contribuir com scripts para uma experiência." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml index a5048e63b2..a5048e63b2 100755..100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index 4747d14101..4747d14101 100755..100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml 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 d3cb087108..47ffffaf15 100755..100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Perfil do item"> + <panel.string name="loading_experience"> + (carregando) + </panel.string> <panel.string name="unknown"> (desconhecido) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Adquirido: </text> + <text name="LabelItemExperienceTitle"> + Experiência: + </text> <panel name="perms_inv"> <text name="perm_modify"> Você pode: @@ -66,8 +72,9 @@ <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 name="ComboBoxSaleType"> + <combo_box.item label="Cortar" name="Copy"/> + <combo_box.item label="Conteúdo" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preço: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml index f0fd438cef..bbfaa4a4f5 100755..100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Perfil do objeto"> - <panel.string name="text deed continued"> - Doar - </panel.string> - <panel.string name="text deed"> - Doar - </panel.string> - <panel.string name="text modify info 1"> - Você pode modificar este objeto - </panel.string> - <panel.string name="text modify info 2"> - Você pode modificar estes objetos - </panel.string> - <panel.string name="text modify info 3"> - Você não pode modificar este objeto - </panel.string> - <panel.string name="text modify info 4"> - Você não pode modificar estes objetos - </panel.string> - <panel.string name="text modify info 5"> - Não é possível modificar este objeto através de uma demarcação da região - </panel.string> - <panel.string name="text modify info 6"> - Não é possível modificar estes objetos através de uma demarcação da região - </panel.string> - <panel.string name="text modify warning"> - O objeto contém links ligando suas partes - </panel.string> - <panel.string name="Cost Default"> - Preço: L$ - </panel.string> - <panel.string name="Cost Total"> - Preço total: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Preço unitário: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Preço misto - </panel.string> - <panel.string name="Sale Mixed"> - Venda mista - </panel.string> + <panel.string name="text deed continued">Doar</panel.string> + <panel.string name="text deed">Doar</panel.string> + <panel.string name="text modify info 1">Você pode modificar este objeto</panel.string> + <panel.string name="text modify info 2">Você pode modificar estes objetos</panel.string> + <panel.string name="text modify info 3">Você não pode modificar este objeto</panel.string> + <panel.string name="text modify info 4">Você não pode modificar estes objetos</panel.string> + <panel.string name="text modify info 5">Não é possível modificar este objeto através de uma demarcação da região</panel.string> + <panel.string name="text modify info 6">Não é possível modificar estes objetos através de uma demarcação da região</panel.string> + <panel.string name="text modify warning">O objeto contém links ligando suas partes</panel.string> + <panel.string name="Cost Default">Preço: L$</panel.string> + <panel.string name="Cost Total">Preço total: L$</panel.string> + <panel.string name="Cost Per Unit">Preço unitário: L$</panel.string> + <panel.string name="Cost Mixed">Preço misto</panel.string> + <panel.string name="Sale Mixed">Venda mista</panel.string> <text name="title" value="Perfil do objeto"/> <text name="where" value="(Inworld)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrição: - </text> - <text name="CreatorNameLabel"> - Criador: - </text> - <text name="Owner:"> - Proprietário: - </text> - <text name="Group_label"> - Grupo: - </text> + <text name="Name:">Nome:</text> + <text name="Description:">Descrição:</text> + <text name="CreatorNameLabel">Criador:</text> + <text name="Owner:">Proprietário:</text> + <text name="Group_label">Grupo:</text> <button 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."/> - <text name="label click action"> - Clique para: - </text> + <text name="label click action">Clique para:</text> <combo_box name="clickaction"> <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/> <combo_box.item label="Sentar em objeto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Você pode modificar este objeto - </text> - <text name="Anyone can:"> - Todos: - </text> + <text name="perm_modify">Você pode modificar este objeto</text> + <text name="Anyone can:">Todos:</text> <check_box label="Copiar" name="checkbox allow everyone copy"/> <check_box label="Movimentar" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartilhar" name="checkbox share with group" 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> + <text name="NextOwnerLabel">Próximo proprietário:</text> <check_box label="Modificar" name="checkbox next owner can modify"/> <check_box label="Copiar" name="checkbox next owner can copy"/> <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Preço: L$" name="Edit Cost"/> <check_box label="Mostrar nos resultados de busca" name="search_check" tool_tip="Incluir o objeto nos resultados de busca"/> - <text name="pathfinding_attributes_label"> - Atributos do pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Atributos do pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Abrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 577143b0dc..cab8d86a99 100755..100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -29,7 +29,7 @@ Falha na inicialização dos gráficos. Atualize seu driver gráfico! </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [Notas da versão]] </string> <string name="AboutCompiler"> @@ -401,30 +401,51 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="TooltipMustSingleDrop"> Apenas um item único pode ser arrastado para este local </string> + <string name="TooltipTooManyWearables"> + Você não pode usar uma pasta que contenha mais de [AMOUNT] itens. Você pode mudar esse limite em Avançado > Mostrar configurações de depuração > WearFolderLimit. + </string> <string name="TooltipPrice" value="L$[AMOUNT]"/> <string name="TooltipOutboxDragToWorld"> - Não é possível fazer rez do itens em sua caixa de saída do lojista + Não é possível fazer rez de itens da pasta Listagens do Marketplace + </string> + <string name="TooltipOutboxWorn"> + Não é possível colocar itens que você estiver usando na pasta Listagens do Marketplace + </string> + <string name="TooltipOutboxFolderLevels"> + A profundidade das pastas aninhadas excede [AMOUNT]. Diminua a profundidade das pastas dentro de pastas. Agrupe os itens se necessário. + </string> + <string name="TooltipOutboxTooManyFolders"> + O número de subpastas excede [AMOUNT]. Diminua a o número de pastas em sua listagem. Agrupe os itens se necessário. + </string> + <string name="TooltipOutboxTooManyObjects"> + O número de itens excede [AMOUNT]. Para vender mais que [AMOUNT] itens em uma listagem, você deve agrupar alguns deles. + </string> + <string name="TooltipOutboxTooManyStockItems"> + O número de itens de estoque excede [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Você pode soltar somente itens ou pastas na aba TUDO. Selecione essa aba e mova seus itens ou pastas novamente. </string> <string name="TooltipOutboxNoTransfer"> - Um ou mais destes objetos não podem ser vendidos ou transferidos. + Um ou mais objetos não podem ser vendidos ou transferidos </string> <string name="TooltipOutboxNotInInventory"> - Sua caixa de saída do lojista aceita apenas itens direto do seu inventário + É possível colocar somente itens do seu inventário no Marketplace </string> - <string name="TooltipOutboxWorn"> - Você não pode colocar os itens que está vestindo na sua caixa de saída do lojista + <string name="TooltipOutboxLinked"> + Não é possível colocar itens ou pastas vinculadas no Marketplace </string> <string name="TooltipOutboxCallingCard"> - Não é possível colocar cartões de visita em sua caixa de saída do lojista + Não é possível colocar cartões de visitas no Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - A profundidade das pastas aninhadas excede 3 + <string name="TooltipOutboxDragActive"> + Não é possível mover uma listagem publicada </string> - <string name="TooltipOutboxTooManyFolders"> - A contagem de subpastas na pasta de nível superior excede 20 + <string name="TooltipOutboxCannotMoveRoot"> + Não é possível mover a pasta raiz das listagens do Marketplace </string> - <string name="TooltipOutboxTooManyObjects"> - A contagem de itens na pasta de nível superior excede 200 + <string name="TooltipOutboxMixedStock"> + Todos os itens em uma pasta de estoque têm o mesmo tipo e permissão </string> <string name="TooltipDragOntoOwnChild"> Não é possível mover uma pasta para seu filho @@ -1006,9 +1027,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="AgentNameSubst"> (Você) </string> - <string name="JoinAnExperience"> - Participar de uma experiência - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Suprimir alertas ao gerenciar listas de acesso ao terreno </string> @@ -1075,6 +1094,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="bitmap_image_files"> Imagens Bitmap </string> + <string name="png_image_files"> + Imagens PNG + </string> + <string name="save_texture_image_files"> + Imagens targa ou PNG + </string> <string name="avi_movie_file"> Arquivo de vídeo AVI </string> @@ -1324,6 +1349,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="FavoritesNoMatchingItems"> Arraste um marco para adicioná-lo aos seus favoritos. </string> + <string name="MarketplaceNoMatchingItems"> + Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente. + </string> <string name="InventoryNoTexture"> Você não possui uma cópia desta textura no seu inventário </string> @@ -1371,29 +1399,95 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="InventoryOutboxError"> A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros. </string> + <string name="InventoryMarketplaceError"> + Esse recurso está em beta. Inscreva-se neste [http://goo.gl/forms/FCQ7UXkakz formulário do Google] se você deseja participar. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Sua pasta Listagens do Marketplace está vazia. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Arraste pastas para esta área para listá-las para venda no [Marketplace [MARKETPLACE_DASHBOARD_URL]]. + </string> + <string name="Marketplace Validation Warning Stock"> + a pasta de estoque deve estar em uma pasta de versões + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Erro: todos os itens em uma pasta de estoque devem ser de cópia proibida e todos do mesmo tipo + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Erro: a pasta de estoque não pode ter subpastas + </string> + <string name="Marketplace Validation Warning Empty"> + : Aviso: a pasta não contém itens + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Aviso: criando pasta de estoque + </string> + <string name="Marketplace Validation Warning Create Version"> + : Aviso: criando pasta de versões + </string> + <string name="Marketplace Validation Warning Move"> + : Aviso: movendo itens + </string> + <string name="Marketplace Validation Warning Delete"> + : Aviso: conteúdo da pasta transferido para pasta de estoque, removendo pasta vazia + </string> + <string name="Marketplace Validation Error Stock Item"> + : Erro: itens de cópia proibida devem estar em uma pasta de estoque + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Aviso: os itens devem estar em uma pasta de versões + </string> + <string name="Marketplace Validation Error"> + : Erro: + </string> + <string name="Marketplace Validation Warning"> + : Aviso: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Aviso: a pasta de versões deve conter pelo menos 1 item + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Aviso: a pasta de estoque deve conter pelo menos 1 item + </string> + <string name="Marketplace Validation No Error"> + Não há erros ou avisos + </string> <string name="Marketplace Error None"> Sem erros </string> + <string name="Marketplace Error Prefix"> + Erro: + </string> <string name="Marketplace Error Not Merchant"> - Erro: antes de enviar os itens para o Mercado, é necessário que você se defina como um lojista (sem custos). + antes de enviar os itens para o Marketplace, é necessário que você se defina como um lojista (sem custos). </string> - <string name="Marketplace Error Empty Folder"> - Erro: esta pasta está vazia. + <string name="Marketplace Error Not Accepted"> + Não é possível mover o item nessa pasta. </string> - <string name="Marketplace Error Unassociated Products"> - Erro: ocorreu uma falha ao enviar este item, pois sua conta de lojista tem muitos itens não associados a produtos. Para corrigir esse erro, faça o login no site do mercado e reduza a contagem de itens não associados. + <string name="Marketplace Error Unsellable Item"> + Este item não pode ser vendido no Marketplace. </string> - <string name="Marketplace Error Object Limit"> - Erro: este item contém muitos objetos. Corrija esse erro unindo os objetos em caixa para reduzir a contagem total a menos de 200. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - Erro: este item contém muitos níveis de pastas aninhadas. Reorganize-o em até 3 níveis de pastas aninhadas, no máximo. + <string name="MarketplaceLive"> + publicada </string> - <string name="Marketplace Error Unsellable Item"> - Erro: este item não pode ser vendido no mercado. + <string name="MarketplaceActive"> + ativo + </string> + <string name="MarketplaceMax"> + máx + </string> + <string name="MarketplaceStock"> + estoque </string> - <string name="Marketplace Error Internal Import"> - Erro: ocorreu um problema com este item. Tente novamente mais tarde. + <string name="MarketplaceNoStock"> + esgotado + </string> + <string name="MarketplaceUpdating"> + atualizando... </string> <string name="Open landmarks"> Marcos abertos @@ -1414,6 +1508,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Nenhum conteúdo </string> <string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (ativado)"/> <string name="Chat Message" value="Bate-papo:"/> <string name="Sound" value="Som"/> @@ -1678,6 +1773,15 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="Invalid Attachment"> Ponto de encaixe inválido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Erro: item ausente + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Erro: item base ausente + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Erro: o objeto está no look atual, mas não foi anexado + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de idade </string> @@ -1846,6 +1950,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="SaveComplete"> Salvo. </string> + <string name="UploadFailed"> + Falha ao carregar arquivo: + </string> <string name="ObjectOutOfRange"> Script (objeto fora de alcance) </string> @@ -1855,6 +1962,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="GroupsNone"> nenhum </string> + <string name="CompileNoExperiencePerm"> + Pulando script [SCRIPT] com experiência [EXPERIENCE] + </string> <string name="Group" value="(grupo)"/> <string name="Unknown"> (Desconhecido) @@ -4936,6 +5046,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Marketplace_Label"> Mercado </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> Mini Mapa </string> @@ -5023,6 +5136,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Marketplace_Tooltip"> Faça compras </string> + <string name="Command_MarketplaceListings_Tooltip"> + Venda suas criações + </string> <string name="Command_MiniMap_Tooltip"> Mostrar quem está aqui </string> @@ -5146,4 +5262,85 @@ Tente colocar o caminho do editor entre aspas. <string name="loading_chat_logs"> Carregando... </string> + <string name="experience_tools_experience"> + Experiência + </string> + <string name="ExperienceNameNull"> + (nenhuma experiência) + </string> + <string name="ExperienceNameUntitled"> + (experiência sem título) + </string> + <string name="Land-Scope"> + Dentro do terreno + </string> + <string name="Grid-Scope"> + Dentro da grade + </string> + <string name="Allowed_Experiences_Tab"> + PERMITIDO + </string> + <string name="Blocked_Experiences_Tab"> + BLOQUEADA + </string> + <string name="Contrib_Experiences_Tab"> + COLABORADOR + </string> + <string name="Admin_Experiences_Tab"> + ADMIN + </string> + <string name="Recent_Experiences_Tab"> + RECENTES + </string> + <string name="Owned_Experiences_Tab"> + PRÓPRIAS + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], máx. [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + assumir seus controles + </string> + <string name="ExperiencePermission3"> + botão animações no seu avatar + </string> + <string name="ExperiencePermission4"> + anexar ao avatar + </string> + <string name="ExperiencePermission9"> + rastrear sua câmera + </string> + <string name="ExperiencePermission10"> + controlar sua câmera + </string> + <string name="ExperiencePermission11"> + teletransportar você + </string> + <string name="ExperiencePermission12"> + aceitar automaticamente permissões de experiência + </string> + <string name="ExperiencePermissionShortUnknown"> + realizar uma operação desconhecida: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Assumir o controle + </string> + <string name="ExperiencePermissionShort3"> + Botão animações + </string> + <string name="ExperiencePermissionShort4"> + Anexar + </string> + <string name="ExperiencePermissionShort9"> + Rastrear câmera + </string> + <string name="ExperiencePermissionShort10"> + Câmera de controle + </string> + <string name="ExperiencePermissionShort11"> + Teletransportar + </string> + <string name="ExperiencePermissionShort12"> + Autorização + </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml index 40fb4caebf..9e1fd593ef 100755..100644 --- a/indra/newview/skins/default/xui/pt/teleport_strings.xml +++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml @@ -46,6 +46,9 @@ Vá para a 'Ilha Welcome Pública' para repetir o tutorial. <message name="MustGetAgeRegion"> Você deve ter 18 anos ou mais para acessar esta região. </message> + <message name="RegionTPSpecialUsageBlocked"> + Não é possível inserir a região. '[REGION_NAME]' é uma Região de Skill Gaming, portanto você deve atender certos critérios para poder entrar. Para maiores detalhes, consulte as [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/pt/xui_version.xml b/indra/newview/skins/default/xui/pt/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/pt/xui_version.xml +++ b/indra/newview/skins/default/xui/pt/xui_version.xml diff --git a/indra/newview/skins/default/xui/ru/floater_aaa.xml b/indra/newview/skins/default/xui/ru/floater_aaa.xml index aa18a4a4a3..aa18a4a4a3 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_aaa.xml +++ b/indra/newview/skins/default/xui/ru/floater_aaa.xml diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml index 9494106e96..0f75856a91 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_about.xml +++ b/indra/newview/skins/default/xui/ru/floater_about.xml @@ -1,70 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="О [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Использован компилятор [COMPILER], версия [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Вы в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», расположенном на <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(глобальные координаты [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - ЦП: [CPU] -Память: [MEMORY_MB] МБ -Версия ОС: [OS_VERSION] -Производитель графической платы: [GRAPHICS_CARD_VENDOR] -Графическая плата: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Версия графического драйвера Windows: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Версия OpenGL: [OPENGL_VERSION] -Версия libcurl: [LIBCURL_VERSION] -Версия декодера J2C: [J2C_VERSION] -Версия драйвера звука: [AUDIO_DRIVER_VERSION] -Версия Qt Webkit: [QT_WEBKIT_VERSION] -Версия голосового сервера: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (нет) - </floater.string> - <floater.string name="AboutTraffic"> - Потеряно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Ошибка при получении URL-адреса заметок о выпуске сервера. - </floater.string> <tab_container name="about_tab"> <panel label="Данные" name="support_panel"> <button label="Копировать в буфер обмена" name="copy_btn"/> </panel> <panel label="Создатели" name="credits_panel"> - <text name="linden_intro"> - Игра Second Life разработана лабораторией Lindens: - </text> - <text name="contrib_intro"> - в написании открытого кода участвовали: - </text> - <text_editor name="contrib_names"> - Псевдо-имя изменено при запуске - </text_editor> - <text name="trans_intro"> - перевод: - </text> - <text_editor name="trans_names"> - Псевдо-имя изменено при запуске - </text_editor> + <text name="linden_intro">Игра Second Life разработана лабораторией Lindens, +в написании открытого кода участвовали:</text> + <text_editor name="contrib_names">Псевдо-имя изменено при запуске</text_editor> </panel> <panel label="Лицензии" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK (C) 1992-2009 3Dconnexion APR (C) 2011 The Apache Software Foundation Collada DOM (C) 2006 Sony Computer Entertainment Inc. cURL (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -91,8 +37,7 @@ SLURL: <nolink>[SLURL]</nolink> Все права защищены. Подробные сведения см. в файле licenses.txt. - Кодирование звука для голосового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Кодирование звука для голосового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml index 12691df684..86428da3ef 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml @@ -331,22 +331,6 @@ <check_box label="Безопасно (нет повреждений)" name="check safe" tool_tip="Если отмечено, то земля считается безопасной, отключены боевые повреждения. Если не отмечено, то боевые повреждения включены."/> <check_box label="Не толкать" name="PushRestrictCheck" tool_tip="Запрещает скриптам функцию толкания. Этот параметр может оказаться полезным для предотвращения нежелательного поведения на вашей земле."/> <check_box label="Показать место в поиске (L$30/неделя)" name="ShowDirectoryCheck" tool_tip="Позволить людям видеть участок в результатах поиска"/> - <combo_box name="land category with adult"> - <combo_box.item label="Любая категория" name="item0"/> - <combo_box.item label="Место Linden" name="item1"/> - <combo_box.item label="Взрослый" name="item2"/> - <combo_box.item label="Искусство и культура" name="item3"/> - <combo_box.item label="Бизнес" name="item4"/> - <combo_box.item label="Образование" name="item5"/> - <combo_box.item label="Игры" name="item6"/> - <combo_box.item label="Места встреч" name="item7"/> - <combo_box.item label="Для новичков" name="item8"/> - <combo_box.item label="Парки и природа" name="item9"/> - <combo_box.item label="Проживание" name="item10"/> - <combo_box.item label="Покупки" name="item11"/> - <combo_box.item label="Аренда" name="item13"/> - <combo_box.item label="Другое" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Любая категория" name="item0"/> <combo_box.item label="Место Linden" name="item1"/> @@ -477,5 +461,6 @@ <button label="Удалить" label_selected="Удалить" name="remove_banned"/> </panel> </panel> + <panel label="ПРИКЛЮЧЕНИЯ" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_activeim.xml b/indra/newview/skins/default/xui/ru/floater_activeim.xml index adfa277822..adfa277822 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_activeim.xml +++ b/indra/newview/skins/default/xui/ru/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml index 711afc2717..711afc2717 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml index 8ad9d8657a..d709987147 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ Выражение лица </text> <combo_box name="emote_combo" tool_tip="Контролирует выражение лица во время анимации"> - <item label="(нет)" name="[None]" value=""/> - <item label="Ааааах" name="Aaaaah" value="Ааааах"/> - <item label="Боится" name="Afraid" value="Боится"/> - <item label="Злится" name="Angry" value="Злится"/> - <item label="Широко улыбается" name="BigSmile" value="Широко улыбается"/> - <item label="Скучает" name="Bored" value="Скучает"/> - <item label="Плачет" name="Cry" value="Плачет"/> - <item label="Презирает" name="Disdain" value="Презирает"/> - <item label="Смущается" name="Embarrassed" value="Смущается"/> - <item label="Хмурится" name="Frown" value="Хмурится"/> - <item label="Целует" name="Kiss" value="Целует"/> - <item label="Смеется" name="Laugh" value="Смеется"/> - <item label="Дразнится" name="Plllppt" value="Дразнится"/> - <item label="Не соглашается" name="Repulsed" value="Не соглашается"/> - <item label="Грустит" name="Sad" value="Грустит"/> - <item label="Не понимает" name="Shrug" value="Не понимает"/> - <item label="Улыбается" name="Smile" value="Улыбается"/> - <item label="Удивляется" name="Surprise" value="Удивляется"/> - <item label="Подмигивает" name="Wink" value="Подмигивает"/> - <item label="Беспокоится" name="Worry" value="Беспокоится"/> + <item label="(нет)" name="[None]"/> + <item label="Ааааах" name="Aaaaah"/> + <item label="Боится" name="Afraid"/> + <item label="Злится" name="Angry"/> + <item label="Широко улыбается" name="BigSmile"/> + <item label="Скучает" name="Bored"/> + <item label="Плачет" name="Cry"/> + <item label="Презирает" name="Disdain"/> + <item label="Смущается" name="Embarrassed"/> + <item label="Хмурится" name="Frown"/> + <item label="Целует" name="Kiss"/> + <item label="Смеется" name="Laugh"/> + <item label="Дразнится" name="Plllppt"/> + <item label="Не соглашается" name="Repulsed"/> + <item label="Грустит" name="Sad"/> + <item label="Не понимает" name="Shrug"/> + <item label="Улыбается" name="Smile"/> + <item label="Удивляется" name="Surprise"/> + <item label="Подмигивает" name="Wink"/> + <item label="Беспокоится" name="Worry"/> </combo_box> <text name="preview_label"> Просмотр во время </text> <combo_box name="preview_base_anim" tool_tip="Просмотр вашей анимации во время выполнения аватаром действий."> - <item label="Стояние" name="Standing" value="Стояние"/> - <item label="Ходьба" name="Walking" value="Ходьба"/> - <item label="Сидение" name="Sitting" value="Сидение"/> - <item label="Полет" name="Flying" value="Полет"/> + <item label="Стояние" name="Standing"/> + <item label="Ходьба" name="Walking"/> + <item label="Сидение" name="Sitting"/> + <item label="Полет" name="Flying"/> </combo_box> <spinner label="Вход (сек.)" name="ease_in_time" tool_tip="Количество времени (в секундах) для входа в стартовое положение"/> <spinner label="Выход (сек.)" name="ease_out_time" tool_tip="Количество времени (в секундах) для выхода из анимации"/> diff --git a/indra/newview/skins/default/xui/ru/floater_associate_listing.xml b/indra/newview/skins/default/xui/ru/floater_associate_listing.xml new file mode 100644 index 0000000000..fc9a19730b --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="СВЯЗАТЬ СПИСОК"> + <text name="message">ID списка:</text> + <line_editor name="listing_id">Введите ID</line_editor> + <button label="OK" name="OK"/> + <button label="Отмена" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_auction.xml b/indra/newview/skins/default/xui/ru/floater_auction.xml index 105c75c919..105c75c919 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_auction.xml +++ b/indra/newview/skins/default/xui/ru/floater_auction.xml diff --git a/indra/newview/skins/default/xui/ru/floater_autoreplace.xml b/indra/newview/skins/default/xui/ru/floater_autoreplace.xml index 6827931e5d..6827931e5d 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/ru/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/ru/floater_avatar.xml b/indra/newview/skins/default/xui/ru/floater_avatar.xml index b480af9345..b480af9345 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_avatar.xml +++ b/indra/newview/skins/default/xui/ru/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml index edcc35d2b9..edcc35d2b9 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml index cb39f66247..cb39f66247 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/ru/floater_beacons.xml b/indra/newview/skins/default/xui/ru/floater_beacons.xml index 38d257ff81..38d257ff81 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_beacons.xml +++ b/indra/newview/skins/default/xui/ru/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/ru/floater_build_options.xml b/indra/newview/skins/default/xui/ru/floater_build_options.xml index 9dd01dc823..9dd01dc823 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_build_options.xml +++ b/indra/newview/skins/default/xui/ru/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml index 304bf97dc1..304bf97dc1 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/ru/floater_bumps.xml b/indra/newview/skins/default/xui/ru/floater_bumps.xml index f81f728290..f81f728290 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_bumps.xml +++ b/indra/newview/skins/default/xui/ru/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/ru/floater_buy_contents.xml b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml index b1d66ae14d..b1d66ae14d 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml index 87e8bd524e..87e8bd524e 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml index ac8ad469fb..ac8ad469fb 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/ru/floater_buy_land.xml b/indra/newview/skins/default/xui/ru/floater_buy_land.xml index 907a795393..907a795393 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/ru/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/ru/floater_buy_object.xml b/indra/newview/skins/default/xui/ru/floater_buy_object.xml index d25f9eccc2..d25f9eccc2 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/ru/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/ru/floater_camera.xml b/indra/newview/skins/default/xui/ru/floater_camera.xml index 52e7c62e06..52e7c62e06 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_camera.xml +++ b/indra/newview/skins/default/xui/ru/floater_camera.xml diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml index f6b2fc81e1..f6b2fc81e1 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/ru/floater_choose_group.xml b/indra/newview/skins/default/xui/ru/floater_choose_group.xml index ab8350f539..ab8350f539 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/ru/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/ru/floater_color_picker.xml b/indra/newview/skins/default/xui/ru/floater_color_picker.xml index b7034bef0b..b7034bef0b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/ru/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/ru/floater_critical.xml b/indra/newview/skins/default/xui/ru/floater_critical.xml index bc64f3a83e..bc64f3a83e 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_critical.xml +++ b/indra/newview/skins/default/xui/ru/floater_critical.xml diff --git a/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml index 3303a4f4c1..3303a4f4c1 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml index 5ba0841564..5ba0841564 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_destinations.xml +++ b/indra/newview/skins/default/xui/ru/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/ru/floater_display_name.xml b/indra/newview/skins/default/xui/ru/floater_display_name.xml index feb8a2721f..feb8a2721f 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_display_name.xml +++ b/indra/newview/skins/default/xui/ru/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml index 61d708c567..61d708c567 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml new file mode 100644 index 0000000000..292128d295 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="ЗАДАЙТЕ ВЫСОТУ ПАРЕНИЯ"> + <slider label="Высота" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml index 354120ea72..354120ea72 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml index f6def86380..f6def86380 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/ru/floater_environment_settings.xml b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml index d752c08cbb..d752c08cbb 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/ru/floater_event.xml b/indra/newview/skins/default/xui/ru/floater_event.xml index 5c5bcc6d09..5c5bcc6d09 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_event.xml +++ b/indra/newview/skins/default/xui/ru/floater_event.xml diff --git a/indra/newview/skins/default/xui/ru/floater_experience_search.xml b/indra/newview/skins/default/xui/ru/floater_experience_search.xml new file mode 100644 index 0000000000..77e3784b68 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="ВЫБЕРИТЕ ПРИКЛЮЧЕНИЕ"/> diff --git a/indra/newview/skins/default/xui/ru/floater_experienceprofile.xml b/indra/newview/skins/default/xui/ru/floater_experienceprofile.xml new file mode 100644 index 0000000000..c72d8b59b9 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (нет) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Профиль приключения"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Изменить" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Рейтинг: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Место: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Владелец: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Группа: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="Разрешить" name="allow_btn"/> + <button label="Забыть" name="forget_btn"/> + <button label="Заблокировать" name="block_btn"/> + <text name="privileged"> + Это приключение включено для всех жителей. + </text> + <button label="Жалоба" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Название:"/> + <text name="edit_experience_desc_label" value="Описание:"/> + <button label="Группа" name="Group_btn"/> + <text name="edit_ContentRating"> + Рейтинг: + </text> + <icons_combo_box label="Умеренный" name="edit_ContentRatingText" tool_tip="При повышении рейтинга зрелости для приключения сбрасывается разрешение для всех жителей, которые разрешили приключение."> + <icons_combo_box.item label="Для взрослых" name="Adult" value="42"/> + <icons_combo_box.item label="Умеренный" name="Mature" value="21"/> + <icons_combo_box.item label="Общий" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Место: + </text> + <button label="Поставить текущее место" name="location_btn"/> + <button label="Очистить место" name="clear_btn"/> + <check_box label="Включить приключение" name="edit_enable_btn" tool_tip=""/> + <check_box label="Скрыть при поиске" name="edit_private_btn"/> + <text name="changes" value="Отображение изменений приключения во всех регионах может занять несколько минут."/> + <button label="Назад" name="cancel_btn"/> + <button label="Сохранить" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_experiences.xml b/indra/newview/skins/default/xui/ru/floater_experiences.xml new file mode 100644 index 0000000000..f6fedfccc7 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="ПРИКЛЮЧЕНИЯ"/> diff --git a/indra/newview/skins/default/xui/ru/floater_facebook.xml b/indra/newview/skins/default/xui/ru/floater_facebook.xml index 20b9e4e151..cbf32cb682 100644 --- a/indra/newview/skins/default/xui/ru/floater_facebook.xml +++ b/indra/newview/skins/default/xui/ru/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="ОПУБЛИКОВАТЬ В FACEBOOK"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="СТАТУС" name="panel_facebook_status"/> - <panel label="ФОТО" name="panel_facebook_photo"/> - <panel label="ВХОД" name="panel_facebook_place"/> - <panel label="ДРУЗЬЯ" name="panel_facebook_friends"/> - <panel label="АККАУНТ" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Ошибка - </text> - <text name="connection_loading_text"> - Загрузка... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="СТАТУС" name="panel_facebook_status"/> + <panel label="ФОТО" name="panel_facebook_photo"/> + <panel label="ВХОД" name="panel_facebook_place"/> + <panel label="ДРУЗЬЯ" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Ошибка + </text> + <text name="connection_loading_text"> + Загрузка... + </text> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml index 20936b8494..20936b8494 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/ru/floater_font_test.xml b/indra/newview/skins/default/xui/ru/floater_font_test.xml index b51732d3f1..b51732d3f1 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_font_test.xml +++ b/indra/newview/skins/default/xui/ru/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/ru/floater_gesture.xml b/indra/newview/skins/default/xui/ru/floater_gesture.xml index 759d81b2c6..759d81b2c6 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_gesture.xml +++ b/indra/newview/skins/default/xui/ru/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/ru/floater_god_tools.xml b/indra/newview/skins/default/xui/ru/floater_god_tools.xml index 81329475aa..81329475aa 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ru/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml index d7da112a27..d7da112a27 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/ru/floater_help_browser.xml b/indra/newview/skins/default/xui/ru/floater_help_browser.xml index 2f560340ed..2f560340ed 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/ru/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/ru/floater_how_to.xml b/indra/newview/skins/default/xui/ru/floater_how_to.xml index 52525e5d33..52525e5d33 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_how_to.xml +++ b/indra/newview/skins/default/xui/ru/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/ru/floater_hud.xml b/indra/newview/skins/default/xui/ru/floater_hud.xml index b05113bfe0..b05113bfe0 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_hud.xml +++ b/indra/newview/skins/default/xui/ru/floater_hud.xml diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml index eba7a19cd4..eba7a19cd4 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_im_container.xml +++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml index d4ca04b88b..d4ca04b88b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_im_session.xml +++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/ru/floater_image_preview.xml b/indra/newview/skins/default/xui/ru/floater_image_preview.xml index dbc4c32b98..dbc4c32b98 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_import_collada.xml b/indra/newview/skins/default/xui/ru/floater_import_collada.xml index 122315cb26..122315cb26 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/ru/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml index 3f61421d0c..3f61421d0c 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/ru/floater_inspect.xml b/indra/newview/skins/default/xui/ru/floater_inspect.xml index f7bb981575..f7bb981575 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_inspect.xml +++ b/indra/newview/skins/default/xui/ru/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml index 9021b71fe2..c988825756 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="СВОЙСТВА ПРЕДМЕТА"> - <floater.string name="unknown"> - (неизвестно) - </floater.string> - <floater.string name="public"> - (публичное) - </floater.string> - <floater.string name="you_can"> - Вы можете: - </floater.string> - <floater.string name="owner_can"> - Владелец может: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Название: - </text> - <text name="LabelItemDescTitle"> - Описание: - </text> - <text name="LabelCreatorTitle"> - Создатель: - </text> + <floater.string name="unknown">(неизвестно)</floater.string> + <floater.string name="public">(публичное)</floater.string> + <floater.string name="you_can">Вы можете:</floater.string> + <floater.string name="owner_can">Владелец может:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Название:</text> + <text name="LabelItemDescTitle">Описание:</text> + <text name="LabelCreatorTitle">Создатель:</text> <button label="Профиль…" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Владелец: - </text> + <text name="LabelOwnerTitle">Владелец:</text> <button label="Профиль…" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Приобретено: - </text> - <text name="LabelAcquiredDate"> - Ср 24 Май 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Вы: - </text> + <text name="LabelAcquiredTitle">Приобретено:</text> + <text name="LabelAcquiredDate">Ср 24 Май 12:50:46 2006</text> + <text name="OwnerLabel">Вы:</text> <check_box label="Изменить" name="CheckOwnerModify"/> <check_box label="Копировать" name="CheckOwnerCopy"/> <check_box label="Перепродать" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Все: - </text> + <text name="AnyoneLabel">Все:</text> <check_box label="Копировать" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Группа: - </text> + <text name="GroupLabel">Группа:</text> <check_box label="Поделиться" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Следующий владелец: - </text> + <text name="NextOwnerLabel">Следующий владелец:</text> <check_box label="Изменить" name="CheckNextOwnerModify"/> <check_box label="Копировать" name="CheckNextOwnerCopy"/> <check_box label="Перепродать" name="CheckNextOwnerTransfer"/> <check_box label="Для продажи" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Копировать" name="Copy"/> + <combo_box.item label="Содержимое" name="Contents"/> <combo_box.item label="Оригинал" name="Original"/> </combo_box> <spinner label="Цена:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml index 02068c57b8..aa0184fe34 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Одежда" name="check_clothing"/> <check_box label="Жесты" name="check_gesture"/> <check_box label="Закладки" name="check_landmark"/> - <check_box label="Меши" name="check_mesh"/> <check_box label="Заметки" name="check_notecard"/> + <check_box label="Меши" name="check_mesh"/> <check_box label="Объекты" name="check_object"/> <check_box label="Скрипты" name="check_script"/> <check_box label="Звуки" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - ИЛИ - </text> + <radio_group name="date_search_direction"> + <radio_item label="Новее, чем" name="newer"/> + <radio_item label="Старше, чем" name="older"/> + </radio_group> <spinner label="Часов назад" name="spin_hours_ago"/> <spinner label="Дней назад" name="spin_days_ago"/> <button label="Закрыть" label_selected="Закрыть" name="Close"/> diff --git a/indra/newview/skins/default/xui/ru/floater_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_item_properties.xml new file mode 100644 index 0000000000..abd75902fd --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="СВОЙСТВА ПРЕДМЕТА"/> diff --git a/indra/newview/skins/default/xui/ru/floater_joystick.xml b/indra/newview/skins/default/xui/ru/floater_joystick.xml index 66568563da..66568563da 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_joystick.xml +++ b/indra/newview/skins/default/xui/ru/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml index c420006a03..0cc9e56ff7 100644 --- a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml @@ -31,7 +31,7 @@ Частота кадров клиента от [CLIENT_FRAME_RATE_CRITICAL] до [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> - Нормально + Нормальный </floater.string> <floater.string name="client_draw_distance_cause_msg"> Возможная причина: дальность отрисовки слишком велика @@ -61,7 +61,7 @@ Сеть теряет [NETWORK_PACKET_LOSS_WARNING]–[NETWORK_PACKET_LOSS_CRITICAL]% пакетов </floater.string> <floater.string name="network_performance_normal_msg"> - Нормально + Нормальный </floater.string> <floater.string name="network_ping_critical_ms"> 600 @@ -100,7 +100,7 @@ Частота кадров сервера [SERVER_FRAME_RATE_CRITICAL]–[SERVER_FRAME_RATE_WARNING] </floater.string> <floater.string name="server_frame_time_normal_msg"> - Нормально + Нормальный </floater.string> <floater.string name="server_physics_cause_msg"> Возможная причина: слишком много физических объектов @@ -131,21 +131,21 @@ Клиент </text> <text name="client_text"> - Нормально + Нормальный </text> <button name="network_lagmeter" tool_tip="Уровень лагов сети"/> <text name="network"> Сеть </text> <text name="network_text"> - Нормально + Нормальный </text> <button name="server_lagmeter" tool_tip="Уровень лагов сервера"/> <text name="server"> Сервер </text> <text name="server_text"> - Нормально + Нормальный </text> <button label=">>" name="minimize" tool_tip="Переключение размера"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_land_holdings.xml b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml index 17d347867d..17d347867d 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml index fb6e747592..30a196b1ca 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> СКРИПТ: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Снимите флажок для удаления текущего приключения + </floater.string> + <floater.string name="no_experiences"> + Вам не разрешено пользоваться приключениями + </floater.string> + <floater.string name="add_experiences"> + Выберите, чтобы добавить приключение + </floater.string> + <floater.string name="show_experience_profile"> + Щелкните для просмотра профиля приключения + </floater.string> + <floater.string name="loading"> + Загрузка... + </floater.string> <button label="Сброс" label_selected="Сброс" name="Reset"/> <check_box initial_value="true" label="Выполняется" name="running"/> <check_box initial_value="true" label="Моно" name="mono"/> + <check_box label="Использовать приключение:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml index 95a3b8b2a0..95a3b8b2a0 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/ru/floater_map.xml b/indra/newview/skins/default/xui/ru/floater_map.xml index 59ceb0a773..59ceb0a773 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_map.xml +++ b/indra/newview/skins/default/xui/ru/floater_map.xml diff --git a/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml new file mode 100644 index 0000000000..b231997307 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="СПИСКИ ТОВАРОВ В ТОРГОВОМ ЦЕНТРЕ"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Загрузка...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml new file mode 100644 index 0000000000..6b293014bc --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Проверить списки товаров в торговом центре"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_media_browser.xml b/indra/newview/skins/default/xui/ru/floater_media_browser.xml index d1fc105046..d1fc105046 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/ru/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/ru/floater_media_settings.xml b/indra/newview/skins/default/xui/ru/floater_media_settings.xml index 1515cbb3b8..1515cbb3b8 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/ru/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml index 7aa5c27cde..7aa5c27cde 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml index 332fa3b82f..332fa3b82f 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml index 0c6d41b4ef..0c6d41b4ef 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_moveview.xml b/indra/newview/skins/default/xui/ru/floater_moveview.xml index cb1fda1a1f..cb1fda1a1f 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_moveview.xml +++ b/indra/newview/skins/default/xui/ru/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_mute_object.xml b/indra/newview/skins/default/xui/ru/floater_mute_object.xml index 44177acb53..44177acb53 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/ru/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml index b90d80f3fd..b90d80f3fd 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml index 534d2a5774..534d2a5774 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/floater_notification.xml b/indra/newview/skins/default/xui/ru/floater_notification.xml index c3e299202c..c3e299202c 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_notification.xml +++ b/indra/newview/skins/default/xui/ru/floater_notification.xml diff --git a/indra/newview/skins/default/xui/ru/floater_notifications_console.xml b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml index bd836590e1..bd836590e1 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/ru/floater_object_weights.xml b/indra/newview/skins/default/xui/ru/floater_object_weights.xml index 41e0118732..41e0118732 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/ru/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/ru/floater_openobject.xml b/indra/newview/skins/default/xui/ru/floater_openobject.xml index 5da308eecb..a4b6e2af11 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ru/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Копировать в инвентарь" label_selected="Копировать в инвентарь" name="copy_to_inventory_button"/> - <button label="Копировать и надеть" label_selected="Копировать и надеть" name="copy_and_wear_button"/> + <text name="border_note"> + Копировать в инвентарь и надеть + </text> + <button label="Добавить в костюм" label_selected="Добавить в костюм" name="copy_and_wear_button"/> + <button label="Заменить костюм" label_selected="Заменить костюм" name="copy_and_replace_button"/> + <button label="Только копировать в инвентарь" label_selected="Только копировать в инвентарь" name="copy_to_inventory_button"/> + <button label="Отмена" label_selected="Отмена" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml index 301206e473..301206e473 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml index 5e50a75b85..5e50a75b85 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml index ce7ffc3d20..ce7ffc3d20 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml index fa72df04fd..fa72df04fd 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml index db100fa415..db100fa415 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml index 1471a7e133..0a269b9e00 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_pay.xml +++ b/indra/newview/skins/default/xui/ru/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Заплатить группе - </string> - <string name="payee_resident"> - Заплатить жителю - </string> - <text name="payee_name"> - Слишком длинное тестовое имя для проверки обрезания - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Или введите количество: - </text> - <button label="Заплатить" label_selected="Заплатить" name="pay btn"/> - <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + <string name="payee_group">Заплатить группе</string> + <string name="payee_resident">Заплатить жителю</string> + <text name="paying_text">Вы платите:</text> + <text name="payee_name">Слишком длинное тестовое имя для проверки обрезания</text> + <panel label="Поиск" name="PatternsPanel"> + <button label="Оплатить L$ 1" label_selected="Оплатить L$ 1" name="fastpay 1"/> + <button label="Оплатить L$ 5" label_selected="Оплатить L$ 5" name="fastpay 5"/> + <button label="Оплатить L$ 10" label_selected="Оплатить L$ 10" name="fastpay 10"/> + <button label="Оплатить L$ 20" label_selected="Оплатить L$ 20" name="fastpay 20"/> + </panel> + <panel label="Поиск" name="InputPanel"> + <text name="amount text">Другая сумма:</text> + <button label="Оплатить" label_selected="Оплатить" name="pay btn"/> + <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_pay_object.xml b/indra/newview/skins/default/xui/ru/floater_pay_object.xml index 7d2da44ac1..9a7b233ca2 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/ru/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Заплатить группе - </string> - <string name="payee_resident"> - Заплатить жителю - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - Через объект: - </text> + <string name="payee_group">Заплатить группе</string> + <string name="payee_resident">Заплатить жителю</string> + <text name="paying_text">Вы платите:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">Через объект:</text> <icon name="icon_object" tool_tip="Объекты"/> - <text name="object_name_text"> - Мой офигенный объект с неэпически длинным названием - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Или введите количество: - </text> - <button label="Заплатить" label_selected="Заплатить" name="pay btn"/> - <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + <text name="object_name_text">Мой офигенный объект с неэпически длинным названием</text> + <panel label="Поиск" name="PatternsPanel"> + <button label="Оплатить L$ 1" label_selected="Оплатить L$ 1" name="fastpay 1"/> + <button label="Оплатить L$ 5" label_selected="Оплатить L$ 5" name="fastpay 5"/> + <button label="Оплатить L$ 10" label_selected="Оплатить L$ 10" name="fastpay 10"/> + <button label="Оплатить L$ 20" label_selected="Оплатить L$ 20" name="fastpay 20"/> + </panel> + <panel label="Поиск" name="InputPanel"> + <text name="amount text">Другая сумма:</text> + <button label="Оплатить" label_selected="Оплатить" name="pay btn"/> + <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_people.xml b/indra/newview/skins/default/xui/ru/floater_people.xml index 7abc34986a..7abc34986a 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_people.xml +++ b/indra/newview/skins/default/xui/ru/floater_people.xml diff --git a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml index 626f3c9321..626f3c9321 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/ru/floater_picks.xml b/indra/newview/skins/default/xui/ru/floater_picks.xml index e0ae8d6f03..e0ae8d6f03 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_picks.xml +++ b/indra/newview/skins/default/xui/ru/floater_picks.xml diff --git a/indra/newview/skins/default/xui/ru/floater_places.xml b/indra/newview/skins/default/xui/ru/floater_places.xml index 2a22a855ef..2a22a855ef 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_places.xml +++ b/indra/newview/skins/default/xui/ru/floater_places.xml diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml index ae97670548..ae97670548 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_post_process.xml +++ b/indra/newview/skins/default/xui/ru/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml index fc244b9d8b..fc244b9d8b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml index 13cff2bcbe..13cff2bcbe 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml index 22c6bc5901..22c6bc5901 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml index fde2cea00e..fde2cea00e 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml index 2f39d4a4a4..2f39d4a4a4 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preview_sound.xml b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml index 691b2f3e82..691b2f3e82 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/ru/floater_preview_texture.xml b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml index c9cb87282a..c9cb87282a 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml index fd513c8cdb..fd513c8cdb 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/ru/floater_publish_classified.xml b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml index b9e33d6e22..b9e33d6e22 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml index d413a0bdcc..d413a0bdcc 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/ru/floater_region_info.xml b/indra/newview/skins/default/xui/ru/floater_region_info.xml index 011b58e385..011b58e385 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_region_info.xml +++ b/indra/newview/skins/default/xui/ru/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml index abbdeca180..67d847aa6b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml @@ -67,7 +67,7 @@ <combo_box.item label="Земля > Посягательство > Объекты или текстуры" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Земля > Посягательство > Частицы" name="Land__Encroachment__Particles"/> <combo_box.item label="Земля > Посягательство > Деревья/растения" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Пари или азартные игры" name="Wagering_gambling"/> + <combo_box.item label="Нарушение политики игр" name="Wagering_gambling"/> <combo_box.item label="Другое" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug.xml b/indra/newview/skins/default/xui/ru/floater_script_debug.xml index b91fc4e4ff..b91fc4e4ff 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/ru/floater_script_limits.xml b/indra/newview/skins/default/xui/ru/floater_script_limits.xml index 7805eac03b..7805eac03b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/ru/floater_script_preview.xml b/indra/newview/skins/default/xui/ru/floater_script_preview.xml index 78cefb7aa7..78cefb7aa7 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_script_queue.xml b/indra/newview/skins/default/xui/ru/floater_script_queue.xml index 4f2e389b19..4f2e389b19 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/ru/floater_script_search.xml b/indra/newview/skins/default/xui/ru/floater_script_search.xml index fc040f6593..fc040f6593 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_script_search.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/ru/floater_search.xml b/indra/newview/skins/default/xui/ru/floater_search.xml index 405a6598ac..405a6598ac 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_search.xml +++ b/indra/newview/skins/default/xui/ru/floater_search.xml diff --git a/indra/newview/skins/default/xui/ru/floater_select_key.xml b/indra/newview/skins/default/xui/ru/floater_select_key.xml index 99c2b9a2c4..99c2b9a2c4 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_select_key.xml +++ b/indra/newview/skins/default/xui/ru/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/ru/floater_sell_land.xml b/indra/newview/skins/default/xui/ru/floater_sell_land.xml index e15f761101..e15f761101 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ru/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml index db78d11e90..db78d11e90 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/ru/floater_snapshot.xml b/indra/newview/skins/default/xui/ru/floater_snapshot.xml index 8933f94c0b..97de279b8f 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ru/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Не удалось сохранить на компьютере. </string> - <button name="advanced_options_btn" tool_tip="Дополнительные параметры"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] пикс. - </text> - <text name="file_size_label"> - [SIZE] КБ - </text> + <button label="ОБНОВИТЬ" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ - </text> <text name="layer_type_label"> Захват: </text> @@ -68,4 +59,10 @@ <combo_box.item label="Без фильтра" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] (ширина) x [HEIGHT] (высота) пикс. + </text> + <text name="file_size_label"> + [SIZE] КБ + </text> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml index fc8de858cd..fc8de858cd 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/ru/floater_sound_preview.xml b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml index 6fdb12b76b..6fdb12b76b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/ru/floater_spellcheck.xml b/indra/newview/skins/default/xui/ru/floater_spellcheck.xml index 691b4a89c3..691b4a89c3 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/ru/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml index a01866db73..a01866db73 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml index 10e9f5a7f4..10e9f5a7f4 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_stats.xml +++ b/indra/newview/skins/default/xui/ru/floater_stats.xml diff --git a/indra/newview/skins/default/xui/ru/floater_sys_well.xml b/indra/newview/skins/default/xui/ru/floater_sys_well.xml index b6975ac9ab..b6975ac9ab 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/ru/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/ru/floater_telehub.xml b/indra/newview/skins/default/xui/ru/floater_telehub.xml index 799fd57b5b..799fd57b5b 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ru/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml index d0bd86160e..d0bd86160e 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml index c9e117362f..c9e117362f 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml index 628e6c5c87..628e6c5c87 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml index a67745534c..a67745534c 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_tools.xml +++ b/indra/newview/skins/default/xui/ru/floater_tools.xml diff --git a/indra/newview/skins/default/xui/ru/floater_top_objects.xml b/indra/newview/skins/default/xui/ru/floater_top_objects.xml index c7ece5c9c9..b045c5bff3 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/ru/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Не найдено. </floater.string> + <floater.string name="URLs"> + URL-адреса + </floater.string> + <floater.string name="memory"> + Память (КБ) + </floater.string> <text name="title_text"> Загрузка... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Владелец" name="owner"/> <scroll_list.columns label="Место" name="location"/> <scroll_list.columns label="Участок" name="parcel"/> - <scroll_list.columns label="Время" name="time"/> + <scroll_list.columns label="Дата" name="time"/> <scroll_list.columns label="URL-адреса" name="URLs"/> <scroll_list.columns label="Память (КБ)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml index bd72f6b308..bd72f6b308 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_tos.xml +++ b/indra/newview/skins/default/xui/ru/floater_tos.xml diff --git a/indra/newview/skins/default/xui/ru/floater_toybox.xml b/indra/newview/skins/default/xui/ru/floater_toybox.xml index a4754ad7ab..a4754ad7ab 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_toybox.xml +++ b/indra/newview/skins/default/xui/ru/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/ru/floater_translation_settings.xml b/indra/newview/skins/default/xui/ru/floater_translation_settings.xml index ad280a50dd..ad280a50dd 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/ru/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/ru/floater_twitter.xml b/indra/newview/skins/default/xui/ru/floater_twitter.xml index 748092ff1f..3b9493ce98 100644 --- a/indra/newview/skins/default/xui/ru/floater_twitter.xml +++ b/indra/newview/skins/default/xui/ru/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="НАПИСАТЬ" name="panel_twitter_photo"/> - <panel label="АККАУНТ" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Ошибка - </text> - <text name="connection_loading_text"> - Загрузка... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="НАПИСАТЬ" name="panel_twitter_photo"/> + <panel label="АККАУНТ" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Ошибка + </text> + <text name="connection_loading_text"> + Загрузка... + </text> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_url_entry.xml b/indra/newview/skins/default/xui/ru/floater_url_entry.xml index 59f8dd0c31..59f8dd0c31 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/ru/floater_url_entry.xml diff --git a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml index 2b23086062..2b23086062 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml index d3cef042a3..d3cef042a3 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/ru/floater_web_content.xml b/indra/newview/skins/default/xui/ru/floater_web_content.xml index 403ab0ef5d..403ab0ef5d 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_web_content.xml +++ b/indra/newview/skins/default/xui/ru/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml index 811a2756fa..811a2756fa 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/ru/floater_window_size.xml b/indra/newview/skins/default/xui/ru/floater_window_size.xml index fbff6a72b2..fbff6a72b2 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_window_size.xml +++ b/indra/newview/skins/default/xui/ru/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/ru/floater_world_map.xml b/indra/newview/skins/default/xui/ru/floater_world_map.xml index 7d2acfd9a0..7d2acfd9a0 100755..100644 --- a/indra/newview/skins/default/xui/ru/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ru/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/ru/inspect_avatar.xml b/indra/newview/skins/default/xui/ru/inspect_avatar.xml index e38ae967cc..e38ae967cc 100755..100644 --- a/indra/newview/skins/default/xui/ru/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ru/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/ru/inspect_group.xml b/indra/newview/skins/default/xui/ru/inspect_group.xml index ca600b0a1f..ca600b0a1f 100755..100644 --- a/indra/newview/skins/default/xui/ru/inspect_group.xml +++ b/indra/newview/skins/default/xui/ru/inspect_group.xml diff --git a/indra/newview/skins/default/xui/ru/inspect_object.xml b/indra/newview/skins/default/xui/ru/inspect_object.xml index 1a43357cd3..1a43357cd3 100755..100644 --- a/indra/newview/skins/default/xui/ru/inspect_object.xml +++ b/indra/newview/skins/default/xui/ru/inspect_object.xml diff --git a/indra/newview/skins/default/xui/ru/inspect_remote_object.xml b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml index eec4817f02..eec4817f02 100755..100644 --- a/indra/newview/skins/default/xui/ru/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml index 786e571527..786e571527 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml index 76acb32a64..76acb32a64 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml index 2b1291a8d5..033d36484b 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Мой внешний вид" name="Change Outfit"/> <menu_item_call label="Изменить костюм" name="Edit Outfit"/> <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> + <menu_item_call label="Высота парения" name="Hover Height"/> <menu_item_call label="Мои друзья" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml index 049001e8c3..049001e8c3 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml index dfe3c2e701..dfe3c2e701 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml index e09117226c..8feaa3b99a 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Мой внешний вид" name="Chenge Outfit"/> <menu_item_call label="Изменить костюм" name="Edit Outfit"/> <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> + <menu_item_call label="Высота парения" name="Hover Height"/> <menu_item_call label="Мои друзья" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml index 72d1bc52b5..72d1bc52b5 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml index ee0a0c70ed..ee0a0c70ed 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml index bbdf4fd0d4..bbdf4fd0d4 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml index b7a32dfd75..b7a32dfd75 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_edit.xml b/indra/newview/skins/default/xui/ru/menu_edit.xml index 0dddea9c04..0dddea9c04 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_edit.xml +++ b/indra/newview/skins/default/xui/ru/menu_edit.xml diff --git a/indra/newview/skins/default/xui/ru/menu_favorites.xml b/indra/newview/skins/default/xui/ru/menu_favorites.xml index 074be06ba9..074be06ba9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_favorites.xml +++ b/indra/newview/skins/default/xui/ru/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml index d0b68cefbd..d0b68cefbd 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_group_plus.xml b/indra/newview/skins/default/xui/ru/menu_group_plus.xml index edd012b964..edd012b964 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/ru/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml index 34e5f4c0e4..34e5f4c0e4 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml index 8b60a585ab..8b60a585ab 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml index 766b3847a7..766b3847a7 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml index a33f6d5be8..a33f6d5be8 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml index 957609a7a3..957609a7a3 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml index 30953e830b..30953e830b 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml index 901bb615e0..901bb615e0 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml index 95d162d7fe..95d162d7fe 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml index 308549c254..b8cbef8246 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Создать список" name="Marketplace Create Listing"/> + <menu_item_call label="Связать список" name="Marketplace Associate Listing"/> + <menu_item_call label="Получить (обновить) список" name="Marketplace Get Listing"/> + <menu_item_call label="Проверка на ошибки" name="Marketplace Check Listing"/> + <menu_item_call label="Изменить список" name="Marketplace Edit Listing"/> + <menu_item_call label="Опубликовать" name="Marketplace List"/> + <menu_item_call label="Отменить публикацию" name="Marketplace Unlist"/> + <menu_item_call label="Активировать" name="Marketplace Activate"/> + <menu_item_call label="Деактивировать" name="Marketplace Deactivate"/> <menu_item_call label="Поделиться" name="Share"/> <menu_item_call label="Купить" name="Task Buy"/> <menu_item_call label="Открыть" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Добавить" name="Wearable Add"/> <menu_item_call label="Снять" name="Take Off"/> <menu_item_call label="Копировать в «Торговые исходящие»" name="Merchant Copy"/> - <menu_item_call label="Отправить в торговый центр" name="Marketplace Send"/> + <menu_item_call label="Копировать в списки товаров торгового центра" name="Marketplace Copy"/> + <menu_item_call label="Переместить в списки товаров торгового центра" name="Marketplace Move"/> <menu_item_call label="- нет действий -" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_add.xml b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml index 9a240c653e..9a240c653e 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml index 9fc0b6d44e..967374f8f5 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="Сортировать по времени" name="sort_by_recent"/> <menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/> <menu_item_check label="Показывать системные папки вверху" name="sort_system_folders_to_top"/> - <menu_item_call label="Показать фильтры" name="show_filters"/> + <menu_item_call label="Показать фильтры..." name="show_filters"/> <menu_item_call label="Сбросить фильтры" name="reset_filters"/> <menu_item_call label="Закрыть все папки" name="close_folders"/> <menu_item_call label="Очистить бюро находок" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/ru/menu_land.xml b/indra/newview/skins/default/xui/ru/menu_land.xml index 5aa4e6ccd2..5aa4e6ccd2 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_land.xml +++ b/indra/newview/skins/default/xui/ru/menu_land.xml diff --git a/indra/newview/skins/default/xui/ru/menu_landmark.xml b/indra/newview/skins/default/xui/ru/menu_landmark.xml index 24b60f9d86..24b60f9d86 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ru/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml index 885f6195b6..885f6195b6 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_login.xml +++ b/indra/newview/skins/default/xui/ru/menu_login.xml diff --git a/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml new file mode 100644 index 0000000000..b299c8202f --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Сортировать по объему запасов (от малых к большим)" name="sort_by_stock_amount"/> + <menu_item_check label="Показывать только папки списков" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml index d7485b02af..d7485b02af 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/ru/menu_mini_map.xml b/indra/newview/skins/default/xui/ru/menu_mini_map.xml index 6b3db11609..6b3db11609 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ru/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml index 5ae5e7dfbc..5ae5e7dfbc 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/ru/menu_navbar.xml b/indra/newview/skins/default/xui/ru/menu_navbar.xml index 2dd0c0df36..2dd0c0df36 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ru/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml index 4b5346d083..4b5346d083 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml index 4d067e232a..4d067e232a 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml index 5f31941b2b..5f31941b2b 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_object.xml +++ b/indra/newview/skins/default/xui/ru/menu_object.xml diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml index 0c50abcfbd..0c50abcfbd 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml index d379a17216..d379a17216 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml index 46404195b9..46404195b9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml diff --git a/indra/newview/skins/default/xui/ru/menu_participant_list.xml b/indra/newview/skins/default/xui/ru/menu_participant_list.xml index 932ad5bacf..932ad5bacf 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ru/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml index 0fa252aa99..0fa252aa99 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml index 78d73c9d1e..78d73c9d1e 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml index 0358068db9..0358068db9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml index d05b7e7d01..d05b7e7d01 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml index 88eb56c9f5..88eb56c9f5 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml index 4589815f6b..4589815f6b 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml index 2ac83ffe52..2ac83ffe52 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/ru/menu_picks.xml b/indra/newview/skins/default/xui/ru/menu_picks.xml index 839c7411a6..839c7411a6 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_picks.xml +++ b/indra/newview/skins/default/xui/ru/menu_picks.xml diff --git a/indra/newview/skins/default/xui/ru/menu_picks_plus.xml b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml index 1bc4078179..1bc4078179 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/ru/menu_place.xml b/indra/newview/skins/default/xui/ru/menu_place.xml index ee8878c131..ee8878c131 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_place.xml +++ b/indra/newview/skins/default/xui/ru/menu_place.xml diff --git a/indra/newview/skins/default/xui/ru/menu_place_add_button.xml b/indra/newview/skins/default/xui/ru/menu_place_add_button.xml index b1a38fb9eb..b1a38fb9eb 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/ru/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml index 25df8c5d19..25df8c5d19 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml index b1ebd4af83..b1ebd4af83 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml index 1865fead7b..1865fead7b 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/ru/menu_save_outfit.xml b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml index 88947e1433..88947e1433 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml index 6cacff3870..6cacff3870 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/ru/menu_slurl.xml b/indra/newview/skins/default/xui/ru/menu_slurl.xml index f02549055c..f02549055c 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ru/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml index 332f2784b9..332f2784b9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml index f495d27bf3..f495d27bf3 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml index 9b2434a310..9b2434a310 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/ru/menu_text_editor.xml b/indra/newview/skins/default/xui/ru/menu_text_editor.xml index 0c928308a1..0c928308a1 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/ru/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/ru/menu_toolbars.xml b/indra/newview/skins/default/xui/ru/menu_toolbars.xml index aa05dbc390..aa05dbc390 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/ru/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/ru/menu_topinfobar.xml b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml index 76cadbe5a4..76cadbe5a4 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml index fcd1fe310d..fcd1fe310d 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_experience.xml b/indra/newview/skins/default/xui/ru/menu_url_experience.xml new file mode 100644 index 0000000000..59af594c10 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_url_group.xml b/indra/newview/skins/default/xui/ru/menu_url_group.xml index f25e2a7eb8..f25e2a7eb8 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_http.xml b/indra/newview/skins/default/xui/ru/menu_url_http.xml index 781211b16f..781211b16f 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_inventory.xml b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml index 6127bf9868..6127bf9868 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_map.xml b/indra/newview/skins/default/xui/ru/menu_url_map.xml index bbf64f20e9..bbf64f20e9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_map.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml index 4f5361b2e3..4f5361b2e3 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_parcel.xml b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml index 84a679703a..84a679703a 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_slapp.xml b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml index 3d582ea2c5..3d582ea2c5 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_slurl.xml b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml index cbceafea21..cbceafea21 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/ru/menu_url_teleport.xml b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml index 2ecde09383..2ecde09383 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index 266a1fb877..d22ca845f9 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Новое окно инвентаря" name="NewInventoryWindow"/> <menu_item_call label="Места..." name="Places"/> <menu_item_call label="Подборка..." name="Picks"/> + <menu_item_call label="Приключения..." name="Experiences"/> <menu_item_call label="Управление камерой..." name="Camera Controls"/> <menu label="Движение" name="Movement"> <menu_item_call label="Сесть" name="Sit Down Here"/> <menu_item_check label="Полет" name="Fly"/> <menu_item_check label="Всегда бегать" name="Always Run"/> <menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/> - <menu_item_call label="Ходьба / бег / полет..." name="Walk / run / fly"/> + <menu_item_call label="Ходьба / бег / полет..." name="WalkRunFly"/> </menu> <menu label="Статус" name="Status"> <menu_item_check label="Нет на месте" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="Купить L$..." name="Buy and Sell L$"/> <menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/> + <menu_item_call label="Списки товаров торгового центра..." name="MarketplaceListings"/> <menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/> <menu_item_call label="Настройки..." name="Preferences"/> <menu_item_call label="Кнопки панели инструментов..." name="Toolbars"/> @@ -46,7 +48,7 @@ <menu_item_check label="Друзья" name="My Friends"/> <menu_item_check label="Группы" name="My Groups"/> <menu_item_check label="Люди неподалеку" name="Active Speakers"/> - <menu_item_call label="Черный список" name="Block List"/> + <menu_item_check label="Черный список" name="Block List"/> <menu_item_check label="Не беспокоить" name="Do Not Disturb"/> </menu> <menu label="Мир" name="World"> @@ -60,7 +62,7 @@ <menu_item_call label="Снимок" name="Take Snapshot"/> <menu_item_call label="Профиль места" name="Place Profile"/> <menu_item_call label="О земле" name="About Land"/> - <menu_item_call label="Регион/землевладение" name="Region/Estate"/> + <menu_item_call label="Регион/землевладение" name="RegionEstate"/> <menu_item_call label="Мои владения..." name="My Land"/> <menu_item_call label="Купить эту землю" name="Buy Land"/> <menu label="Показать" name="LandShow"> @@ -247,6 +249,7 @@ <menu_item_check label="Консоль текстур" name="Texture Console"/> <menu_item_check label="Консоль отладки" name="Debug Console"/> <menu_item_call label="Консоль уведомлений" name="Notifications"/> + <menu_item_check label="Консоль отладки региона" name="Region Debug Console"/> <menu_item_check label="Оперативные таймеры" name="Fast Timers"/> <menu_item_check label="Память" name="Memory"/> <menu_item_check label="Статистика по сцене" name="Scene Statistics"/> @@ -350,7 +353,7 @@ <menu_item_check label="Прикрепить объекты для интерполяции" name="Ping Interpolate Object Positions"/> <menu_item_call label="Опустить пакет" name="Drop a Packet"/> </menu> - <menu_item_call label="Дамп камеры со скриптами" name="Dump Scripted Camera"/> + <menu_item_call label="Дамп камеры со скриптами" name="Dump Scripted Camera"/> <menu label="Диктофон" name="Recorder"> <menu_item_call label="Начать воспроизведение" name="Start Playback"/> <menu_item_call label="Остановить воспроизведение" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml index 2832e17b7d..2832e17b7d 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml index c2351fbfff..c2351fbfff 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml index f178b39c77..f178b39c77 100755..100644 --- a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/ru/mime_types.xml b/indra/newview/skins/default/xui/ru/mime_types.xml index 7ed23b5d53..9b120f2f40 100755..100644 --- a/indra/newview/skins/default/xui/ru/mime_types.xml +++ b/indra/newview/skins/default/xui/ru/mime_types.xml @@ -44,6 +44,14 @@ Воспроизвести звук для этого места </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Нет контента + </label> + <tooltip name="none_tooltip"> + Здесь нет медиа + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Поток RealTime diff --git a/indra/newview/skins/default/xui/ru/mime_types_linux.xml b/indra/newview/skins/default/xui/ru/mime_types_linux.xml index a42b0bb9cc..6feb64679c 100755..100644 --- a/indra/newview/skins/default/xui/ru/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ru/mime_types_linux.xml @@ -44,6 +44,14 @@ Воспроизвести звук для этого места </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Нет контента + </label> + <tooltip name="none_tooltip"> + Здесь нет медиа + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Поток RealTime diff --git a/indra/newview/skins/default/xui/ru/mime_types_mac.xml b/indra/newview/skins/default/xui/ru/mime_types_mac.xml index 7ed23b5d53..9b120f2f40 100755..100644 --- a/indra/newview/skins/default/xui/ru/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ru/mime_types_mac.xml @@ -44,6 +44,14 @@ Воспроизвести звук для этого места </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Нет контента + </label> + <tooltip name="none_tooltip"> + Здесь нет медиа + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Поток RealTime diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index c312bcbef4..70b9a25590 100755..100644 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -73,6 +73,10 @@ [MESSAGE] <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Произошла ошибка при обновлении [APP_NAME]. [http://get.secondlife.com Загрузите последнюю версию] клиента. <usetemplate name="okbutton" yestext="OK"/> @@ -125,6 +129,88 @@ Не удалось инициализировать торговый центр из-за ошибки системы или сети. Повторите попытку позже. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Не удалось скопировать или переместить в папку запасов, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Не удалось скопировать или переместить в списки товаров торгового центра, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Не удалось выполнить транзакцию с торговым центром, ошибка: + + Причина: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Не удалось опубликовать этот продукт или активировать папку версии. Обычно это происходит из-за отсутствия информации в форме описания списка, но также может быть связано с ошибками в структуре папки. Отредактируйте список или проверьте папку списка на отсутствие ошибок. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Не удалось опубликовать в торговом центре, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Не удалось активировать эту папку версии, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Это действие вызовет изменение активного содержимого данного списка. Продолжить? + <usetemplate ignoretext="Подтверждать смену активного списка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + При перетаскивании в окно списков товаров торгового центра предметы перемещаются со своего исходного места, а не копируются. Продолжить? + <usetemplate ignoretext="Подтверждать перемещение предмета из инвентаря в торговый центр" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + В результате перемещения или удаления папки списка будет удален ваш список товаров в торговом центре. Если требуется сохранить список в торговом центре, переместите или удалите содержимое папки версии, которое необходимо изменить. Продолжить? + <usetemplate ignoretext="Подтверждать перемещение или удаление списка из торгового центра" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + У вас нет прав на копирование этих предметов в торговый центр. Переместите их или оставьте здесь. + <usetemplate canceltext="Отмена" ignoretext="Подтверждать попытку копирования некопируемых предметов в торговый центр" name="yesnocancelbuttons" notext="Не перемещать предмет(ы)" yestext="Переместить предмет(ы)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Это действие вызовет отмену публикации списка. Продолжить? + <usetemplate ignoretext="Подтверждать отмену публикации активного списка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Это действие вызовет деактивацию папки версии текущего списка. Продолжить? + <usetemplate ignoretext="Подтверждать деактивирование папки версии списка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Не удалось обновить этот список. +[[URL] Щелкните здесь], чтобы изменить его в торговом центре. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Нельзя надеть одежду или часть тела, если они находятся в папке списков товаров торгового центра. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Неверный идентификатор списка. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + В этом списке несколько папок версий или нет ни одной. Самостоятельно выберите и активируйте одну папку позже. + <usetemplate ignoretext="Предупреждать об активировании папки версии, если создан список с несколькими папками версий" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Предметы разных типов распределены по отдельным папкам запасов, поэтому папка систематизирована так, чтобы ее можно было опубликовать. + <usetemplate ignoretext="Предупреждать о разделении папки запасов перед публикацией" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Публикация вашего списка прекращена, так как папка запасов пуста. Добавьте предметы в папку запасов, чтобы опубликовать список снова. + <usetemplate ignoretext="Оповещать о неудавшейся публикации списка из-за того, что папка запасов пуста" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Ошибка при передаче текста скрипта по следующей причине: [REASON]. Повторите попытку позже. </notification> @@ -469,6 +555,10 @@ Сохранить изменения? <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/> </notification> + <notification name="DeleteNotecard"> + Удалить заметку? + <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Не удалось сохранить жест. Жест содержит слишком много этапов. @@ -575,6 +665,9 @@ <notification name="RegionNoTerraforming"> В регионе [REGION] не разрешен терраформинг. </notification> + <notification name="ParcelNoTerraforming"> + Вам не разрешено терраформировать участок [PARCEL]. + </notification> <notification name="CannotCopyWarning"> У вас нет разрешения на копирование следующих предметов: [ITEMS] @@ -1825,6 +1918,30 @@ http://secondlife.com/download. Удалить менеджера только для этого землевладения или для [ALL_ESTATES]? <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> </notification> + <notification label="Выбрать землевладение" name="EstateAllowedExperienceAdd"> + Внести в список допущенных только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> + <notification label="Выбрать землевладение" name="EstateAllowedExperienceRemove"> + Удалить из списка допущенных только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> + <notification label="Выбрать землевладение" name="EstateBlockedExperienceAdd"> + Внести в список заблокированных только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> + <notification label="Выбрать землевладение" name="EstateBlockedExperienceRemove"> + Удалить из списка заблокированных только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> + <notification label="Выбрать землевладение" name="EstateTrustedExperienceAdd"> + Внести в ключевой список только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> + <notification label="Выбрать землевладение" name="EstateTrustedExperienceRemove"> + Удалить из ключевой список только для этого землевладения или для [ALL_ESTATES]? + <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/> + </notification> <notification label="Подтвердить выбрасывание" name="EstateKickUser"> Выбросить пользователя [EVIL_USER] из этого землевладения? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> @@ -1837,6 +1954,9 @@ http://secondlife.com/download. Вы пытаетесь посетить регион, контент в котором не соответствует вашим настройкам. Попробуйте изменить настройки в меню «Я > Настройки > Общие». <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Вы пытаетесь посетить регион, контент в котором имеет рейтинг [REGIONMATURITY] и предназначен только для взрослых. <url name="url"> @@ -1899,6 +2019,10 @@ http://secondlife.com/download. При телепортации возникли технические проблемы, так как ваши настройки не синхронизированы с сервером. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Не удалось войти в регион. «[REGION_NAME]» – это регион развивающих игр, и для входа в него надо соответствовать определенным условиям. Подробнее см. на странице [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="PreferredMaturityChanged"> Вы больше не будете получать уведомлений о посещении региона с контентом рейтинга [RATING]. Настройки для контента можно изменить на будущее с помощью команд меню «Я > Настройки > Общие». <usetemplate name="okbutton" yestext="OK"/> @@ -2120,6 +2244,10 @@ http://secondlife.com/download. <ignore name="ignore" text="Установлено действие «Заплатить за объект» при построении объекта без скрипта money()"/> </form> </notification> + <notification name="PayConfirmation"> + Подтвердите оплату L$[AMOUNT] для [TARGET]. + <usetemplate ignoretext="Подтверждать перед оплатой (для сумм более L$200)" name="okcancelignore" notext="Отмена" yestext="Оплатить"/> + </notification> <notification name="OpenObjectCannotCopy"> В этом объекте нет вещей, которые вам разрешено копировать. </notification> @@ -2205,6 +2333,9 @@ http://secondlife.com/download. <button ignore="Не заменять" name="No" text="Отмена"/> </form> </notification> + <notification name="TooManyWearables"> + Нельзя носить папку, содержащую более [AMOUNT] вещей. Это ограничение можно изменить в меню «Дополнительно > Настройки отладки > WearFolderLimit. + </notification> <notification label="Предупреждение режима «Не беспокоить»" name="DoNotDisturbModePay"> Включен режим «Не беспокоить». Вы не будете получать никаких предметов, предлагаемых в обмен за этот платеж. @@ -2657,9 +2788,6 @@ http://secondlife.com/download. <notification name="NoValidCircuit"> Нет подходящего кода канала. </notification> - <notification name="NoValidTimestamp"> - Нет подходящей метки времени. - </notification> <notification name="NoPendingConnection"> Невозможно создать отложенное соединение. </notification> @@ -2814,7 +2942,7 @@ http://secondlife.com/download. [MESSAGE] -Из объекта: <nolink>[OBJECTNAME]</nolink>, владелец: [NAME]? +Из объекта: <nolink>[OBJECTNAME]</nolink>, владелец: [NAME] <form name="form"> <button name="Gotopage" text="Перейти на страницу"/> <button name="Cancel" text="Отмена"/> @@ -2840,6 +2968,72 @@ http://secondlife.com/download. <button name="Mute" text="Заблокировать"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Невозможно приобрести новое приключение: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Изменение в группе приключения игнорируется, так как владелец не принадлежит к выбранной группе. + </notification> + <notification name="UneditableExperienceProfileMessage"> + Нередактируемое поле «[field]» игнорируется при обновлении профиля приключения. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Игнорируются изменения в поле «[field]», которые может вносить только владелец приключения. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Вы не можете устанавливать для приключения рейтинг зрелости выше, чем у владельца. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Следующие условия не допускают обновление названия и (или) описания профиля приключения: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + Вы были телепортированы из региона [region_name] за удаление приключения secondlife:///app/experience/[public_id]/profile. Вам больше не разрешено пребывание в этом регионе. + <form name="form"> + <ignore name="ignore" text="Выброшен из региона за удаление приключения"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + Вам был разрешен вход в регион [region_name] путем участия в ключевом приключении secondlife:///app/experience/[public_id]/profile. При удалении этого приключения вы можете быть выброшены из региона. + <form name="form"> + <ignore name="ignore" text="Приключение разрешило вход в регион"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + У вас нет доступа к этому месту назначения. Вам может быть разрешен вход в этот регион при принятии следующего приключения: + +[EXPERIENCE_LIST] + +Могут быть доступны следующие ключевые приключения. + </notification> + <notification name="ExperienceEvent"> + Разрешен объект для события [EventType] приключением secondlife:///app/experience/[public_id]/profile. + Владелец: secondlife:///app/agent/[OwnerID]/inspect + Название объекта: [ObjectName] + Название участка: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + Разрешено присоединение для события [EventType] приключением secondlife:///app/experience/[public_id]/profile. + Владелец: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + Объект «<nolink>[OBJECTNAME]</nolink>», владелец которого – «[NAME]», требует вашего участия в приключении [GRID_WIDE]: + +[EXPERIENCE] + +После получения разрешения это сообщение больше не будет отображаться для данного приключения, пока оно не будет отозвано из профиля приключения. + +Скрипты, связанные с данным приключением, смогут выполнять следующие действия в регионах, где активно приключение: + +[QUESTIONS]Это правильно? + <form name="form"> + <button name="BlockExperience" text="Заблокировать приключение"/> + <button name="Mute" text="Заблокировать объект"/> + <button name="Yes" text="Да"/> + <button name="No" text="Нет"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Предупреждение. Объект «<nolink>[OBJECTNAME]</nolink>» требует полного доступа к вашему аккаунту для Linden-долларов. Если разрешить такой доступ, объект сможет в любое время снимать средства с вашего аккаунта или полностью опустошать его неоднократно и без предупреждения. @@ -3159,6 +3353,10 @@ http://secondlife.com/download. ( [EXISTENCE] сек. жизни ) Вы локально обновили готовую текстуру [RESOLUTION] для «[BODYREGION]» через [TIME] сек. </notification> + <notification name="CannotUploadTexture"> + Невозможно загрузить текстуру. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Просмотр этой текстуры невозможен, так как запрещено ее копирование и/или перенос. <usetemplate ignoretext="Предупреждать, если режим просмотра вживую недоступен для текстур с запрещенным копированием и/или переносом" name="okignore" yestext="OK"/> @@ -3733,9 +3931,11 @@ http://secondlife.com/download. </notification> <notification name="TeleportedByAttachment"> Вы были телепортированы прикрепленным объектом [ITEM_ID] + <usetemplate ignoretext="Телепортация: вы были телепортированы прикрепленным объектом" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Вы были телепортированы объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]» + <usetemplate ignoretext="Телепортация: вы были телепортированы объектом на участке" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Вы были телепортированы объектом «[OBJECT_NAME]», владелец – [OWNER_ID] @@ -4067,7 +4267,7 @@ http://secondlife.com/download. <usetemplate ignoretext="Невозможно переместить файлы. Восстановлен прежний путь." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ошибка при сохранении стандартных разрешений по следующей причине: [REASON]. Попробуйте задать стандартные разрешения через некоторое время. + Ошибка при сохранении стандартных разрешений на объект: [REASON]. Попробуйте задать стандартные разрешения через некоторое время. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/ru/panel_active_object_row.xml b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml index 825f9a6229..825f9a6229 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml index ae2240593d..ae2240593d 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml index 4866bb7ed6..4866bb7ed6 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml index 03c164affd..03c164affd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml index 70a1b25996..70a1b25996 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml index 20a99500b6..20a99500b6 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml index f7d31813f9..f7d31813f9 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml index bcdff112c5..bcdff112c5 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/ru/panel_chat_header.xml b/indra/newview/skins/default/xui/ru/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/ru/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml index f203ecde4b..f203ecde4b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_classified_info.xml b/indra/newview/skins/default/xui/ru/panel_classified_info.xml index c7fd0ad42f..c7fd0ad42f 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/ru/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml index cc3f7feb83..cc3f7feb83 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml index 98d4fd8b47..98d4fd8b47 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml index 9e1bc4b5c4..9e1bc4b5c4 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml index 762baa2052..762baa2052 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml index dc9d678edd..dc9d678edd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml index 7cde4099ef..7cde4099ef 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_classified.xml b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml index a2f06dbadf..a2f06dbadf 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml index 84e1204b5d..84e1204b5d 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml index 561777745e..561777745e 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_hair.xml b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml index d5e67ddf87..d5e67ddf87 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml index 2f5a437e69..2f5a437e69 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pants.xml b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml index 4970c93801..4970c93801 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_physics.xml b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml index da4ebb154d..da4ebb154d 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pick.xml b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml index 6be1448ac5..6be1448ac5 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_profile.xml b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml index e9a6a781db..e9a6a781db 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shape.xml b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml index 312ad593a1..312ad593a1 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml index d576a2cd2f..d576a2cd2f 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml index f6d7029108..f6d7029108 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skin.xml b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml index f5a5339afe..f5a5339afe 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml index 909946e577..909946e577 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_socks.xml b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml index 2827fbc028..2827fbc028 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml index 874d5f8bc4..874d5f8bc4 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml index f2f6e5e516..f2f6e5e516 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml index 6f84c6cec2..6f84c6cec2 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml index 79130a9c80..79130a9c80 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/ru/panel_experience_info.xml b/indra/newview/skins/default/xui/ru/panel_experience_info.xml new file mode 100644 index 0000000000..bd5f81506e --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Профиль приключения"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Место: + </text> + <text name="LocationTextText"> + какое-то место + </text> + <button label="Телепортация" name="teleport_btn"/> + <button label="Карта" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Магазин торгового центра: + </text> + <text name="LocationTextText"> + какое-то место + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Рейтинг: + </text> + <text name="ContentRatingText"> + Для взрослых + </text> + <text name="Owner"> + Владелец: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Изменить" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/ru/panel_experience_list_editor.xml new file mode 100644 index 0000000000..fdf3ec8188 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + загрузка… + </panel.string> + <panel.string name="panel_allowed"> + Разрешенные приключения: + </panel.string> + <panel.string name="panel_blocked"> + Заблокированные приключения: + </panel.string> + <panel.string name="panel_trusted"> + Ключевые приключения: + </panel.string> + <panel.string name="no_results"> + (пусто) + </panel.string> + <text name="text_name"> + Список приключений + </text> + <scroll_list name="experience_list"> + <columns label="Название" name="experience_name"/> + </scroll_list> + <button label="Добавить..." name="btn_add"/> + <button label="Удалить" name="btn_remove"/> + <button label="Профиль…" name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_experience_list_item.xml b/indra/newview/skins/default/xui/ru/panel_experience_list_item.xml new file mode 100644 index 0000000000..1af9915bf2 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Псевдо-имя + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_experience_log.xml b/indra/newview/skins/default/xui/ru/panel_experience_log.xml new file mode 100644 index 0000000000..043dd4db17 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Нет событий."/> + <string name="loading" value="загрузка…"/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Время" name="time"/> + <columns label="Событие" name="event"/> + <columns label="Приключение" name="experience_name"/> + <columns label="Объект" name="object_name"/> + </scroll_list> + <button label="Уведомить" name="btn_notify"/> + <button label="Профиль" name="btn_profile_xp"/> + <button label="Пожаловаться" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Уведомлять обо всех событиях дн." name="notify_all"/> + <button label="Очистить" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_experience_search.xml b/indra/newview/skins/default/xui/ru/panel_experience_search.xml new file mode 100644 index 0000000000..38d047f509 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + Текст «[TEXT]» не найден + </string> + <string name="no_results"> + Нет результатов + </string> + <string name="searching"> + Поиск... + </string> + <string name="loading"> + Загрузка... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Перейти" name="find"/> + <icons_combo_box label="Умеренный" name="maturity"> + <icons_combo_box.item label="Для взрослых" name="Adult" value="42"/> + <icons_combo_box.item label="Умеренный" name="Mature" value="21"/> + <icons_combo_box.item label="Общий" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Название" name="experience_name"/> + <columns label="Владелец" name="owner"/> + </scroll_list> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Отмена" name="cancel_btn"/> + <button label="Посмотреть профиль" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_experiences.xml b/indra/newview/skins/default/xui/ru/panel_experiences.xml new file mode 100644 index 0000000000..56b962a77f --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Загрузка приключений..."/> + <string name="no_experiences" value="Нет приключений."/> + <string name="acquire" value="Приобрести приключение"/> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_facebook_friends.xml b/indra/newview/skins/default/xui/ru/panel_facebook_friends.xml index 518452953d..746da8d523 100644 --- a/indra/newview/skins/default/xui/ru/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/ru/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Сейчас у вас нет друзей по Facebook, которые также были бы жителями Second Life. Предложите своим друзьям по Facebook присоединиться к Second Life!"/> - <string name="facebook_friends_no_connected" value="Сейчас вы не подключены к Facebook. Перейдите на вкладку «Аккаунт», чтобы подключиться и включить эту функцию."/> + <string name="facebook_friends_no_connected" value="Сейчас вы не подключены к Facebook. Перейдите на вкладку «Статус», чтобы подключиться и включить эту функцию."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="Друзья по SL"/> <accordion_tab name="tab_suggested_friends" title="Добавить этих людей как друзей по SL"/> diff --git a/indra/newview/skins/default/xui/ru/panel_facebook_photo.xml b/indra/newview/skins/default/xui/ru/panel_facebook_photo.xml index 783294be86..143a57fec7 100644 --- a/indra/newview/skins/default/xui/ru/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/ru/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> - <combo_box.item label="Текущее окно" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> - <combo_box.item label="Без фильтра" name="NoFilter"/> - </combo_box> - <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> - <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> - <text name="caption_label"> - Комментарий (не обязательно): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Опубликовать" name="post_photo_btn"/> - <button label="Отмена" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> + <combo_box.item label="Текущее окно" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> + <combo_box.item label="Без фильтра" name="NoFilter"/> + </combo_box> + <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> + <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> + <text name="caption_label"> + Комментарий (не обязательно): + </text> + <button label="Опубликовать" name="post_photo_btn"/> + <button label="Отмена" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_facebook_place.xml b/indra/newview/skins/default/xui/ru/panel_facebook_place.xml index 913d327e92..7d0917a43a 100644 --- a/indra/newview/skins/default/xui/ru/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/ru/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Напишите о том, где вы: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Опубликовать" name="post_place_btn"/> - <button label="Отмена" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Напишите о том, где вы: + </text> + <check_box initial_value="false" label="Включить вид места сверху" name="add_place_view_cb"/> + <button label="Опубликовать" name="post_place_btn"/> + <button label="Отмена" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_facebook_status.xml b/indra/newview/skins/default/xui/ru/panel_facebook_status.xml index a59f132a01..c651a8087c 100644 --- a/indra/newview/skins/default/xui/ru/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/ru/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - О чем вы думаете? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Опубликовать" name="post_status_btn"/> - <button label="Отмена" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Вы подключились к Facebook как:"/> + <string name="facebook_disconnected" value="Не подключено к Facebook"/> + <text name="account_caption_label"> + Не подключено к Facebook. + </text> + <panel name="panel_buttons"> + <button label="Подключение..." name="connect_btn"/> + <button label="Отключить" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 О публикации в Facebook] + </text> + </panel> + <text name="status_caption_label"> + О чем вы думаете? + </text> + <button label="Опубликовать" name="post_status_btn"/> + <button label="Отмена" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml b/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml index 0c93e28911..9dd68699ca 100644 --- a/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml @@ -1,40 +1,34 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> - <combo_box.item label="Текущее окно" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> - <combo_box.item label="Без фильтра" name="NoFilter"/> - </combo_box> - <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> - <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> - <text name="title_label"> - Название: - </text> - <text name="description_label"> - Описание: - </text> - <check_box initial_value="true" label="Добавить в конец описания расположение в SL" name="add_location_cb"/> - <text name="tags_label"> - Теги: - </text> - <text name="tags_help_label"> - Разделяйте теги пробелами. Теги из нескольких слов заключайте в кавычки. - </text> - <combo_box name="rating_combobox" tool_tip="Рейтинг контента Flickr"> - <combo_box.item label="Безопасный рейтинг Flickr" name="SafeRating"/> - <combo_box.item label="Умеренный рейтинг Flickr" name="ModerateRating"/> - <combo_box.item label="Ограниченный рейтинг Flickr" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Передать" name="post_photo_btn"/> - <button label="Отмена" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> + <combo_box.item label="Текущее окно" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> + <combo_box.item label="Без фильтра" name="NoFilter"/> + </combo_box> + <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> + <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> + <text name="title_label"> + Название: + </text> + <text name="description_label"> + Описание: + </text> + <check_box initial_value="true" label="Добавить в конец описания расположение в SL" name="add_location_cb"/> + <text name="tags_label"> + Теги: + </text> + <text name="tags_help_label"> + Разделяйте теги пробелами. Теги из нескольких слов заключайте в кавычки. + </text> + <combo_box name="rating_combobox" tool_tip="Рейтинг контента Flickr"> + <combo_box.item label="Безопасный рейтинг Flickr" name="SafeRating"/> + <combo_box.item label="Умеренный рейтинг Flickr" name="ModerateRating"/> + <combo_box.item label="Ограниченный рейтинг Flickr" name="RestrictedRating"/> + </combo_box> + <button label="Передать" name="post_photo_btn"/> + <button label="Отмена" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml index 2e6f3502b6..2e6f3502b6 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml index ba38dbf89e..ba38dbf89e 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml index 16aaa71268..0ec667e3b2 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Роли и участники"/> <accordion_tab name="group_notices_tab" title="Уведомления"/> <accordion_tab name="group_land_tab" title="Земля/активы"/> + <accordion_tab name="group_experiences_tab" title="Приключения"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ru/panel_group_invite.xml b/indra/newview/skins/default/xui/ru/panel_group_invite.xml index 46424c168b..46424c168b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_land_money.xml b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml index 9235aa2f69..9235aa2f69 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml index b043ffbbe2..b043ffbbe2 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_notices.xml b/indra/newview/skins/default/xui/ru/panel_group_notices.xml index 8d20c4a96b..8d20c4a96b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_notify.xml b/indra/newview/skins/default/xui/ru/panel_group_notify.xml index 1aee7a7f61..1aee7a7f61 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/ru/panel_group_roles.xml b/indra/newview/skins/default/xui/ru/panel_group_roles.xml index 88af469fbd..88af469fbd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml index 2a23cdb800..2a23cdb800 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/ru/panel_instant_message.xml b/indra/newview/skins/default/xui/ru/panel_instant_message.xml index cf9bc7fccb..cf9bc7fccb 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/ru/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/ru/panel_inventory_item.xml b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml index f4febd49cd..f4febd49cd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/ru/panel_landmarks.xml b/indra/newview/skins/default/xui/ru/panel_landmarks.xml index 7d684cd479..7d684cd479 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/ru/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml index a19304f2fd..2e0ae89b28 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_login.xml +++ b/indra/newview/skins/default/xui/ru/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Имя пользователя" name="username_combo" tool_tip="Имя пользователя, которое вы выбрали при регистрации, например, «bobsmith12» или «Steller Sunshine»"/> <line_editor label="Пароль" name="password_edit"/> - <check_box label="Запомнить меня" name="remember_check"/> - <text name="forgot_password_text"> - Забыли пароль? - </text> - <button label="Войти" name="connect_btn"/> - <text name="At_My_Last_Location_Label" font="SansSerifSmall"> - В последнее место - </text> <combo_box label="Мои любимые места" name="start_location_combo"> + <combo_box.item label="Последнее местоположение" name="MyLastLocation"/> <combo_box.item label="Мой дом" name="MyHome"/> </combo_box> - <button label="Войти" name="connect_favorite_btn"/> - <line_editor label="Введите местоположение" name="location_edit" font="SansSerifSmall" /> - <button label="Войти" name="connect_location_btn"/> + <button label="Войти" name="connect_btn"/> + <check_box label="Запомнить меня" name="remember_check"/> + <text name="forgot_password_text">Забыли пароль?</text> <combo_box label="Выберите сетку" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ru/panel_main_inventory.xml b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml index 80a67371af..80a67371af 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml new file mode 100644 index 0000000000..1f903b1046 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Торговый центр" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Параметры просмотра/сортировки"/> + <button name="add_btn" tool_tip="Создать новую папку списка"/> + <button label="Проверка на ошибки" name="audit_btn" tool_tip="Проверьте свои списки товаров в торговом центре"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Фильтровать списки товаров в торговом центре" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..ff7b30188f --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ВСЕ" name="All Items" tool_tip="Перетащите сюда предметы, чтобы внести их в список"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..b42a82084f --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ОПУБЛИКОВАННЫЕ" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..fc69e3c362 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="НЕ СВЯЗАННЫЕ" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..c630129d44 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="НЕОПУБЛИКОВАННЫЕ" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_me.xml b/indra/newview/skins/default/xui/ru/panel_me.xml index 21a125af87..21a125af87 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_me.xml +++ b/indra/newview/skins/default/xui/ru/panel_me.xml diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml index d52397832c..d52397832c 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml index cfb006f346..cfb006f346 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml index bae491472a..bae491472a 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml index 5e3de180f9..5e3de180f9 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml index a8fdfde1c4..a8fdfde1c4 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml index 395c643b0b..395c643b0b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_media.xml b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml index 3b23fc78f5..3b23fc78f5 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml index 1ac88a01b3..1ac88a01b3 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml b/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml index 0095d48af9..0095d48af9 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml index 91c03342a7..91c03342a7 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml index 4d0e13fca2..4d0e13fca2 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml index 96f4b4a893..96f4b4a893 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_list.xml b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml index 74551e4274..74551e4274 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml index 7ed6bf35c0..7ed6bf35c0 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml index 9606f0aec1..9606f0aec1 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_people.xml +++ b/indra/newview/skins/default/xui/ru/panel_people.xml diff --git a/indra/newview/skins/default/xui/ru/panel_pick_info.xml b/indra/newview/skins/default/xui/ru/panel_pick_info.xml index 373cf211fb..373cf211fb 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/ru/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/ru/panel_picks.xml b/indra/newview/skins/default/xui/ru/panel_picks.xml index d6770e0eeb..d6770e0eeb 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_picks.xml +++ b/indra/newview/skins/default/xui/ru/panel_picks.xml diff --git a/indra/newview/skins/default/xui/ru/panel_place_profile.xml b/indra/newview/skins/default/xui/ru/panel_place_profile.xml index b486b918ed..b486b918ed 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ru/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/ru/panel_places.xml b/indra/newview/skins/default/xui/ru/panel_places.xml index 54837d3c0b..54837d3c0b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_places.xml +++ b/indra/newview/skins/default/xui/ru/panel_places.xml diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_message.xml b/indra/newview/skins/default/xui/ru/panel_postcard_message.xml index 70587d8090..70587d8090 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/ru/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml index dc9d59008f..d95cdbcf0a 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Задать" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Ширина" name="postcard_snapshot_width"/> - <spinner label="Высота" name="postcard_snapshot_height"/> - <check_box label="Сохранять пропорции" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Качество изображения" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Ширина x Высота" name="postcard_snapshot_width"/> + <check_box label="Сохранять пропорции" name="postcard_keep_aspect_check"/> + <slider label="Качество:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml index 90743646fd..90743646fd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml index 9d7ae546fd..9d7ae546fd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml index 914426c91e..914426c91e 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml index 48c34fcbb2..48c34fcbb2 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml index b15d0e3abf..b15d0e3abf 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml index c93955fcdc..c93955fcdc 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml index a6e9b00f2a..a6e9b00f2a 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml index 0a5974eed1..0a5974eed1 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml index 1741397a84..d00f58dbff 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Браузер: </text> - <radio_group name="use_external_browser"> - <radio_item label="Использовать мой браузер (IE, Firefox, Safari)" name="external" tool_tip="Будет использоваться браузер, заданный в системе по умолчанию. Не рекомендуется, если [APP_NAME] работает в полноэкранном режиме." value="true"/> - <radio_item label="Использовать встроенный браузер" name="internal" tool_tip="Для просмотра справки, ссылок на веб-страницы и т. д. будет использоваться встроенный браузер. Этот браузер открывается как новое окно в [APP_NAME]." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Использовать мой браузер (Chrome, Firefox, IE) для всех ссылок" name="internal" tool_tip="Будет использоваться браузер, заданный в системе по умолчанию. Не рекомендуется, если [APP_NAME] работает в полноэкранном режиме." value="0"/> + <radio_item label="Использовать встроенный браузер только для ссылок Second Life" name="external" tool_tip="Стандартный браузер системы будет использоваться для справки, ссылок Интернета и т.д. Встроенный браузер будет использоваться только для ссылок LindenLab/SecondLife." value="1"/> </radio_group> <check_box initial_value="true" label="Разрешить плагины" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Принимать файлы cookie" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml index 44f270527c..44f270527c 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml diff --git a/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml index 76bb6518e9..76bb6518e9 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_covenant.xml b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml index 706a38f110..706a38f110 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_debug.xml b/indra/newview/skins/default/xui/ru/panel_region_debug.xml index 3eaa0b19e0..3eaa0b19e0 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_environment.xml b/indra/newview/skins/default/xui/ru/panel_region_environment.xml index 85be8f63bd..85be8f63bd 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_estate.xml b/indra/newview/skins/default/xui/ru/panel_region_estate.xml index bcfb974fcb..bcfb974fcb 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_experiences.xml b/indra/newview/skins/default/xui/ru/panel_region_experiences.xml new file mode 100644 index 0000000000..4fd70b5650 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Приключения" name="Experiences"> + <panel.string name="trusted_estate_text"> + Любое приключение может быть ключевым. + +У ключевых приключений есть разрешение на запуск в этом землевладении. + +Кроме того, если в землевладении не разрешен публичный доступ, то жители, участвующие в любом ключевом приключении, могут входить в землевладение и оставаться в нем до тех пор, пока они находятся в ключевом приключении. + </panel.string> + <panel.string name="allowed_estate_text"> + Могут быть разрешены только приключения, привязанные к земле. + +У разрешенных приключений есть разрешение на запуск в этом землевладении. + </panel.string> + <panel.string name="blocked_estate_text"> + Блокировать можно только привязанные к сетке приключения. + +Запуск заблокированных приключений в этом землевладении невозможен. + </panel.string> + <panel.string name="estate_caption"> + Изменение параметров на этой вкладке повлияет на все регионы этого землевладения. + </panel.string> + <panel.string name="allowed_parcel_text"> + Могут быть разрешены только приключения, привязанные к земле. + +У разрешенных приключений есть разрешение на запуск на этом участке, если они не заблокированы землевладением. + </panel.string> + <panel.string name="blocked_parcel_text"> + Любое приключение жителя может быть заблокировано. + +Запуск заблокированных приключений на этом участке невозможен. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml index 8b4a127d7e..8b4a127d7e 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/ru/panel_region_terrain.xml b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml index af25565226..af25565226 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/ru/panel_script_ed.xml b/indra/newview/skins/default/xui/ru/panel_script_ed.xml index 54a1eaab75..54a1eaab75 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/ru/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/ru/panel_script_experience.xml b/indra/newview/skins/default/xui/ru/panel_script_experience.xml new file mode 100644 index 0000000000..f798884c6b --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="ПРИКЛЮЧЕНИЕ"> + <button label="Приключение" name="Expand Experience"/> + <check_box label="Используется приключение" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Выбрать приключение..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Вы не являетесь автором приключений. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml index a06c465a2b..a06c465a2b 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml index 189e21fd2f..189e21fd2f 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml b/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml index c25f92cb8d..c25f92cb8d 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml index 1a260dc31f..1a260dc31f 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml index 53a150c9f9..adc612dfd8 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Сохранить в моем инвентаре + Инвентарь </text> <text name="hint_lbl"> Сохранение изображения в инвентаре стоит L$[UPLOAD_COST]. Чтобы сохранить его как текстуру, выберите один из квадратных форматов. @@ -13,8 +13,8 @@ <combo_box.item label="Большой (512x512)" name="Large(512x512)"/> <combo_box.item label="Задать" name="Custom"/> </combo_box> - <spinner label="Ширина" name="inventory_snapshot_width"/> - <spinner label="Высота" name="inventory_snapshot_height"/> + <spinner label="Ширина x Высота" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Сохранять пропорции" name="inventory_keep_aspect_check"/> <button label="Отмена" name="cancel_btn"/> <button label="Сохранить" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml index 446b9bb2fd..80ad8f7703 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Сохранить на моем компьютере + Диск </text> <combo_box label="Размер" name="local_size_combo"> <combo_box.item label="Текущее окно" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Задать" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Ширина" name="local_snapshot_width"/> - <spinner label="Высота" name="local_snapshot_height"/> - <check_box label="Сохранять пропорции" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Формат" name="local_format_combo"> - <combo_box.item label="PNG (без потерь)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (без потерь)" name="BMP"/> - </combo_box> - <slider label="Качество изображения" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Ширина x Высота" name="local_snapshot_width"/> + <check_box label="Сохранять пропорции" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Формат: + </text> + <combo_box label="Формат" name="local_format_combo"> + <combo_box.item label="PNG (без потерь)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (без потерь)" name="BMP"/> + </combo_box> + <slider label="Качество:" name="image_quality_slider"/> <button label="Отмена" name="cancel_btn"/> <flyout_button label="Сохранить" name="save_btn" tool_tip="Сохранить изображение в файл"> <flyout_button.item label="Сохранить" name="save_item"/> diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml index 8cd69951ca..9a5bbf3bac 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Поместить в мой профиль" name="save_to_profile_btn"/> + <button label="Сохранить на диске" name="save_to_computer_btn"/> + <button label="Сохранить в инвентаре (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Загрузить в профиль" name="save_to_profile_btn"/> + <button label="Загрузить в Facebook" name="send_to_facebook_btn"/> + <button label="Загрузить в Twitter" name="send_to_twitter_btn"/> + <button label="Загрузить на Flickr" name="send_to_flickr_btn"/> <button label="Отправить по почте" name="save_to_email_btn"/> - <button label="Сохранить в моем инвентаре (L$[AMOUNT])" name="save_to_inventory_btn"/> - <button label="Сохранить на моем компьютере" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Отправить: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml index 47f4caf8e3..8f6ab612ff 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml @@ -10,8 +10,12 @@ Отправка... </string> <text name="title"> - Электронное письмо + Почта </text> - <button label="Сообщение" name="message_btn"/> - <button label="Настройки" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="Сообщение" name="panel_postcard_message"/> + <panel label="Настройки" name="panel_postcard_settings"/> + </tab_container> + <button label="Отмена" name="cancel_btn"/> + <button label="Отправить" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml index 79a9ef58d0..6b3401aa5c 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Поместить в мой профиль + Профиль </text> <combo_box label="Размер" name="profile_size_combo"> <combo_box.item label="Текущее окно" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Задать" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Ширина" name="profile_snapshot_width"/> - <spinner label="Высота" name="profile_snapshot_height"/> - <check_box label="Сохранять пропорции" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Подпись: - </text> - <check_box initial_value="true" label="Включить расположение" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Ширина x Высота" name="profile_snapshot_width"/> + <check_box label="Сохранять пропорции" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Подпись: + </text> + <check_box initial_value="true" label="Включить расположение" name="add_location_cb"/> <button label="Отмена" name="cancel_btn"/> <button label="Опубликовать" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml index 98dab288a3..98dab288a3 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml index 81a2175fc3..81a2175fc3 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml index 9c84ff1fd8..630925fa60 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Потери пакетов - </panel.string> - <panel.string name="bandwidth_tooltip"> - Ширина канала - </panel.string> - <panel.string name="time"> - [hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Потери пакетов</panel.string> + <panel.string name="bandwidth_tooltip">Ширина канала</panel.string> + <panel.string name="time">[hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-450" name="balance_bg" width="240"> - <text name="balance" tool_tip="Щелкните для обновления вашего баланса L$" value="L$20"/> + <text name="balance" tool_tip="Щелкните для обновления вашего баланса L$" value="L$??"/> <button label="Купить L$" name="buyL" tool_tip="Щелкните для покупки L$"/> <button label="Торговый центр" name="goShop" tool_tip="Открыть торговый центр Second Life" width="121"/> </panel> - <text name="TimeText" tool_tip="Текущее время (тихоокеанское)"> - 00:00 (тихоокеанское время) - </text> + <text name="TimeText" tool_tip="Текущее время (тихоокеанское)">00:00 (тихоокеанское время)</text> <button name="media_toggle_btn" tool_tip="Запуск/остановка всех медиа (музыка, видео, веб-страницы)"/> <button name="volume_btn" tool_tip="Регулятор громкости"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml index c457bc2269..c457bc2269 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml index fdcaa843ec..fdcaa843ec 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/ru/panel_twitter_photo.xml b/indra/newview/skins/default/xui/ru/panel_twitter_photo.xml index 564d02411d..6c9035323a 100644 --- a/indra/newview/skins/default/xui/ru/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/ru/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Что случилось? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="Включить расположение в SL" name="add_location_cb"/> - <check_box initial_value="true" label="Включить фото" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> - <combo_box.item label="Текущее окно" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> - <combo_box.item label="Без фильтра" name="NoFilter"/> - </combo_box> - <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> - <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Твит" name="post_photo_btn"/> - <button label="Отмена" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Что случилось? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="Включить расположение в SL" name="add_location_cb"/> + <check_box initial_value="true" label="Включить фото" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Разрешение изображения"> + <combo_box.item label="Текущее окно" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Фильтры изображений"> + <combo_box.item label="Без фильтра" name="NoFilter"/> + </combo_box> + <button label="Обновить" name="new_snapshot_btn" tool_tip="Щелкните для обновления"/> + <button label="Просмотр" name="big_preview_btn" tool_tip="Щелкните для смены вида"/> + <button label="Твит" name="post_photo_btn"/> + <button label="Отмена" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml index de0b38198f..de0b38198f 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml index fe044cd083..fe044cd083 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/ru/panel_world_map.xml b/indra/newview/skins/default/xui/ru/panel_world_map.xml index 0ab8720185..0ab8720185 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_world_map.xml +++ b/indra/newview/skins/default/xui/ru/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/ru/role_actions.xml b/indra/newview/skins/default/xui/ru/role_actions.xml index a4ac7411a3..c29cd6d0f4 100755..100644 --- a/indra/newview/skins/default/xui/ru/role_actions.xml +++ b/indra/newview/skins/default/xui/ru/role_actions.xml @@ -71,4 +71,8 @@ <action description="Присоединение к голосовому чату группы" longdescription="Участники роли с этой способностью могут присоединяться к сеансам голосового чата группы. ПРИМЕЧАНИЕ. Способность «Присоединение к чату группы» необходима для доступа к сеансам голосового чата." name="join voice chat" value="27"/> <action description="Moderate-чат группы" longdescription="Участники роли с этой способностью могут контролировать доступ и участие в сеансах текстового и голосового чата группы." name="moderate group chat" value="37"/> </action_set> + <action_set description="Эти способности включают право изменять приключения, которыми владеет эта группа." name="experience_tools_experience"> + <action description="Администратор приключения" longdescription="Участники роли с этой способностью могут редактировать метаданные приключения." name="experience admin" value="49"/> + <action description="Автор приключения" longdescription="Участники роли с этой способностью могут создавать скрипты для приключения." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml index a23f6134f2..a23f6134f2 100755..100644 --- a/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml index 725b680050..725b680050 100755..100644 --- a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml index 0106ed50ac..c434dcd6a8 100755..100644 --- a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Профиль объекта"> + <panel.string name="loading_experience"> + (загрузка) + </panel.string> <panel.string name="unknown"> (неизвестно) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Приобретено: </text> + <text name="LabelItemExperienceTitle"> + Приключение: + </text> <panel name="perms_inv"> <text name="perm_modify"> Вы можете: @@ -66,8 +72,9 @@ <check_box label="Передать" name="CheckNextOwnerTransfer" tool_tip="Следующий владелец может отдать или перепродать объект"/> </panel> <check_box label="Для продажи" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Копировать" name="Copy"/> + <combo_box.item label="Содержимое" name="Contents"/> <combo_box.item label="Оригинал" name="Original"/> </combo_box> <spinner label="Цена: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml index 5502530ca4..4059a800f0 100755..100644 --- a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Профиль объекта"> - <panel.string name="text deed continued"> - Сделка - </panel.string> - <panel.string name="text deed"> - Сделка - </panel.string> - <panel.string name="text modify info 1"> - Этот объект можно изменять - </panel.string> - <panel.string name="text modify info 2"> - Эти объекты можно изменять - </panel.string> - <panel.string name="text modify info 3"> - Этот объект нельзя изменять - </panel.string> - <panel.string name="text modify info 4"> - Эти объекты нельзя изменять - </panel.string> - <panel.string name="text modify info 5"> - Этот объект нельзя изменять через границу региона - </panel.string> - <panel.string name="text modify info 6"> - Эти объекты нельзя изменять через границу региона - </panel.string> - <panel.string name="text modify warning"> - Этот объект содержит объединенные части - </panel.string> - <panel.string name="Cost Default"> - Цена: L$ - </panel.string> - <panel.string name="Cost Total"> - Всего: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Цена за: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Смешанная цена - </panel.string> - <panel.string name="Sale Mixed"> - Смешанная продажа - </panel.string> + <panel.string name="text deed continued">Сделка</panel.string> + <panel.string name="text deed">Сделка</panel.string> + <panel.string name="text modify info 1">Этот объект можно изменять</panel.string> + <panel.string name="text modify info 2">Эти объекты можно изменять</panel.string> + <panel.string name="text modify info 3">Этот объект нельзя изменять</panel.string> + <panel.string name="text modify info 4">Эти объекты нельзя изменять</panel.string> + <panel.string name="text modify info 5">Этот объект нельзя изменять через границу региона</panel.string> + <panel.string name="text modify info 6">Эти объекты нельзя изменять через границу региона</panel.string> + <panel.string name="text modify warning">Этот объект содержит объединенные части</panel.string> + <panel.string name="Cost Default">Цена: L$</panel.string> + <panel.string name="Cost Total">Итоговая цена: L$</panel.string> + <panel.string name="Cost Per Unit">Цена за: L$</panel.string> + <panel.string name="Cost Mixed">Смешанная цена</panel.string> + <panel.string name="Sale Mixed">Смешанная продажа</panel.string> <text name="title" value="Профиль объекта"/> <text name="where" value="(в мире)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Название: - </text> - <text name="Description:"> - Описание: - </text> - <text name="CreatorNameLabel"> - Создатель: - </text> - <text name="Owner:"> - Владелец: - </text> - <text name="Group_label"> - Группа: - </text> + <text name="Name:">Название:</text> + <text name="Description:">Описание:</text> + <text name="CreatorNameLabel">Создатель:</text> + <text name="Owner:">Владелец:</text> + <text name="Group_label">Группа:</text> <button name="button set group" tool_tip="Выберите группу для передачи ей прав доступа к объекту"/> <name_box initial_value="Загрузка..." name="Group Name Proxy"/> <button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="В результате сделки объект передается группе, при этом права на него будут соответствовать правам следующего владельца. Переданный группе объект может передаваться должностным лицом группы."/> - <text name="label click action"> - Действие по щелчку: - </text> + <text name="label click action">Действие по щелчку:</text> <combo_box name="clickaction"> <combo_box.item label="Коснуться (по умолчанию)" name="Touch/grab(default)"/> <combo_box.item label="Сесть на объект" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Приблизить" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Этот объект можно изменять - </text> - <text name="Anyone can:"> - Все: - </text> + <text name="perm_modify">Этот объект можно изменять</text> + <text name="Anyone can:">Все:</text> <check_box label="Копировать" name="checkbox allow everyone copy"/> <check_box label="Переместить" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Группа: - </text> + <text name="GroupLabel">Группа:</text> <check_box label="Поделиться" name="checkbox share with group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/> - <text name="NextOwnerLabel"> - Следующий владелец: - </text> + <text name="NextOwnerLabel">Следующий владелец:</text> <check_box label="Изменять" name="checkbox next owner can modify"/> <check_box label="Копировать" name="checkbox next owner can copy"/> <check_box label="Передать" name="checkbox next owner can transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Цена: L$" name="Edit Cost"/> <check_box label="Показать в результатах поиска" name="search_check" tool_tip="Показывать объект в результатах поиска"/> - <text name="pathfinding_attributes_label"> - Атрибуты поиска пути: - </text> - <text name="B:"> - Н: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - В: - </text> - <text name="N:"> - С: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Атрибуты поиска пути:</text> + <text name="B:">Н:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">В:</text> + <text name="N:">С:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Открыть" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index b7daab33a9..1617451a3a 100755..100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -38,7 +38,7 @@ Ошибка инициализации графики. Обновите графический драйвер! </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> @@ -449,30 +449,51 @@ support@secondlife.com. <string name="TooltipMustSingleDrop"> Сюда можно перетащить только одну вещь </string> + <string name="TooltipTooManyWearables"> + Нельзя носить папку, содержащую более [AMOUNT] вещей. Это ограничение можно изменить в меню «Дополнительно > Настройки отладки > WearFolderLimit. + </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - Нельзя выложить предметы из папке «Торговые исходящие» + Нельзя выложить предметы из папки списков товаров торгового центра + </string> + <string name="TooltipOutboxWorn"> + Нельзя поместить предметы, которые вы носите, в папку списков товаров торгового центра + </string> + <string name="TooltipOutboxFolderLevels"> + Глубина вложения папок превышает [AMOUNT]. Уменьшите глубину вложения; при необходимости сгруппируйте предметы. + </string> + <string name="TooltipOutboxTooManyFolders"> + Количество подпапок не может превышать [AMOUNT]. Уменьшите количество папок в списке; при необходимости сгруппируйте предметы. + </string> + <string name="TooltipOutboxTooManyObjects"> + Количество предметов не может превышать [AMOUNT]. Для продажи более чем [AMOUNT] предм. в одном списке некоторые из них следует сгруппировать. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Количество предметов не может превышать [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Можно перетаскивать предметы или папки только на вкладку «ВСЕ». Выберите эту вкладку и переместите предметы или папки снова. </string> <string name="TooltipOutboxNoTransfer"> - Часть этих объектов нельзя продать или передать. + Часть этих объектов нельзя продать или передать </string> <string name="TooltipOutboxNotInInventory"> - Ваша папка «Торговые исходящие» может получать вещи только непосредственно из вашего инвентаря + В торговый центр можно поместить только предметы из своего инвентаря </string> - <string name="TooltipOutboxWorn"> - Носимые предметы нельзя поместить в папку «Торговые исходящие» + <string name="TooltipOutboxLinked"> + Привязанные предметы или папки нельзя поместить в торговый центр </string> <string name="TooltipOutboxCallingCard"> - Визитки нельзя поместить в папку «Торговые исходящие» + Нельзя поместить визитки в торговый центр </string> - <string name="TooltipOutboxFolderLevels"> - Глубина вложения папок превышает 3 + <string name="TooltipOutboxDragActive"> + Опубликованный список нельзя переместить </string> - <string name="TooltipOutboxTooManyFolders"> - В папке верхнего уровня более 20 подпапок + <string name="TooltipOutboxCannotMoveRoot"> + Корневую папку списков товаров торгового центра нельзя перемещать </string> - <string name="TooltipOutboxTooManyObjects"> - В папке верхнего уровня более 200 предметов + <string name="TooltipOutboxMixedStock"> + У всех предметов в папке запасов должен быть один и тот же тип и разрешение </string> <string name="TooltipDragOntoOwnChild"> Папку нельзя переместить в ее подпапку @@ -1057,9 +1078,7 @@ support@secondlife.com. <string name="AgentNameSubst"> (Вы) </string> - <string name="JoinAnExperience"> - Присоединитесь - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Отключить извещения при управлении списками доступа к землевладениям </string> @@ -1126,6 +1145,12 @@ support@secondlife.com. <string name="bitmap_image_files"> Изображения BMP </string> + <string name="png_image_files"> + Изображения PNG + </string> + <string name="save_texture_image_files"> + Изображения Targa или PNG + </string> <string name="avi_movie_file"> Видео AVI </string> @@ -1375,6 +1400,9 @@ support@secondlife.com. <string name="FavoritesNoMatchingItems"> Перетащите сюда закладку, чтобы добавить ее в список избранного. </string> + <string name="MarketplaceNoMatchingItems"> + Предметы не найдены. Проверьте правильность строки поиска и повторите попытку. + </string> <string name="InventoryNoTexture"> В вашем инвентаре нет копии этой текстуры </string> @@ -1422,29 +1450,95 @@ support@secondlife.com. <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] Магазин] возвращает ошибки. </string> + <string name="InventoryMarketplaceError"> + Это бета-версия функции. Если вы хотите участвовать в ее тестировании, заполните эту [http://goo.gl/forms/FCQ7UXkakz форму Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Папка списков товаров торгового центра пуста. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Перетащите папки в эту область, чтобы выставить их на продажу в [[MARKETPLACE_DASHBOARD_URL] Торговом центре]. + </string> + <string name="Marketplace Validation Warning Stock"> + В папке версии должна быть папка запасов + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Ошибка: все предметы в папке запасов должны быть некопируемыми и одного типа + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Ошибка: папка запасов не может содержать подпапки + </string> + <string name="Marketplace Validation Warning Empty"> + : Предупреждение: папка не содержит предметов + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Предупреждение: создается папка запасов + </string> + <string name="Marketplace Validation Warning Create Version"> + : Предупреждение: создается папка версии + </string> + <string name="Marketplace Validation Warning Move"> + : Предупреждение: перемещаются предметы + </string> + <string name="Marketplace Validation Warning Delete"> + : Предупреждение: содержимое папки переносится в папку запасов, пустая папка удаляется + </string> + <string name="Marketplace Validation Error Stock Item"> + : Ошибка: в папке запасов должны содержаться некопируемые предметы + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Предупреждение: в папке версии должны быть предметы + </string> + <string name="Marketplace Validation Error"> + : Ошибка: + </string> + <string name="Marketplace Validation Warning"> + : Предупреждение: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Предупреждение: папка версии должна содержать хотя бы 1 предмет + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Предупреждение: папка запасов должна содержать хотя бы 1 предмет + </string> + <string name="Marketplace Validation No Error"> + Нет ошибок и предупреждений + </string> <string name="Marketplace Error None"> Ошибок нет </string> + <string name="Marketplace Error Prefix"> + Ошибка: + </string> <string name="Marketplace Error Not Merchant"> - Ошибка. Прежде чем отправлять вещи в магазин, необходимо зарегистрироваться как торговец (бесплатно). + Прежде чем отправлять предметы в торговый центр, необходимо зарегистрироваться как торговец (бесплатно). </string> - <string name="Marketplace Error Empty Folder"> - Ошибка. В этой папке нет контента. + <string name="Marketplace Error Not Accepted"> + Невозможно переместить предмет в эту папку. </string> - <string name="Marketplace Error Unassociated Products"> - Ошибка. Не удается передать эту вещь, поскольку в вашем торговом аккаунте слишком много вещей, не связанных с продуктами. Чтобы исправить эту ошибку, войдите на веб-сайт торгового центра и уменьшите число своих вещей, которые ни с чем не связаны. + <string name="Marketplace Error Unsellable Item"> + Этот предмет нельзя продать в торговом центре. </string> - <string name="Marketplace Error Object Limit"> - Ошибка. Эта вещь содержит слишком много объектов. Исправьте эту ошибку, сложив объекты в коробки и уменьшив их общее число (должно быть меньше 200). + <string name="MarketplaceNoID"> + нет ID торг. центра </string> - <string name="Marketplace Error Folder Depth"> - Ошибка. Эта вещь содержит слишком много уровней вложенных папок. Измените структуру так, чтобы уровней вложенных папок было не более 3. + <string name="MarketplaceLive"> + опубликовано </string> - <string name="Marketplace Error Unsellable Item"> - Ошибка. Эту вещь нельзя продать в магазине. + <string name="MarketplaceActive"> + активно </string> - <string name="Marketplace Error Internal Import"> - Ошибка. Эта вещь создает проблему. Повторите попытку позже. + <string name="MarketplaceMax"> + макс. + </string> + <string name="MarketplaceStock"> + запас + </string> + <string name="MarketplaceNoStock"> + нет в запасе + </string> + <string name="MarketplaceUpdating"> + обновление... </string> <string name="Open landmarks"> Открыть закладки @@ -1465,6 +1559,7 @@ support@secondlife.com. Нет контента </string> <string name="WornOnAttachmentPoint" value="(где носится: [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (активно)"/> <string name="PermYes"> Да @@ -1735,6 +1830,15 @@ support@secondlife.com. <string name="Invalid Attachment"> Неверная точка присоединения </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Ошибка: отсутствует предмет + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Ошибка: отсутствует базовый предмет + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Ошибка: объект входит в текущий костюм, но не прикреплен + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1903,6 +2007,9 @@ support@secondlife.com. <string name="SaveComplete"> Сохранение завершено. </string> + <string name="UploadFailed"> + Не удалось загрузить файл: + </string> <string name="ObjectOutOfRange"> Скрипт (объект вне области) </string> @@ -1912,6 +2019,9 @@ support@secondlife.com. <string name="GroupsNone"> нет </string> + <string name="CompileNoExperiencePerm"> + Пропуск скрипта [SCRIPT] с приключением [EXPERIENCE]. + </string> <string name="Group" value="(группа)"/> <string name="Unknown"> (Неизвестно) @@ -5072,6 +5182,9 @@ support@secondlife.com. <string name="Command_Marketplace_Label"> Торговый центр </string> + <string name="Command_MarketplaceListings_Label"> + Торговый центр + </string> <string name="Command_MiniMap_Label"> Миникарта </string> @@ -5159,6 +5272,9 @@ support@secondlife.com. <string name="Command_Marketplace_Tooltip"> Покупки </string> + <string name="Command_MarketplaceListings_Tooltip"> + Продайте свои творения + </string> <string name="Command_MiniMap_Tooltip"> Показать людей поблизости </string> @@ -5282,4 +5398,85 @@ support@secondlife.com. <string name="loading_chat_logs"> Загрузка... </string> + <string name="experience_tools_experience"> + Приключение + </string> + <string name="ExperienceNameNull"> + (без приключения) + </string> + <string name="ExperienceNameUntitled"> + (приключение без названия) + </string> + <string name="Land-Scope"> + Привязано к земле + </string> + <string name="Grid-Scope"> + Привязано к сетке + </string> + <string name="Allowed_Experiences_Tab"> + РАЗРЕШЕННЫЕ + </string> + <string name="Blocked_Experiences_Tab"> + БЛОКИРОВАННЫЕ + </string> + <string name="Contrib_Experiences_Tab"> + АВТОР + </string> + <string name="Admin_Experiences_Tab"> + АДМИНИСТРАТОР + </string> + <string name="Recent_Experiences_Tab"> + НЕДАВНИЕ + </string> + <string name="Owned_Experiences_Tab"> + СОБСТВЕННОСТЬ + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], максимум: [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + взять управление на себя + </string> + <string name="ExperiencePermission3"> + запускать анимации на вашем аватаре + </string> + <string name="ExperiencePermission4"> + прикрепить к аватару + </string> + <string name="ExperiencePermission9"> + следить за камерой + </string> + <string name="ExperiencePermission10"> + управлять камерой + </string> + <string name="ExperiencePermission11"> + телепортировать вас + </string> + <string name="ExperiencePermission12"> + автоматически принимать разрешения приключения + </string> + <string name="ExperiencePermissionShortUnknown"> + выполнил неизвестную операцию: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Взять на себя + </string> + <string name="ExperiencePermissionShort3"> + Запуск анимаций + </string> + <string name="ExperiencePermissionShort4"> + Присоединить + </string> + <string name="ExperiencePermissionShort9"> + Слежение за камерой + </string> + <string name="ExperiencePermissionShort10"> + Управление камерой + </string> + <string name="ExperiencePermissionShort11"> + Телепортация + </string> + <string name="ExperiencePermissionShort12"> + Разрешение + </string> </strings> diff --git a/indra/newview/skins/default/xui/ru/teleport_strings.xml b/indra/newview/skins/default/xui/ru/teleport_strings.xml index 40c9267408..fc6cb2cf92 100755..100644 --- a/indra/newview/skins/default/xui/ru/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ru/teleport_strings.xml @@ -48,6 +48,9 @@ <message name="MustGetAgeRegion"> Входить в этот регион могут только жители 18 лет и старше. </message> + <message name="RegionTPSpecialUsageBlocked"> + Не удалось войти в регион. «[REGION_NAME]» – это регион развивающих игр, и для входа в него надо соответствовать определенным условиям. Подробнее см. на странице [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/tr/floater_aaa.xml b/indra/newview/skins/default/xui/tr/floater_aaa.xml index d663ec1a5b..d663ec1a5b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_aaa.xml +++ b/indra/newview/skins/default/xui/tr/floater_aaa.xml diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml index 7b925e8830..7034de64c9 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_about.xml +++ b/indra/newview/skins/default/xui/tr/floater_about.xml @@ -1,71 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="[CAPITALIZED_APP_NAME] HAKKINDA"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]] - </floater.string> - <floater.string name="AboutCompiler"> - [COMPILER] [COMPILER_VERSION] sürümü ile oluşturuldu - </floater.string> - <floater.string name="AboutPosition"> - <nolink>[HOSTNAME]</nolink> ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız -SLURL: <nolink>[SLURL]</nolink> -(küresel koordinatlar [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Bellek: [MEMORY_MB] MB -İşl. Sis. Sürümü: [OS_VERSION] -Grafik Kartı Üreticisi: [GRAPHICS_CARD_VENDOR] -Grafik Kartı: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL Sürümü: [OPENGL_VERSION] - -libcurl Sürümü: [LIBCURL_VERSION] -J2C Kod Çözücü Sürümü: [J2C_VERSION] -Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION] -Qt Web Kit Sürümü: [QT_WEBKIT_VERSION] -Ses Sunucusu Sürümü: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (hiçbiri) - </floater.string> - <floater.string name="AboutTraffic"> - Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Sunucu sürümü notları URL'si alınırken hata oluştu. - </floater.string> <tab_container name="about_tab"> <panel label="Bilgi" name="support_panel"> <button label="Panoya Kopyala" name="copy_btn"/> </panel> <panel label="Katkıda Bulunanlar" name="credits_panel"> - <text name="linden_intro"> - Second Life, Linden'lar tarafından geliştirilmiştir: - </text> - <text name="contrib_intro"> - Açık kaynak kod katkısında bulunanlar: - </text> - <text_editor name="contrib_names"> - Geçici Ad çalıştırma sırasında değiştirilir - </text_editor> - <text name="trans_intro"> - Çevirileri yapanlar: - </text> - <text_editor name="trans_names"> - Geçici Ad çalıştırma sırasında değiştirilir - </text_editor> + <text name="linden_intro">Second Life, Lindens tarafından geliştirilmiştir ve +açık kaynak kod katkısında bulunanlar şunlardır:</text> + <text_editor name="contrib_names">Geçici Ad çalıştırma sırasında değiştirilir</text_editor> </panel> <panel label="Lisanslar" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Telif Hakkı (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Telif Hakkı (C) 1992-2009 3Dconnexion APR Telif Hakkı (C) 2011 The Apache Software Foundation Collada DOM Telif Hakkı 2006 Sony Computer Entertainment Inc. cURL Telif Hakkı (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -92,8 +37,7 @@ Ses Sunucusu Sürümü: [VOICE_VERSION] Tüm hakları saklıdır. Ayrıntılı bilgi için bkz. licenses.txt - Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml index 481fc540d0..090e135b3b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml @@ -331,22 +331,6 @@ Sadece büyük parseller aramada görünür. <check_box label="Güvenli (hasar yok)" name="check safe" tool_tip="İşaretliyse, araziyi Güvenli moda getirerek hasar çarpışmasını etkinsizleştirir İşaretli değilse hasar çarpışması etkinleşir."/> <check_box label="İtme Yok" name="PushRestrictCheck" tool_tip="Komut dosyalarının itmesini önler Bu seçeneğin işaretlenmesi arazinizdeki bozucu davranışları önlemeye yardımcı olabilir."/> <check_box label="Konumu Arama sonuçlarında göster (L$30/hafta)" name="ShowDirectoryCheck" tool_tip="Arama sonuçlarında bu parsel görünsün"/> - <combo_box name="land category with adult"> - <combo_box.item label="Herh. Bir Kategori" name="item0"/> - <combo_box.item label="Linden Konumu" name="item1"/> - <combo_box.item label="Yetişkin" name="item2"/> - <combo_box.item label="Sanat ve Kültür" name="item3"/> - <combo_box.item label="İş" name="item4"/> - <combo_box.item label="Eğitim" name="item5"/> - <combo_box.item label="Oyun" name="item6"/> - <combo_box.item label="Uğrak Mekan" name="item7"/> - <combo_box.item label="Yeni Gelenlere Yardım Sunan" name="item8"/> - <combo_box.item label="Park ve Doğa" name="item9"/> - <combo_box.item label="Yerleşim" name="item10"/> - <combo_box.item label="Alışveriş" name="item11"/> - <combo_box.item label="Kiralık" name="item13"/> - <combo_box.item label="Diğer" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="Herh. Bir Kategori" name="item0"/> <combo_box.item label="Linden Konumu" name="item1"/> @@ -477,5 +461,6 @@ Sadece büyük parseller aramada görünür. <button label="Kaldır" label_selected="Kaldır" name="remove_banned"/> </panel> </panel> + <panel label="DENEYİMLER" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_activeim.xml b/indra/newview/skins/default/xui/tr/floater_activeim.xml index f3f66b942f..f3f66b942f 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_activeim.xml +++ b/indra/newview/skins/default/xui/tr/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml index a63e1e107e..a63e1e107e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml index f8800c674d..c4e2fd2a93 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ Maksimum animasyon uzunluğu [LENGTH] saniye. İfade </text> <combo_box name="emote_combo" tool_tip="Yüzün animasyon sırasındaki ifadesini kontrol eder"> - <item label="(Hiçbiri)" name="[None]" value=""/> - <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> - <item label="Korkmuş" name="Afraid" value="Korkmuş"/> - <item label="Kızgın" name="Angry" value="Kızgın"/> - <item label="Yaygın Gülümseyiş" name="BigSmile" value="Yaygın Gülümseyiş"/> - <item label="Canı Sıkılmış" name="Bored" value="Canı Sıkılmış"/> - <item label="Ağlama" name="Cry" value="Ağlama"/> - <item label="Dudak Bükme" name="Disdain" value="Dudak Bükme"/> - <item label="Utanmış" name="Embarrassed" value="Utanmış"/> - <item label="Kaş Çatma" name="Frown" value="Kaş Çatma"/> - <item label="Öpücük" name="Kiss" value="Öpücük"/> - <item label="Gülme" name="Laugh" value="Gülme"/> - <item label="Kahkaha" name="Plllppt" value="Kahkaha"/> - <item label="Tiksinmiş" name="Repulsed" value="Tiksinmiş"/> - <item label="Üzgün" name="Sad" value="Üzgün"/> - <item label="Omuz Silkme" name="Shrug" value="Omuz Silkme"/> - <item label="Gülümseme" name="Smile" value="Gülümseme"/> - <item label="Sürpriz" name="Surprise" value="Sürpriz"/> - <item label="Göz Kırpma" name="Wink" value="Göz Kırpma"/> - <item label="Endişelenme" name="Worry" value="Endişelenme"/> + <item label="(Hiçbiri)" name="[None]"/> + <item label="Aaaaah" name="Aaaaah"/> + <item label="Korkmuş" name="Afraid"/> + <item label="Kızgın" name="Angry"/> + <item label="Yaygın Gülümseyiş" name="BigSmile"/> + <item label="Canı Sıkılmış" name="Bored"/> + <item label="Ağlama" name="Cry"/> + <item label="Dudak Bükme" name="Disdain"/> + <item label="Utanmış" name="Embarrassed"/> + <item label="Kaş Çatma" name="Frown"/> + <item label="Öpücük" name="Kiss"/> + <item label="Gülme" name="Laugh"/> + <item label="Kahkaha" name="Plllppt"/> + <item label="Tiksinmiş" name="Repulsed"/> + <item label="Üzgün" name="Sad"/> + <item label="Omuz Silkme" name="Shrug"/> + <item label="Gülümseme" name="Smile"/> + <item label="Sürpriz" name="Surprise"/> + <item label="Göz Kırpma" name="Wink"/> + <item label="Endişelenme" name="Worry"/> </combo_box> <text name="preview_label"> Şu sırada önizle </text> <combo_box name="preview_base_anim" tool_tip="Animasyon davranışınızı avatarınız genel hareketleri yaparken test etmek için bunu kullanın."> - <item label="Ayakta Duruyor" name="Standing" value="Ayakta Duruyor"/> - <item label="Yürüyor" name="Walking" value="Yürüyor"/> - <item label="Oturuyor" name="Sitting" value="Oturuyor"/> - <item label="Uçuyor" name="Flying" value="Uçuyor"/> + <item label="Ayakta Duruyor" name="Standing"/> + <item label="Yürüyor" name="Walking"/> + <item label="Oturuyor" name="Sitting"/> + <item label="Uçuyor" name="Flying"/> </combo_box> <spinner label="Yavaş Başlangıç (saniye)" name="ease_in_time" tool_tip="Animasyonun kaynaştığı süre (saniye olarak)"/> <spinner label="Yavaş Bitiş (saniye)" name="ease_out_time" tool_tip="Animasyonun ayrıştığı süre (saniye olarak)"/> diff --git a/indra/newview/skins/default/xui/tr/floater_associate_listing.xml b/indra/newview/skins/default/xui/tr/floater_associate_listing.xml new file mode 100644 index 0000000000..bf78929931 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="İLANI İLİŞKİLENDİR"> + <text name="message">İlan Kimliği:</text> + <line_editor name="listing_id">Kimliği buraya girin</line_editor> + <button label="Tamam" name="OK"/> + <button label="İptal" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_auction.xml b/indra/newview/skins/default/xui/tr/floater_auction.xml index 3c945a9c96..3c945a9c96 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_auction.xml +++ b/indra/newview/skins/default/xui/tr/floater_auction.xml diff --git a/indra/newview/skins/default/xui/tr/floater_autoreplace.xml b/indra/newview/skins/default/xui/tr/floater_autoreplace.xml index e52e05dc61..e52e05dc61 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/tr/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/tr/floater_avatar.xml b/indra/newview/skins/default/xui/tr/floater_avatar.xml index c6b14ba710..c6b14ba710 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_avatar.xml +++ b/indra/newview/skins/default/xui/tr/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml index 99c2aae5a3..99c2aae5a3 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml index b519cfa1a9..b519cfa1a9 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/tr/floater_beacons.xml b/indra/newview/skins/default/xui/tr/floater_beacons.xml index 08ebf36be5..08ebf36be5 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_beacons.xml +++ b/indra/newview/skins/default/xui/tr/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/tr/floater_build_options.xml b/indra/newview/skins/default/xui/tr/floater_build_options.xml index 5e77f6b168..5e77f6b168 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_build_options.xml +++ b/indra/newview/skins/default/xui/tr/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml index bf4473ce1f..bf4473ce1f 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/tr/floater_bumps.xml b/indra/newview/skins/default/xui/tr/floater_bumps.xml index 06ae3a2ec3..06ae3a2ec3 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_bumps.xml +++ b/indra/newview/skins/default/xui/tr/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/tr/floater_buy_contents.xml b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml index 9012189ce5..9012189ce5 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml index d90985dcff..d90985dcff 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml index 98aaf50db0..98aaf50db0 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/tr/floater_buy_land.xml b/indra/newview/skins/default/xui/tr/floater_buy_land.xml index 7b43af2ea4..7b43af2ea4 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/tr/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/tr/floater_buy_object.xml b/indra/newview/skins/default/xui/tr/floater_buy_object.xml index 91ef05fb29..91ef05fb29 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/tr/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml index 22e2aa52c6..22e2aa52c6 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_camera.xml +++ b/indra/newview/skins/default/xui/tr/floater_camera.xml diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml index cd999b4b7a..cd999b4b7a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/tr/floater_choose_group.xml b/indra/newview/skins/default/xui/tr/floater_choose_group.xml index 1bfc772f4a..1bfc772f4a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/tr/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/tr/floater_color_picker.xml b/indra/newview/skins/default/xui/tr/floater_color_picker.xml index c9465fff83..c9465fff83 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/tr/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/tr/floater_critical.xml b/indra/newview/skins/default/xui/tr/floater_critical.xml index 041a303bae..041a303bae 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_critical.xml +++ b/indra/newview/skins/default/xui/tr/floater_critical.xml diff --git a/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml index 915770f727..915770f727 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/tr/floater_destinations.xml b/indra/newview/skins/default/xui/tr/floater_destinations.xml index 4504366d63..4504366d63 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_destinations.xml +++ b/indra/newview/skins/default/xui/tr/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/tr/floater_display_name.xml b/indra/newview/skins/default/xui/tr/floater_display_name.xml index e39be5a24b..e39be5a24b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_display_name.xml +++ b/indra/newview/skins/default/xui/tr/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml index 4be1068dcc..4be1068dcc 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml new file mode 100644 index 0000000000..237d886c45 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="KONUM YÜKSEKLİĞİNİ AYARLA"> + <slider label="Yükseklik" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml index 0e9f86148d..0e9f86148d 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml index 2ddee32bad..2ddee32bad 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/tr/floater_environment_settings.xml b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml index e702da7e1b..e702da7e1b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/tr/floater_event.xml b/indra/newview/skins/default/xui/tr/floater_event.xml index 60dece124b..60dece124b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_event.xml +++ b/indra/newview/skins/default/xui/tr/floater_event.xml diff --git a/indra/newview/skins/default/xui/tr/floater_experience_search.xml b/indra/newview/skins/default/xui/tr/floater_experience_search.xml new file mode 100644 index 0000000000..0a025115d5 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="DENEYİM SEÇİN"/> diff --git a/indra/newview/skins/default/xui/tr/floater_experienceprofile.xml b/indra/newview/skins/default/xui/tr/floater_experienceprofile.xml new file mode 100644 index 0000000000..641d61b8f3 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (hiçbiri) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="Deneyim Profili"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="Düzenle" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + Seviye: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Konum: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + Sahip: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + Grup: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="İzin Ver" name="allow_btn"/> + <button label="Unut" name="forget_btn"/> + <button label="Engelle" name="block_btn"/> + <text name="privileged"> + Bu deneyim tüm sakinler için etkindir. + </text> + <button label="Kötüye Kullanımı Bildir" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="Ad:"/> + <text name="edit_experience_desc_label" value="Açıklama:"/> + <button label="Grup" name="Group_btn"/> + <text name="edit_ContentRating"> + Seviye: + </text> + <icons_combo_box label="Orta" name="edit_ContentRatingText" tool_tip="Bir deneyimin erişkinlik seviyesi artınca, o deneyime izin veren tüm sakinler için izinler sıfırlanır."> + <icons_combo_box.item label="Yetişkin" name="Adult" value="42"/> + <icons_combo_box.item label="Orta" name="Mature" value="21"/> + <icons_combo_box.item label="Genel" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + Konum: + </text> + <button label="Mevcut Olana Ayarla" name="location_btn"/> + <button label="Konumu Temizle" name="clear_btn"/> + <check_box label="Deneyimi Etkinleştir" name="edit_enable_btn" tool_tip=""/> + <check_box label="Aramalarda Gizle" name="edit_private_btn"/> + <text name="changes" value="Deneyim değişikliklerinin tüm bölgelerde görünmesi birkaç dakika alabilir."/> + <button label="Geri" name="cancel_btn"/> + <button label="Kaydet" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_experiences.xml b/indra/newview/skins/default/xui/tr/floater_experiences.xml new file mode 100644 index 0000000000..eae3638cad --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="DENEYİMLER"/> diff --git a/indra/newview/skins/default/xui/tr/floater_facebook.xml b/indra/newview/skins/default/xui/tr/floater_facebook.xml index 87f69fc731..656a4a81c9 100644 --- a/indra/newview/skins/default/xui/tr/floater_facebook.xml +++ b/indra/newview/skins/default/xui/tr/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="FACEBOOK'TA YAYINLA"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="DURUM" name="panel_facebook_status"/> - <panel label="FOTOĞRAF" name="panel_facebook_photo"/> - <panel label="KONUMA GİRİŞ YAPIN" name="panel_facebook_place"/> - <panel label="ARKADAŞLAR" name="panel_facebook_friends"/> - <panel label="HESAP" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Hata - </text> - <text name="connection_loading_text"> - Yükleniyor... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="DURUM" name="panel_facebook_status"/> + <panel label="FOTOĞRAF" name="panel_facebook_photo"/> + <panel label="KONUMA GİRİŞ YAPIN" name="panel_facebook_place"/> + <panel label="ARKADAŞLAR" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + Hata + </text> + <text name="connection_loading_text"> + Yükleniyor... + </text> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml index 5736bda45e..5736bda45e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/tr/floater_font_test.xml b/indra/newview/skins/default/xui/tr/floater_font_test.xml index 5371d5d2a4..5371d5d2a4 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_font_test.xml +++ b/indra/newview/skins/default/xui/tr/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/tr/floater_gesture.xml b/indra/newview/skins/default/xui/tr/floater_gesture.xml index 5f5d28ad6c..5f5d28ad6c 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_gesture.xml +++ b/indra/newview/skins/default/xui/tr/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/tr/floater_god_tools.xml b/indra/newview/skins/default/xui/tr/floater_god_tools.xml index 26e5ebd18b..26e5ebd18b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/tr/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml index b204389083..b204389083 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/tr/floater_help_browser.xml b/indra/newview/skins/default/xui/tr/floater_help_browser.xml index 695f838936..695f838936 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/tr/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/tr/floater_how_to.xml b/indra/newview/skins/default/xui/tr/floater_how_to.xml index a42fe0b122..a42fe0b122 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_how_to.xml +++ b/indra/newview/skins/default/xui/tr/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/tr/floater_hud.xml b/indra/newview/skins/default/xui/tr/floater_hud.xml index 09f119bbc1..09f119bbc1 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_hud.xml +++ b/indra/newview/skins/default/xui/tr/floater_hud.xml diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml index 6504430b3c..6504430b3c 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_im_container.xml +++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml index 52a10feeef..52a10feeef 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_im_session.xml +++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/tr/floater_image_preview.xml b/indra/newview/skins/default/xui/tr/floater_image_preview.xml index a5963bdf63..a5963bdf63 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_import_collada.xml b/indra/newview/skins/default/xui/tr/floater_import_collada.xml index 1e77d1b376..1e77d1b376 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/tr/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml index 0f2b27241e..0f2b27241e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/tr/floater_inspect.xml b/indra/newview/skins/default/xui/tr/floater_inspect.xml index 09130a31f3..09130a31f3 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_inspect.xml +++ b/indra/newview/skins/default/xui/tr/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml index e49fef1f46..c6a5515c6e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="ENVANTER ÖGESİ ÖZELLİKLERİ"> - <floater.string name="unknown"> - (bilinmiyor) - </floater.string> - <floater.string name="public"> - (kamuya açık) - </floater.string> - <floater.string name="you_can"> - Şunu yapabilirsiniz: - </floater.string> - <floater.string name="owner_can"> - Sahip şunu yapabilir: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Ad: - </text> - <text name="LabelItemDescTitle"> - Açıklama: - </text> - <text name="LabelCreatorTitle"> - Oluşturan: - </text> + <floater.string name="unknown">(bilinmiyor)</floater.string> + <floater.string name="public">(kamuya açık)</floater.string> + <floater.string name="you_can">Şunu yapabilirsiniz:</floater.string> + <floater.string name="owner_can">Sahip şunu yapabilir:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Ad:</text> + <text name="LabelItemDescTitle">Açıklama:</text> + <text name="LabelCreatorTitle">Oluşturan:</text> <button label="Profil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Sahip: - </text> + <text name="LabelOwnerTitle">Sahip:</text> <button label="Profil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Alınan: - </text> - <text name="LabelAcquiredDate"> - 24 Mayıs Çarş 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Siz: - </text> + <text name="LabelAcquiredTitle">Alınan:</text> + <text name="LabelAcquiredDate">24 Mayıs Çarş 12:50:46 2006</text> + <text name="OwnerLabel">Siz:</text> <check_box label="Düzenle" name="CheckOwnerModify"/> <check_box label="Kopyala" name="CheckOwnerCopy"/> <check_box label="Tekrar Sat" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Herkes: - </text> + <text name="AnyoneLabel">Herkes:</text> <check_box label="Kopyala" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grup: - </text> + <text name="GroupLabel">Grup:</text> <check_box label="Paylaş" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Sonraki sahip: - </text> + <text name="NextOwnerLabel">Sonraki sahip:</text> <check_box label="Düzenle" name="CheckNextOwnerModify"/> <check_box label="Kopyala" name="CheckNextOwnerCopy"/> <check_box label="Tekrar Sat" name="CheckNextOwnerTransfer"/> <check_box label="Satılık" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Kopyala" name="Copy"/> + <combo_box.item label="İçerik" name="Contents"/> <combo_box.item label="Orijinal" name="Original"/> </combo_box> <spinner label="Fiyat:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml index 9d1a556751..35f30f47cc 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="Giysiler" name="check_clothing"/> <check_box label="Mimikler" name="check_gesture"/> <check_box label="Yer İmleri" name="check_landmark"/> - <check_box label="Örgüler" name="check_mesh"/> <check_box label="Not Kartları" name="check_notecard"/> + <check_box label="Örgüler" name="check_mesh"/> <check_box label="Nesneler" name="check_object"/> <check_box label="Komut Dosyaları" name="check_script"/> <check_box label="Sesler" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - VEYA - </text> + <radio_group name="date_search_direction"> + <radio_item label="Şundan daha yeni:" name="newer"/> + <radio_item label="Şundan daha eski:" name="older"/> + </radio_group> <spinner label="Saat Önce" name="spin_hours_ago"/> <spinner label="Gün Önce" name="spin_days_ago"/> <button label="Kapat" label_selected="Kapat" name="Close"/> diff --git a/indra/newview/skins/default/xui/tr/floater_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_item_properties.xml new file mode 100644 index 0000000000..3146384b33 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="ÖĞE ÖZELLİKLERİ"/> diff --git a/indra/newview/skins/default/xui/tr/floater_joystick.xml b/indra/newview/skins/default/xui/tr/floater_joystick.xml index 4a27aac3c1..4a27aac3c1 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_joystick.xml +++ b/indra/newview/skins/default/xui/tr/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml index 736c50be90..a373a95b0c 100644 --- a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml @@ -28,7 +28,7 @@ İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] altında </floater.string> <floater.string name="client_frame_time_warning_msg"> - İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] ile [CLIENT_FRAME_RATE_WARNING] arasınad + İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] ile [CLIENT_FRAME_RATE_WARNING] arasında </floater.string> <floater.string name="client_frame_time_normal_msg"> Normal diff --git a/indra/newview/skins/default/xui/tr/floater_land_holdings.xml b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml index a075a93c1e..a075a93c1e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml index 34c3e28a0b..760948edae 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> KOMUT DOSYASI: [NAME] </floater.string> + <floater.string name="experience_enabled"> + Mevcut deneyimi kaldırmak için kutunun işaretini kaldırın + </floater.string> + <floater.string name="no_experiences"> + Hiçbir deneyim için yetkiniz yok + </floater.string> + <floater.string name="add_experiences"> + Ekleyeceğiniz deneyimi seçin + </floater.string> + <floater.string name="show_experience_profile"> + Deneyim profilini görmek için tıklayın + </floater.string> + <floater.string name="loading"> + Yükleniyor... + </floater.string> <button label="Sıfırla" label_selected="Sıfırla" name="Reset"/> <check_box initial_value="true" label="Çalışıyor" name="running"/> <check_box initial_value="true" label="Mono" name="mono"/> + <check_box label="Deneyimi Kullanın:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml index 0b898d6032..0b898d6032 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/tr/floater_map.xml b/indra/newview/skins/default/xui/tr/floater_map.xml index 7d6c314f04..7d6c314f04 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_map.xml +++ b/indra/newview/skins/default/xui/tr/floater_map.xml diff --git a/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml new file mode 100644 index 0000000000..f4837a300f --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="PAZARYERİ İLANLARI"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Yükleniyor...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml new file mode 100644 index 0000000000..ec563535d1 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Pazaryeri İlanlarını Denetle"> + <button label="Tamam" label_selected="Tamam" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_media_browser.xml b/indra/newview/skins/default/xui/tr/floater_media_browser.xml index 6cce4d59b8..6cce4d59b8 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/tr/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/tr/floater_media_settings.xml b/indra/newview/skins/default/xui/tr/floater_media_settings.xml index 4205a0dbef..4205a0dbef 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/tr/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml index ba87ee99a4..ba87ee99a4 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml index 325d1d9ed9..325d1d9ed9 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml index c00cadd3bd..c00cadd3bd 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_moveview.xml b/indra/newview/skins/default/xui/tr/floater_moveview.xml index 9226218a24..9226218a24 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_moveview.xml +++ b/indra/newview/skins/default/xui/tr/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_mute_object.xml b/indra/newview/skins/default/xui/tr/floater_mute_object.xml index becad38a8e..becad38a8e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/tr/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml index 4d71187a1f..4d71187a1f 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml index 8c62692a88..8c62692a88 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/floater_notification.xml b/indra/newview/skins/default/xui/tr/floater_notification.xml index 89a56348f6..89a56348f6 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_notification.xml +++ b/indra/newview/skins/default/xui/tr/floater_notification.xml diff --git a/indra/newview/skins/default/xui/tr/floater_notifications_console.xml b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml index e4eaf2cf9e..e4eaf2cf9e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/tr/floater_object_weights.xml b/indra/newview/skins/default/xui/tr/floater_object_weights.xml index b57943f666..b57943f666 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/tr/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/tr/floater_openobject.xml b/indra/newview/skins/default/xui/tr/floater_openobject.xml index 9980aee97f..3876439428 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_openobject.xml +++ b/indra/newview/skins/default/xui/tr/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Envantere Kopyala" label_selected="Envantere Kopyala" name="copy_to_inventory_button"/> - <button label="Kopyala ve Giy" label_selected="Kopyala ve Giy" name="copy_and_wear_button"/> + <text name="border_note"> + Envantere kopyala ve giy + </text> + <button label="Dış görünüme ekle" label_selected="Dış görünüme ekle" name="copy_and_wear_button"/> + <button label="Dış görünümü değiştir" label_selected="Dış görünümü değiştir" name="copy_and_replace_button"/> + <button label="Sadece envantere kopyala" label_selected="Sadece envantere kopyala" name="copy_to_inventory_button"/> + <button label="İptal" label_selected="İptal" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml index 7a9f507c93..7a9f507c93 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml index 7ba4580f4f..7ba4580f4f 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml index f38d8c84c6..f38d8c84c6 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml index 6eecc7fb77..6eecc7fb77 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml index 2e416c9311..2e416c9311 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml index 6604e5c37a..63334db910 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_pay.xml +++ b/indra/newview/skins/default/xui/tr/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Gruba Öde - </string> - <string name="payee_resident"> - Sakine Öde - </string> - <text name="payee_name"> - Kırpmayı Kontrol İçin Test Adı Çok Uzun - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - veya tutarı seç: - </text> - <button label="Öde" label_selected="Öde" name="pay btn"/> - <button label="İptal" label_selected="İptal" name="cancel btn"/> + <string name="payee_group">Gruba Öde</string> + <string name="payee_resident">Sakine Öde</string> + <text name="paying_text">Ödeyeceğiniz miktar:</text> + <text name="payee_name">Kırpmayı Kontrol İçin Test Adı Çok Uzun</text> + <panel label="Ara" name="PatternsPanel"> + <button label="1 L$ Öde" label_selected="1 L$ Öde" name="fastpay 1"/> + <button label="5 L$ Öde" label_selected="5 L$ Öde" name="fastpay 5"/> + <button label="10 L$ Öde" label_selected="10 L$ Öde" name="fastpay 10"/> + <button label="20 L$ Öde" label_selected="20 L$ Öde" name="fastpay 20"/> + </panel> + <panel label="Ara" name="InputPanel"> + <text name="amount text">Diğer bir tutar:</text> + <button label="Öde" label_selected="Öde" name="pay btn"/> + <button label="İptal" label_selected="İptal" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_pay_object.xml b/indra/newview/skins/default/xui/tr/floater_pay_object.xml index 7772d3b101..d736ededfd 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/tr/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Gruba Öde - </string> - <string name="payee_resident"> - Sakine Öde - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - Nesne yoluyla: - </text> + <string name="payee_group">Gruba Öde</string> + <string name="payee_resident">Sakine Öde</string> + <text name="paying_text">Ödeyeceğiniz miktar:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">Nesne yoluyla:</text> <icon name="icon_object" tool_tip="Nesneler"/> - <text name="object_name_text"> - Harika nesnem gerçekten uzun bir adla - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - veya tutarı seç: - </text> - <button label="Öde" label_selected="Öde" name="pay btn"/> - <button label="İptal" label_selected="İptal" name="cancel btn"/> + <text name="object_name_text">Harika nesnem gerçekten uzun bir adla</text> + <panel label="Ara" name="PatternsPanel"> + <button label="1 L$ Öde" label_selected="1 L$ Öde" name="fastpay 1"/> + <button label="5 L$ Öde" label_selected="5 L$ Öde" name="fastpay 5"/> + <button label="10 L$ Öde" label_selected="10 L$ Öde" name="fastpay 10"/> + <button label="20 L$ Öde" label_selected="20 L$ Öde" name="fastpay 20"/> + </panel> + <panel label="Ara" name="InputPanel"> + <text name="amount text">Diğer bir tutar:</text> + <button label="Öde" label_selected="Öde" name="pay btn"/> + <button label="İptal" label_selected="İptal" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_people.xml b/indra/newview/skins/default/xui/tr/floater_people.xml index 94a27bff57..94a27bff57 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_people.xml +++ b/indra/newview/skins/default/xui/tr/floater_people.xml diff --git a/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml index 669b833c26..669b833c26 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml index 513a2e319a..513a2e319a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_picks.xml +++ b/indra/newview/skins/default/xui/tr/floater_picks.xml diff --git a/indra/newview/skins/default/xui/tr/floater_places.xml b/indra/newview/skins/default/xui/tr/floater_places.xml index 4e09a699f6..4e09a699f6 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_places.xml +++ b/indra/newview/skins/default/xui/tr/floater_places.xml diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml index 5e419f8ffa..5e419f8ffa 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_post_process.xml +++ b/indra/newview/skins/default/xui/tr/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml index edb3c19b81..edb3c19b81 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preferences.xml +++ b/indra/newview/skins/default/xui/tr/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml index 1c462e6ebf..1c462e6ebf 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml index 23b4848333..23b4848333 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml index dc6f66f657..dc6f66f657 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml index 23391249d1..23391249d1 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preview_sound.xml b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml index 50874f024a..50874f024a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml index 79e184130a..79e184130a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml index 5cdd25b64c..5cdd25b64c 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/tr/floater_publish_classified.xml b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml index 572892667b..572892667b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml index e2a5e8e86a..e2a5e8e86a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/tr/floater_region_info.xml b/indra/newview/skins/default/xui/tr/floater_region_info.xml index 2b2e00161b..2b2e00161b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_region_info.xml +++ b/indra/newview/skins/default/xui/tr/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml index ea598a5669..28bacca763 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml @@ -67,7 +67,7 @@ <combo_box.item label="Arazi > Tecavüz > Nesneler veya dokular" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="Arazi > Tecavvüz > Parçacıklar" name="Land__Encroachment__Particles"/> <combo_box.item label="Arazi > Tecavvüz > Ağaçlar/bitkiler" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="Bahis veya Kumar" name="Wagering_gambling"/> + <combo_box.item label="Oyun Politikası İhlali" name="Wagering_gambling"/> <combo_box.item label="Diğer" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug.xml b/indra/newview/skins/default/xui/tr/floater_script_debug.xml index baf0aabd85..baf0aabd85 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/tr/floater_script_limits.xml b/indra/newview/skins/default/xui/tr/floater_script_limits.xml index 875599bde3..875599bde3 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/tr/floater_script_preview.xml b/indra/newview/skins/default/xui/tr/floater_script_preview.xml index e193f7c1af..e193f7c1af 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_script_queue.xml b/indra/newview/skins/default/xui/tr/floater_script_queue.xml index c1d98b717a..c1d98b717a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/tr/floater_script_search.xml b/indra/newview/skins/default/xui/tr/floater_script_search.xml index 54b1d20c8c..54b1d20c8c 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_script_search.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/tr/floater_search.xml b/indra/newview/skins/default/xui/tr/floater_search.xml index 08c1e5162c..08c1e5162c 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_search.xml +++ b/indra/newview/skins/default/xui/tr/floater_search.xml diff --git a/indra/newview/skins/default/xui/tr/floater_select_key.xml b/indra/newview/skins/default/xui/tr/floater_select_key.xml index b828672ec2..b828672ec2 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_select_key.xml +++ b/indra/newview/skins/default/xui/tr/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/tr/floater_sell_land.xml b/indra/newview/skins/default/xui/tr/floater_sell_land.xml index 9bea1e120e..9bea1e120e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/tr/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/tr/floater_settings_debug.xml b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml index 65264c57d7..65264c57d7 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/tr/floater_snapshot.xml b/indra/newview/skins/default/xui/tr/floater_snapshot.xml index 3f588522eb..be6c58e8cf 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/tr/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> Bilgisayara kaydedilemedi. </string> - <button name="advanced_options_btn" tool_tip="Gelişmiş seçenekler"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] px - </text> - <text name="file_size_label"> - [SIZE] KB - </text> + <button label="YENİLE" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - GELİŞMİŞ SEÇENEKLER - </text> <text name="layer_type_label"> Yakala: </text> @@ -68,4 +59,10 @@ <combo_box.item label="Filtre Yok" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] px (genişlik) x [HEIGHT] px (yükseklik) + </text> + <text name="file_size_label"> + [SIZE] KB + </text> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml index 470a222d7e..470a222d7e 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/tr/floater_sound_preview.xml b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml index 1938f184b3..1938f184b3 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/tr/floater_spellcheck.xml b/indra/newview/skins/default/xui/tr/floater_spellcheck.xml index f5f0ba8fd9..f5f0ba8fd9 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/tr/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml index ded71cad40..ded71cad40 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml index 1ae42ad382..1ae42ad382 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_stats.xml +++ b/indra/newview/skins/default/xui/tr/floater_stats.xml diff --git a/indra/newview/skins/default/xui/tr/floater_sys_well.xml b/indra/newview/skins/default/xui/tr/floater_sys_well.xml index 301d9af063..301d9af063 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/tr/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/tr/floater_telehub.xml b/indra/newview/skins/default/xui/tr/floater_telehub.xml index 2cdb464ed0..2cdb464ed0 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_telehub.xml +++ b/indra/newview/skins/default/xui/tr/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml index b479d5f6d6..b479d5f6d6 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml index fcb7d87287..fcb7d87287 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml index 42483c09e1..42483c09e1 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml index 42426225c7..42426225c7 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml index 56df06f83b..56df06f83b 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_tools.xml +++ b/indra/newview/skins/default/xui/tr/floater_tools.xml diff --git a/indra/newview/skins/default/xui/tr/floater_top_objects.xml b/indra/newview/skins/default/xui/tr/floater_top_objects.xml index 19420c68e3..013e8d7ce1 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/tr/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> Hiçbiri bulunamadı. </floater.string> + <floater.string name="URLs"> + URL'ler + </floater.string> + <floater.string name="memory"> + Bellek (KB) + </floater.string> <text name="title_text"> Yükleniyor... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="Sahip" name="owner"/> <scroll_list.columns label="Konum" name="location"/> <scroll_list.columns label="Parsel" name="parcel"/> - <scroll_list.columns label="Süre" name="time"/> + <scroll_list.columns label="Tarih" name="time"/> <scroll_list.columns label="URL'ler" name="URLs"/> <scroll_list.columns label="Bellek (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml index 7ff0001ddd..7ff0001ddd 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_tos.xml +++ b/indra/newview/skins/default/xui/tr/floater_tos.xml diff --git a/indra/newview/skins/default/xui/tr/floater_toybox.xml b/indra/newview/skins/default/xui/tr/floater_toybox.xml index e60e176643..e60e176643 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_toybox.xml +++ b/indra/newview/skins/default/xui/tr/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/tr/floater_translation_settings.xml b/indra/newview/skins/default/xui/tr/floater_translation_settings.xml index 33ce76bd9a..33ce76bd9a 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/tr/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/tr/floater_twitter.xml b/indra/newview/skins/default/xui/tr/floater_twitter.xml index 3060bd1c84..93c1b0b073 100644 --- a/indra/newview/skins/default/xui/tr/floater_twitter.xml +++ b/indra/newview/skins/default/xui/tr/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="TWITTER"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="OLUŞTUR" name="panel_twitter_photo"/> - <panel label="HESAP" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - Hata - </text> - <text name="connection_loading_text"> - Yükleniyor... - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="OLUŞTUR" name="panel_twitter_photo"/> + <panel label="HESAP" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + Hata + </text> + <text name="connection_loading_text"> + Yükleniyor... + </text> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_url_entry.xml b/indra/newview/skins/default/xui/tr/floater_url_entry.xml index 54c5b047a8..54c5b047a8 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/tr/floater_url_entry.xml diff --git a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml index 5ff0804f17..5ff0804f17 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml index 7a157244cd..7a157244cd 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/tr/floater_web_content.xml b/indra/newview/skins/default/xui/tr/floater_web_content.xml index 93491b80fb..93491b80fb 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_web_content.xml +++ b/indra/newview/skins/default/xui/tr/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml index 1a9f731af0..1a9f731af0 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/tr/floater_window_size.xml b/indra/newview/skins/default/xui/tr/floater_window_size.xml index aff20e7960..aff20e7960 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_window_size.xml +++ b/indra/newview/skins/default/xui/tr/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/tr/floater_world_map.xml b/indra/newview/skins/default/xui/tr/floater_world_map.xml index e4729c2aed..e4729c2aed 100755..100644 --- a/indra/newview/skins/default/xui/tr/floater_world_map.xml +++ b/indra/newview/skins/default/xui/tr/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/tr/inspect_avatar.xml b/indra/newview/skins/default/xui/tr/inspect_avatar.xml index cb3c7e9282..cb3c7e9282 100755..100644 --- a/indra/newview/skins/default/xui/tr/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/tr/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/tr/inspect_group.xml b/indra/newview/skins/default/xui/tr/inspect_group.xml index 9b130c9ef6..9b130c9ef6 100755..100644 --- a/indra/newview/skins/default/xui/tr/inspect_group.xml +++ b/indra/newview/skins/default/xui/tr/inspect_group.xml diff --git a/indra/newview/skins/default/xui/tr/inspect_object.xml b/indra/newview/skins/default/xui/tr/inspect_object.xml index bd09267319..bd09267319 100755..100644 --- a/indra/newview/skins/default/xui/tr/inspect_object.xml +++ b/indra/newview/skins/default/xui/tr/inspect_object.xml diff --git a/indra/newview/skins/default/xui/tr/inspect_remote_object.xml b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml index 4b696b2ae5..4b696b2ae5 100755..100644 --- a/indra/newview/skins/default/xui/tr/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml index dcb4629259..dcb4629259 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml index 0cb233a657..0cb233a657 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml index ff7c718979..c49f817a45 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Görünümüm" name="Change Outfit"/> <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/> <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/> + <menu_item_call label="Konum Yüksekliği" name="Hover Height"/> <menu_item_call label="Arkadaşlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml index dc3724cfc8..dc3724cfc8 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml index 0da328a894..0da328a894 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml index 6996dc612f..4dfa42c347 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Görünümüm" name="Chenge Outfit"/> <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/> <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/> + <menu_item_call label="Konum Yüksekliği" name="Hover Height"/> <menu_item_call label="Arkadaşlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml index d57c43f6c1..d57c43f6c1 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml index 31f77d834a..31f77d834a 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml index 784d809d70..784d809d70 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml index 9480d30029..9480d30029 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_edit.xml b/indra/newview/skins/default/xui/tr/menu_edit.xml index 81cd270af0..81cd270af0 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_edit.xml +++ b/indra/newview/skins/default/xui/tr/menu_edit.xml diff --git a/indra/newview/skins/default/xui/tr/menu_favorites.xml b/indra/newview/skins/default/xui/tr/menu_favorites.xml index 7bb2ed1ddc..7bb2ed1ddc 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_favorites.xml +++ b/indra/newview/skins/default/xui/tr/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml index cb9b678fdd..cb9b678fdd 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_group_plus.xml b/indra/newview/skins/default/xui/tr/menu_group_plus.xml index 82cf7dcf74..82cf7dcf74 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/tr/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml index d1f213516b..d1f213516b 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml index 0396ad8fb5..0396ad8fb5 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml index 60a50b114e..60a50b114e 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml index 0ef4471088..0ef4471088 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml index 69432e967b..69432e967b 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml index d1d3f9ac8d..d1d3f9ac8d 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml index 0655db8196..0655db8196 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml index 2e2b17491a..2e2b17491a 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml index 7239c4be06..784e4d18a4 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="İlan oluştur" name="Marketplace Create Listing"/> + <menu_item_call label="İlanı ilişkilendir" name="Marketplace Associate Listing"/> + <menu_item_call label="İlanı al (yenile)" name="Marketplace Get Listing"/> + <menu_item_call label="Hata kontrolü yap" name="Marketplace Check Listing"/> + <menu_item_call label="İlanı düzenle" name="Marketplace Edit Listing"/> + <menu_item_call label="Listele" name="Marketplace List"/> + <menu_item_call label="Listeden kaldır" name="Marketplace Unlist"/> + <menu_item_call label="Etkinleştir" name="Marketplace Activate"/> + <menu_item_call label="Devre Dışı Bırak" name="Marketplace Deactivate"/> <menu_item_call label="Paylaş" name="Share"/> <menu_item_call label="Satın Al" name="Task Buy"/> <menu_item_call label="Aç" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Ekle" name="Wearable Add"/> <menu_item_call label="Çıkar" name="Take Off"/> <menu_item_call label="Satıcı Giden Kutusuna Kopyala" name="Merchant Copy"/> - <menu_item_call label="Pazaryerine Gönder" name="Marketplace Send"/> + <menu_item_call label="Pazaryeri İlanlarına Kopyala" name="Marketplace Copy"/> + <menu_item_call label="Pazaryeri İlanlarına Taşı" name="Marketplace Move"/> <menu_item_call label="--seçenek yok--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_add.xml b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml index db2a9a2c8c..db2a9a2c8c 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml index 5f3e4e8789..ca66bc98c7 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="En Sonunculara Göre Sırala" name="sort_by_recent"/> <menu_item_check label="Klasörleri Her Zaman Ada Göre Sırala" name="sort_folders_by_name"/> <menu_item_check label="Sistem Klasörlerini Üste Sırala" name="sort_system_folders_to_top"/> - <menu_item_call label="Filtreleri Göster" name="show_filters"/> + <menu_item_call label="Filtreleri Göster..." name="show_filters"/> <menu_item_call label="Filtreleri Sıfırla" name="reset_filters"/> <menu_item_call label="Tüm Klasörleri Kapat" name="close_folders"/> <menu_item_call label="Kaybedip Bulduklarımı Boşalt" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/tr/menu_land.xml b/indra/newview/skins/default/xui/tr/menu_land.xml index d6d8dbf730..d6d8dbf730 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_land.xml +++ b/indra/newview/skins/default/xui/tr/menu_land.xml diff --git a/indra/newview/skins/default/xui/tr/menu_landmark.xml b/indra/newview/skins/default/xui/tr/menu_landmark.xml index c68a2f6a90..c68a2f6a90 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_landmark.xml +++ b/indra/newview/skins/default/xui/tr/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml index ecd29370a5..ecd29370a5 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_login.xml +++ b/indra/newview/skins/default/xui/tr/menu_login.xml diff --git a/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml b/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml new file mode 100644 index 0000000000..c114f50c92 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Stok miktarına göre sırala (düşükten yükseğe)" name="sort_by_stock_amount"/> + <menu_item_check label="Sadece ilan klasörlerini göster" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml index 8d04e645fd..8d04e645fd 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/tr/menu_mini_map.xml b/indra/newview/skins/default/xui/tr/menu_mini_map.xml index 9abe78931e..9abe78931e 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/tr/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml index 51cf29a4de..51cf29a4de 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/tr/menu_navbar.xml b/indra/newview/skins/default/xui/tr/menu_navbar.xml index b05b816e64..b05b816e64 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_navbar.xml +++ b/indra/newview/skins/default/xui/tr/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml index b76a736979..b76a736979 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml index 39c66268f5..39c66268f5 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/tr/menu_object.xml b/indra/newview/skins/default/xui/tr/menu_object.xml index cfc9515d8f..cfc9515d8f 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_object.xml +++ b/indra/newview/skins/default/xui/tr/menu_object.xml diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml index 3d5c68d9d3..3d5c68d9d3 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml index 674041e9c9..674041e9c9 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml index a48529e462..a48529e462 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml diff --git a/indra/newview/skins/default/xui/tr/menu_participant_list.xml b/indra/newview/skins/default/xui/tr/menu_participant_list.xml index 1d56105e1e..1d56105e1e 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/tr/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml index 404fab17e6..404fab17e6 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml index 743b01844d..743b01844d 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml index a1e5ad9a50..a1e5ad9a50 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml index 2d61461c91..2d61461c91 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml index 20695d98e8..20695d98e8 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml index 0ff2111e9e..0ff2111e9e 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml index adfba50138..adfba50138 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/tr/menu_picks.xml b/indra/newview/skins/default/xui/tr/menu_picks.xml index 3e5375ecc0..3e5375ecc0 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_picks.xml +++ b/indra/newview/skins/default/xui/tr/menu_picks.xml diff --git a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml index d9c4fefc97..d9c4fefc97 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/tr/menu_place.xml b/indra/newview/skins/default/xui/tr/menu_place.xml index ad167a328a..ad167a328a 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_place.xml +++ b/indra/newview/skins/default/xui/tr/menu_place.xml diff --git a/indra/newview/skins/default/xui/tr/menu_place_add_button.xml b/indra/newview/skins/default/xui/tr/menu_place_add_button.xml index 8e52b3f7f2..8e52b3f7f2 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/tr/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml index b3a2986160..b3a2986160 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml index 939ee2c7cb..939ee2c7cb 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml index ed60dec63a..ed60dec63a 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/tr/menu_save_outfit.xml b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml index b28488fe30..b28488fe30 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml index 7c1cefc2d1..7c1cefc2d1 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/tr/menu_slurl.xml b/indra/newview/skins/default/xui/tr/menu_slurl.xml index 73ac068b26..73ac068b26 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_slurl.xml +++ b/indra/newview/skins/default/xui/tr/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml index b08423be18..b08423be18 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml index d7ff807c3d..d7ff807c3d 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml index b1e801c123..b1e801c123 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/tr/menu_text_editor.xml b/indra/newview/skins/default/xui/tr/menu_text_editor.xml index 76c7b43e1e..76c7b43e1e 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/tr/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/tr/menu_toolbars.xml b/indra/newview/skins/default/xui/tr/menu_toolbars.xml index c8523a6ec9..c8523a6ec9 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/tr/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/tr/menu_topinfobar.xml b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml index d9b8d50f18..d9b8d50f18 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml index 109cd62495..109cd62495 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_experience.xml b/indra/newview/skins/default/xui/tr/menu_url_experience.xml new file mode 100644 index 0000000000..70ea4e6950 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="SLurl'yi Panoya Kopyala" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_url_group.xml b/indra/newview/skins/default/xui/tr/menu_url_group.xml index 40fa13b4cf..40fa13b4cf 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_group.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_http.xml b/indra/newview/skins/default/xui/tr/menu_url_http.xml index fee8eba150..fee8eba150 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_http.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_inventory.xml b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml index 3b22c5afec..3b22c5afec 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_map.xml b/indra/newview/skins/default/xui/tr/menu_url_map.xml index 770e330516..770e330516 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_map.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml index ae68669605..ae68669605 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_parcel.xml b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml index eac1d743c3..eac1d743c3 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_slapp.xml b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml index a2ecfc6a48..a2ecfc6a48 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_slurl.xml b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml index 3f4e51b36c..3f4e51b36c 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/tr/menu_url_teleport.xml b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml index b7035a4d8f..b7035a4d8f 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index a488a0916f..cea57011dd 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="Yeni Envanter Penceresi" name="NewInventoryWindow"/> <menu_item_call label="Yerler..." name="Places"/> <menu_item_call label="Favoriler..." name="Picks"/> + <menu_item_call label="Deneyimler..." name="Experiences"/> <menu_item_call label="Kamera Denetimleri..." name="Camera Controls"/> <menu label="Hareket" name="Movement"> <menu_item_call label="Otur" name="Sit Down Here"/> <menu_item_check label="Uç" name="Fly"/> <menu_item_check label="Daima Koş" name="Always Run"/> <menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/> - <menu_item_call label="Yürü / koş / uç..." name="Walk / run / fly"/> + <menu_item_call label="Yürü / koş / uç..." name="WalkRunFly"/> </menu> <menu label="Durum" name="Status"> <menu_item_check label="Uzakta" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/> <menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/> + <menu_item_call label="Pazaryeri ilanları..." name="MarketplaceListings"/> <menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/> <menu_item_call label="Tercihler..." name="Preferences"/> <menu_item_call label="Araç çubuğu düğmeleri..." name="Toolbars"/> @@ -46,7 +48,7 @@ <menu_item_check label="Arkadaşlar" name="My Friends"/> <menu_item_check label="Gruplar" name="My Groups"/> <menu_item_check label="Yakındaki kişiler" name="Active Speakers"/> - <menu_item_call label="Engelleme Listesi" name="Block List"/> + <menu_item_check label="Engelleme Listesi" name="Block List"/> <menu_item_check label="Rahatsız Etme" name="Do Not Disturb"/> </menu> <menu label="Dünya" name="World"> @@ -60,7 +62,7 @@ <menu_item_call label="Anlık Görüntü" name="Take Snapshot"/> <menu_item_call label="Profili yerleştir" name="Place Profile"/> <menu_item_call label="Arazi hakkında" name="About Land"/> - <menu_item_call label="Bölge / Gayrimenkul" name="Region/Estate"/> + <menu_item_call label="Bölge / Gayrimenkul" name="RegionEstate"/> <menu_item_call label="Sahip olduğum arazi parçaları..." name="My Land"/> <menu_item_call label="Bu araziyi satın al" name="Buy Land"/> <menu label="Göster" name="LandShow"> @@ -248,6 +250,7 @@ <menu_item_check label="Doku Konsolu" name="Texture Console"/> <menu_item_check label="Hata Ayıklama Konsolu" name="Debug Console"/> <menu_item_call label="Bildirimler Konsolu" name="Notifications"/> + <menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/> <menu_item_check label="Hızlı Zamanlayıcılar" name="Fast Timers"/> <menu_item_check label="Bellek" name="Memory"/> <menu_item_check label="Sahne İstatistikleri" name="Scene Statistics"/> @@ -351,7 +354,7 @@ <menu_item_check label="Nesne Konumlarını Ping İle İnterpole Edin" name="Ping Interpolate Object Positions"/> <menu_item_call label="Paket Bırakın" name="Drop a Packet"/> </menu> - <menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/> + <menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/> <menu label="Kaydedici" name="Recorder"> <menu_item_call label="Oynatmayı Başlat" name="Start Playback"/> <menu_item_call label="Oynatmayı Durdur" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml index 448202df87..448202df87 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml index 438e580cd3..438e580cd3 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml index 9796546559..9796546559 100755..100644 --- a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/tr/mime_types.xml b/indra/newview/skins/default/xui/tr/mime_types.xml index c37f872a65..fa554d34fc 100755..100644 --- a/indra/newview/skins/default/xui/tr/mime_types.xml +++ b/indra/newview/skins/default/xui/tr/mime_types.xml @@ -44,6 +44,14 @@ Bu konumdaki sesi çal </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + İçerik Yok + </label> + <tooltip name="none_tooltip"> + Burada ortam öğesi yok + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Gerçek Zamanlı Akış diff --git a/indra/newview/skins/default/xui/tr/mime_types_linux.xml b/indra/newview/skins/default/xui/tr/mime_types_linux.xml index c37f872a65..fa554d34fc 100755..100644 --- a/indra/newview/skins/default/xui/tr/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/tr/mime_types_linux.xml @@ -44,6 +44,14 @@ Bu konumdaki sesi çal </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + İçerik Yok + </label> + <tooltip name="none_tooltip"> + Burada ortam öğesi yok + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Gerçek Zamanlı Akış diff --git a/indra/newview/skins/default/xui/tr/mime_types_mac.xml b/indra/newview/skins/default/xui/tr/mime_types_mac.xml index c37f872a65..fa554d34fc 100755..100644 --- a/indra/newview/skins/default/xui/tr/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/tr/mime_types_mac.xml @@ -44,6 +44,14 @@ Bu konumdaki sesi çal </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + İçerik Yok + </label> + <tooltip name="none_tooltip"> + Burada ortam öğesi yok + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Gerçek Zamanlı Akış diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index 2364bd5acf..df22251b3d 100755..100644 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -73,6 +73,10 @@ Hata ayrıntıları: '[_NAME]' adlı bildirim notifications.xml içind [MESSAGE] <usetemplate name="okcancelbuttons" notext="İptal" yestext="Evet"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="BadInstallation"> [APP_NAME] güncellenirken bir hata oluştu. Lütfen Görüntüleyici'nin [http://get.secondlife.com son sürümünü karşıdan yükleyin]. <usetemplate name="okbutton" yestext="Tamam"/> @@ -125,6 +129,88 @@ Bir sistem veya ağ hatası nedeniyle Pazaryerine hiçbir klasör gönderilemedi Bir sistem veya ağ hatası nedeniyle Pazaryeri başlatılamadı. Daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="StockPasteFailed"> + Stok Klasörüne kopyalama ya da taşıma başarısız oldu. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantPasteFailed"> + Pazaryeri İlanlarına kopyalama ya da taşıma başarısız oldu. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantTransactionFailed"> + Pazaryerinde yapılan işlem başarısız oldu. Hata kodu: + + Neden: "[ERROR_REASON]" + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Bu ürünü listeleyemiyoruz ya da sürüm klasörünü etkinleştiremiyoruz. Bu sorun genellikle ilan açıklama formunda eksik bilgi olmasından kaynaklanır ama klasör yapısındaki hatalar yüzünden de gerçekleşmiş olabilir. İlanı düzenleyin ya da ilan klasöründe hata olup olmadığını kontrol edin. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantListingFailed"> + İlan Pazaryerinde yayınlanamadı. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Bu sürüm klasörünü etkinleştirilemedi. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Bu eylem, bu ilanın etkin içeriğini değiştirecek. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki etkin bir ilanı değiştirmek istediğimde doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Pazaryeri İlanları penceresine sürüklenen öğeler kopyalanmaz, orijinal konumlarından buraya taşınırlar. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Bir öğeyi envanterden Pazaryerine taşımak istediğimde doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Bir ilan klasörü taşınır veya silinirse, Pazaryerindeki ilanınız silinir. Pazaryeri ilanını saklamak isterseniz, değiştirmek istediğiniz sürüm klasörünün içeriğini taşıyın veya silin. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Bir ilanı Pazaryerine taşımak ya da Pazaryerinden silmek istediğim zaman doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Bu öğelerden birini ya da birden fazlasını Pazaryerine kopyalama izniniz yok. Bunları taşıyabilir veya bırakabilirsiniz. + <usetemplate canceltext="İptal" ignoretext="Kopyalanamaz öğeler içeren bir seçimi Pazaryerine kopyalamaya çalıştığım zaman doğrulama iste" name="yesnocancelbuttons" notext="Öğeleri taşıma" yestext="Öğeleri taşı"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Bu eylem ilanı listeden kaldıracak. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki etkin bir ilanı listeden kaldırmak istediğimde doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Bu eylem, mevcut ilanın sürüm klasörünü devre dışı bırakacak. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki bir ilanın sürüm klasörünü devre dışı bırakmak istediğimde doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Bu ilan güncellenemedi. +Bu öğeyi Pazaryeri üzerinde düzenlemek için [[URL] buraya tıklayın]. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Pazaryeri İlanları klasöründe bulunan giysileri ve vücut bölümlerini kullanamazsınız. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Geçersiz ilan kimliği. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Bu ilanda ya birden fazla sürüm klasörü var ya da hiç sürüm klasörü yok. Daha sonra bir sürüm klasörünü bağımsız olarak seçip etkinleştirmeniz gerekiyor. + <usetemplate ignoretext="Birden fazla sürüm klasörü içeren bir ilan oluşturduğum zaman sürüm klasörünün etkinleştirilmesi hakkında uyar" name="okignore" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Farklı türdeki stok öğelerini ayrı stok klasörlerine yerleştirdik. Böylece klasörünüz listeleyebileceğimiz bir şekilde düzenlenir. + <usetemplate ignoretext="Stok klasörü listelenmeden önce bölündüğünde uyar" name="okignore" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Stok boş olduğu için ilanınızı yayından kaldırdık. İlanı yeniden yayınlamak için stok klasörüne daha fazla birim eklemeniz gerekir. + <usetemplate ignoretext="Bir ilan, stok klasörü boş olduğu için listeden kaldırılınca uyar" name="okignore" yestext="Tamam"/> + </notification> <notification name="CompileQueueSaveText"> Aşağıdaki nedenden dolayı, bir komut dosyası için metin karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin. </notification> @@ -469,6 +555,10 @@ Not: Bu işlem önbelleği temizleyecek. Değişiklikler Kaydedilsin mi? <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/> </notification> + <notification name="DeleteNotecard"> + Not kartı silinsin mi? + <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Mimik kaydedilemedi. Bu mimikte çok fazla adım var. @@ -575,6 +665,9 @@ Grafik Kalitesi, Tercihler > Grafikler sekmesinden yükseltilebilir. <notification name="RegionNoTerraforming"> [REGION] bölgesi yer şekillendirmeye izin vermiyor. </notification> + <notification name="ParcelNoTerraforming"> + [PARCEL] parseli üzerinde yer şekillendirmesi yapma izniniz bulunmuyor. + </notification> <notification name="CannotCopyWarning"> Aşağıdaki öğeleri kopyalamak için gerekli izne sahip değilsiniz: [ITEMS] @@ -1825,6 +1918,30 @@ Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır. Sadece bu gayrimenkul için mi gayrimenkul yöneticiliğinden çıkarılsın, yoksa [ALL_ESTATES] için mi? <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> </notification> + <notification label="Gayrimenkul seç" name="EstateAllowedExperienceAdd"> + Sadece bu gayrimenkul için mi izin verilenler listesine eklensin, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> + <notification label="Gayrimenkul seç" name="EstateAllowedExperienceRemove"> + Yalnızca bu gayrimenkul için mi izin verilenler listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> + <notification label="Gayrimenkul seç" name="EstateBlockedExperienceAdd"> + Yalnızca bu gayrimenkul için mi engellenenler listesine eklensin, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> + <notification label="Gayrimenkul seç" name="EstateBlockedExperienceRemove"> + Yalnızca bu gayrimenkul için mi engellenenler listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> + <notification label="Gayrimenkul seç" name="EstateTrustedExperienceAdd"> + Yalnızca bu gayrimenkul için mi anahtar listesine eklensin, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> + <notification label="Gayrimenkul seç" name="EstateTrustedExperienceRemove"> + Yalnızca bu gayrimenkul için mi anahtar listesine çıkarılsın, yoksa [ALL_ESTATES] için mi? + <usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/> + </notification> <notification label="Çıkarmayı Onayla" name="EstateKickUser"> [EVIL_USER] bu gayrimenkulden çıkarılsın mı? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> @@ -1837,6 +1954,9 @@ Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır. Ziyaret etmeye çalıştığınız bölge, mevcut tercihlerinizi aşan içeriğe sahip. Ben > Tercihler > Genel sekmesini kullanarak tercihlerinizi değiştirebilirsiniz. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Ziyaret etmeye çalıştığınız bölge [REGIONMATURITY] içeriğe sahip, buna sadece yetişkinler erişebilir. <url name="url"> @@ -1899,6 +2019,10 @@ Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır. Tercihleriniz ile sunucu arasında senkronizasyon eksikliği olduğu için ışınlama işleminizde teknik sorunlar yaşanıyoruz. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + Bölgeye girilemiyor. "[REGION_NAME]" bir Yetenek Oyunu Bölgesi. Buraya girebilmek için bazı ölçütleri karşılamanız gerekiyor. Ayrıntılar için lütfen [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ] adresini ziyaret edin. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="PreferredMaturityChanged"> [RATING] içeriğine sahip bir bölgeyi ziyaret edeceğiniz hakkında başka bildirim almayacaksınız. Daha sonra menü çubuğunda Ben > Tercihler > Genel sekmesini kullanarak tercihlerinizi değiştirebilirsiniz. <usetemplate name="okbutton" yestext="Tamam"/> @@ -2120,6 +2244,10 @@ Envanter öğesi/öğeleri taşınsın mı? <ignore name="ignore" text="Para() komut dosyası içermeyen bir nesne oluştururken 'Nesne için ödeme yap' eylemi ayarladım"/> </form> </notification> + <notification name="PayConfirmation"> + [TARGET] hedefine [AMOUNT]L$ ödemek istediğinizi doğrulayın. + <usetemplate ignoretext="Ödeme yapılmadan önce doğrulama iste (200L$ üzerinde tutarlar için)" name="okcancelignore" notext="İptal" yestext="Öde"/> + </notification> <notification name="OpenObjectCannotCopy"> Bu nesne içinde kopyalama izniniz olan bir öğe yok. </notification> @@ -2205,6 +2333,9 @@ Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz? <button ignore="Hiçbir Zaman Değiştirme" name="No" text="İptal"/> </form> </notification> + <notification name="TooManyWearables"> + [AMOUNT] öğeden fazlasını içeren bir klasörü kullanamazsınız. Bu limiti Gelişmiş > Hata Ayıklama Ayarlarını Göster > KullanılabilirKlasörLimiti öğesinden değiştirebilirsiniz. + </notification> <notification label="Rahatsız Etme Modu Uyarısı" name="DoNotDisturbModePay"> Rahatsız Etme seçeneğini devreye aldınız. Bu ödemenin karşılığında sunulan hiçbir öğeyi almayacaksınız. @@ -2657,9 +2788,6 @@ Lütfen biraz sonra tekrar deneyin. <notification name="NoValidCircuit"> Geçerli bir devre kodu yok. </notification> - <notification name="NoValidTimestamp"> - Geçerli bir zaman damgası yok. - </notification> <notification name="NoPendingConnection"> Beklemedeki bağlantı oluşturulamıyor. </notification> @@ -2814,7 +2942,7 @@ Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak. [MESSAGE] -Şu nesneden: <nolink>[OBJECTNAME]</nolink>, sahibi: [NAME]? +Kaynak nesne: <nolink>[OBJECTNAME]</nolink>, sahibi: [NAME] <form name="form"> <button name="Gotopage" text="Sayfaya git"/> <button name="Cancel" text="İptal"/> @@ -2840,6 +2968,72 @@ Kabul ediyor musunuz? <button name="Mute" text="Engelle"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + Yeni bir deneyim edinilemiyor: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + Deneyimin sahibi seçili grubun bir üyesi olmadığı için, deneyim grubunda yapılan bir değişiklik göz ardı edildi. + </notification> + <notification name="UneditableExperienceProfileMessage"> + Deneyim profili güncellenirken, düzenlenebilir olmayan "[field]" alanı göz ardı edildi. + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + Yalnızca deneyimin sahibi tarafından ayarlanabilecek olan "[field]" alanında yapılan değişiklikler göz ardı edildi. + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + Bir deneyimin erişkinlik seviyesini deneyimin sahibinin seviyesinden daha yüksek bir seviyeye ayarlayamazsınız. + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + Aşağıdaki koşullar deneyim profili adının ve/veya açıklamasının güncellenmesini engelledi: [extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + secondlife:///app/experience/[public_id]/profile deneyimini kaldırdığınız için [region_name] bölgesinden dışarı ışınlandınız ve artık bu bölgeye girme hakkınız yok. + <form name="form"> + <ignore name="ignore" text="Bir deneyim kaldırıldığı için bölgeden çıkarıldı"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + secondlife:///app/experience/[public_id]/profile anahtar deneyimine katılarak [region_name] bölgesine giriş izni aldınız. Bu deneyimin kaldırılması bu bölgeden çıkarılmanıza neden olabilir. + <form name="form"> + <ignore name="ignore" text="Bir deneyim bir bölgeye girme izni verdi"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + Bu hedef konuma erişim izniniz yok. Aşağıdaki bir deneyimi kabul ederek bölgeye giriş izni kazanabilirsiniz: + +[EXPERIENCE_LIST] + +Başka Anahtar Deneyimler de olabilir. + </notification> + <notification name="ExperienceEvent"> + secondlife:///app/experience/[public_id]/profile deneyimiyle [EventType] için bir nesneye izin verildi. + Sahibi: secondlife:///app/agent/[OwnerID]/inspect + Nesne Adı: [ObjectName] + Parsel Adı: [ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + secondlife:///app/experience/[public_id]/profile deneyimiyle [EventType] için bir eke izin verildi. + Sahibi: secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + '<nolink>[OBJECTNAME]</nolink>', "[NAME]" adlı kişiye ait bir nesne, [GRID_WIDE] deneyimine katılmanızı istiyor: + +[EXPERIENCE] + +İzin verildikten sonra, deneyim profilinden iptal edilmedikçe, bu deneyim için bu iletiyi bir daha görmezsiniz. + +Bu deneyimle ilişkili komut dosyaları deneyimin etkin olduğu bölgelerde aşağıdaki eylemleri gerçekleştirebilecek: + +[QUESTIONS]Kabul ediyor musunuz? + <form name="form"> + <button name="BlockExperience" text="Deneyimi Engelle"/> + <button name="Mute" text="Nesneyi Engelle"/> + <button name="Yes" text="Evet"/> + <button name="No" text="Hayır"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> Uyarı: '<nolink>[OBJECTNAME]</nolink>' nesnesi, Linden Dolar hesabınıza tam erişim istiyor. Eğer erişime izin verirseniz, süregelen bir şekilde, ilave uyarı olmaksızın, hesabınızdan herhangi bir zamanda fon çekebilir veya hesabınızı tamamen boşaltabilir. @@ -3159,6 +3353,10 @@ Lütfen ağ ve güvenlik duvarı ayarlarınızı kontrol edin. ( [EXISTENCE] saniyedir hayatta ) '[BODYREGION]' için [RESOLUTION] çözünürlükte kaydedilmiş bir dokuyu [TIME] saniye sonra yerel olarak güncellediniz. </notification> + <notification name="CannotUploadTexture"> + Doku karşıya yüklenemiyor. +[REASON] + </notification> <notification name="LivePreviewUnavailable"> Kopyalanamaz ve/veya aktarılamaz olduğu için bu dokunun bir önizlemesini görüntüleyemiyoruz. <usetemplate ignoretext="Kopyalanamayan ve/veya aktarılamayan dokular için Canlı Önizleme modu mevcut olmayınca beni uyar" name="okignore" yestext="Tamam"/> @@ -3727,9 +3925,11 @@ Lütfen bir dakika sonra tekrar deneyin. </notification> <notification name="TeleportedByAttachment"> You have been teleported by an attachment on [ITEM_ID] + <usetemplate ignoretext="Işınlama: Bir ek tarafından ışınlandınız" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> '[PARCEL_NAME]' parseli üzerindeki '[OBJECT_NAME]' nesnesi tarafından ışınlandınız + <usetemplate ignoretext="Işınlama: Bir parsel üzerindeki bir nesne tarafından ışınlandınız" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sahibi [OWNER_ID] olan '[OBJECT_NAME]' nesnesi tarafından ışınlandınız @@ -4061,7 +4261,7 @@ Daha küçük bir arazi parçası seçmeyi deneyin. <usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/> </notification> <notification name="DefaultObjectPermissions"> - Aşağıdaki nedenden dolayı, varsayılan izinler kaydedilirken bir sorun oluştu: [REASON]. Varsayılan izinleri ayarlamayı lütfen daha sonra tekrar deneyin. + Varsayılan nesne izinleri kaydedilirken bir sorun oluştu: [REASON]. Varsayılan izinleri kaydetmeyi lütfen daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/tr/panel_active_object_row.xml b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml index b03ce3ebe5..b03ce3ebe5 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml index 602818de94..602818de94 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml index f330bd85e8..f330bd85e8 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml index 81e04379a1..81e04379a1 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml index 87b67e249e..87b67e249e 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml index f991c3b688..f991c3b688 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml index 6c2478cdb7..6c2478cdb7 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml index 5d7006af2f..5d7006af2f 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/tr/panel_chat_header.xml b/indra/newview/skins/default/xui/tr/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/tr/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml index a1e8190bbc..a1e8190bbc 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_classified_info.xml b/indra/newview/skins/default/xui/tr/panel_classified_info.xml index d412a03e32..d412a03e32 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/tr/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml index bb5930ee79..bb5930ee79 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml index e60e291ee8..e60e291ee8 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml index 7d70177553..7d70177553 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml index 47703136b0..47703136b0 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml index 28e034a357..28e034a357 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml index e3ba806b0d..e3ba806b0d 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_classified.xml b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml index 7584b754f1..7584b754f1 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml index 42f62b6bbe..42f62b6bbe 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml index be89e94bbf..be89e94bbf 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_hair.xml b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml index f33a6d6402..f33a6d6402 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml index 10bc4278db..10bc4278db 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pants.xml b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml index 06e1b7b4ab..06e1b7b4ab 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_physics.xml b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml index 98dbfd8e42..98dbfd8e42 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml index 98b02d27df..98b02d27df 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_profile.xml b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml index 21f4e419bc..21f4e419bc 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shape.xml b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml index 57cd9aca75..57cd9aca75 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml index 2dd417afc6..2dd417afc6 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml index 34acb414b0..34acb414b0 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skin.xml b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml index fdf75100ed..fdf75100ed 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml index 2099013fe1..2099013fe1 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_socks.xml b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml index d386814d31..d386814d31 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml index 7f5590a485..7f5590a485 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml index ed003e1adf..ed003e1adf 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml index e0a0be8abb..e0a0be8abb 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml index 7a4a09aaed..7a4a09aaed 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/tr/panel_experience_info.xml b/indra/newview/skins/default/xui/tr/panel_experience_info.xml new file mode 100644 index 0000000000..0bce4fea8f --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="Deneyim Profili"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + Konum: + </text> + <text name="LocationTextText"> + bir yer + </text> + <button label="Işınla" name="teleport_btn"/> + <button label="Harita" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + Pazar yeri mağazası: + </text> + <text name="LocationTextText"> + bir yer + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + Seviye: + </text> + <text name="ContentRatingText"> + Yetişkin + </text> + <text name="Owner"> + Sahip: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="Düzenle" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/tr/panel_experience_list_editor.xml new file mode 100644 index 0000000000..5379fe4548 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + yükleniyor... + </panel.string> + <panel.string name="panel_allowed"> + İzin Verilen Deneyimler: + </panel.string> + <panel.string name="panel_blocked"> + Engellenen Deneyimler: + </panel.string> + <panel.string name="panel_trusted"> + Anahtar Deneyimler: + </panel.string> + <panel.string name="no_results"> + (boş) + </panel.string> + <text name="text_name"> + Deneyim Listesi + </text> + <scroll_list name="experience_list"> + <columns label="Ad" name="experience_name"/> + </scroll_list> + <button label="Ekle..." name="btn_add"/> + <button label="Kaldır" name="btn_remove"/> + <button label="Profil..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_experience_list_item.xml b/indra/newview/skins/default/xui/tr/panel_experience_list_item.xml new file mode 100644 index 0000000000..b904295f97 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + Geçici Ad + </text> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_experience_log.xml b/indra/newview/skins/default/xui/tr/panel_experience_log.xml new file mode 100644 index 0000000000..600530cf2d --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="Olay yok."/> + <string name="loading" value="yükleniyor..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="Süre" name="time"/> + <columns label="Etkinlik" name="event"/> + <columns label="Deneyim" name="experience_name"/> + <columns label="Nesne" name="object_name"/> + </scroll_list> + <button label="Bildir" name="btn_notify"/> + <button label="Profil" name="btn_profile_xp"/> + <button label="Raporla" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="Tüm Olayları Bildir Gün" name="notify_all"/> + <button label="Temizle" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_experience_search.xml b/indra/newview/skins/default/xui/tr/panel_experience_search.xml new file mode 100644 index 0000000000..7cc2bd1223 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + "[TEXT]" bulunamadı + </string> + <string name="no_results"> + Sonuç yok + </string> + <string name="searching"> + Arıyor... + </string> + <string name="loading"> + Yükleniyor... + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="Git" name="find"/> + <icons_combo_box label="Orta" name="maturity"> + <icons_combo_box.item label="Yetişkin" name="Adult" value="42"/> + <icons_combo_box.item label="Orta" name="Mature" value="21"/> + <icons_combo_box.item label="Genel" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="Ad" name="experience_name"/> + <columns label="Sahip" name="owner"/> + </scroll_list> + <button label="Tamam" label_selected="Tamam" name="ok_btn"/> + <button label="İptal" name="cancel_btn"/> + <button label="Profili Görüntüle" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_experiences.xml b/indra/newview/skins/default/xui/tr/panel_experiences.xml new file mode 100644 index 0000000000..15be61aad2 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="Deneyimler yükleniyor..."/> + <string name="no_experiences" value="Deneyim yok."/> + <string name="acquire" value="Bir Deneyim Edin"/> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_facebook_friends.xml b/indra/newview/skins/default/xui/tr/panel_facebook_friends.xml index 0a6b9ac600..8184d6d7cf 100644 --- a/indra/newview/skins/default/xui/tr/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/tr/panel_facebook_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_friends"> <string name="facebook_friends_empty" value="Şu an için aynı zamanda bir Second Life sakini olan hiçbir Facebook arkadaşınız yok. Facebook arkadaşlarınızı bugün Second Life'a katılmaya davet edin!"/> - <string name="facebook_friends_no_connected" value="Şu anda Facebook'a bağlı değilsiniz. Bağlanmak ve bu özelliği etkinleştirmek için lütfen Hesap sekmesine gidin."/> + <string name="facebook_friends_no_connected" value="Şu anda Facebook'a bağlı değilsiniz. Bağlanmak ve bu özelliği etkinleştirmek için lütfen Durum sekmesine gidin."/> <accordion name="friends_accordion"> <accordion_tab name="tab_second_life_friends" title="SL arkadaşları"/> <accordion_tab name="tab_suggested_friends" title="Bu kişileri SL arkadaşları olarak ekle"/> diff --git a/indra/newview/skins/default/xui/tr/panel_facebook_photo.xml b/indra/newview/skins/default/xui/tr/panel_facebook_photo.xml index 64732c5fc7..d772aff937 100644 --- a/indra/newview/skins/default/xui/tr/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/tr/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> - <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> - <combo_box.item label="Filtre Yok" name="NoFilter"/> - </combo_box> - <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> - <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> - <text name="caption_label"> - Yorum (isteğe bağlı): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Yayınla" name="post_photo_btn"/> - <button label="İptal" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> + <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> + <combo_box.item label="Filtre Yok" name="NoFilter"/> + </combo_box> + <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> + <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> + <text name="caption_label"> + Yorum (isteğe bağlı): + </text> + <button label="Yayınla" name="post_photo_btn"/> + <button label="İptal" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_facebook_place.xml b/indra/newview/skins/default/xui/tr/panel_facebook_place.xml index 54c392c9d8..85b401a1a0 100644 --- a/indra/newview/skins/default/xui/tr/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/tr/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - Bulunduğunuz yer hakkında bir şeyler söyleyin: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="Yayınla" name="post_place_btn"/> - <button label="İptal" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + Bulunduğunuz yer hakkında bir şeyler söyleyin: + </text> + <check_box initial_value="false" label="Konumun üstten görünümünü ekle" name="add_place_view_cb"/> + <button label="Yayınla" name="post_place_btn"/> + <button label="İptal" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_facebook_status.xml b/indra/newview/skins/default/xui/tr/panel_facebook_status.xml index 9b95fe3a35..e6feff5949 100644 --- a/indra/newview/skins/default/xui/tr/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/tr/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - Ne düşünüyorsunuz? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="Yayınla" name="post_status_btn"/> - <button label="İptal" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="Facebook'a şu kimlikle bağlandınız:"/> + <string name="facebook_disconnected" value="Facebook'a bağlanılmadı"/> + <text name="account_caption_label"> + Facebook'a bağlanılmadı. + </text> + <panel name="panel_buttons"> + <button label="Bağlan..." name="connect_btn"/> + <button label="Bağlantıyı kes" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Facebook'ta içerik yayınlama hakkında bilgi edinin] + </text> + </panel> + <text name="status_caption_label"> + Ne düşünüyorsunuz? + </text> + <button label="Yayınla" name="post_status_btn"/> + <button label="İptal" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml b/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml index 9ebc70c67c..cab1b24621 100644 --- a/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> - <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> - <combo_box.item label="Filtre Yok" name="NoFilter"/> - </combo_box> - <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> - <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> - <text name="title_label"> - Başlık: - </text> - <text name="description_label"> - Açıklama: - </text> - <check_box initial_value="true" label="Açıklamanın sonuna SL konumunu ekle" name="add_location_cb"/> - <text name="tags_label"> - Etiketler: - </text> - <text name="tags_help_label"> - Etiketleri boşlukla ayır + <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> + <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> + <combo_box.item label="Filtre Yok" name="NoFilter"/> + </combo_box> + <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> + <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> + <text name="title_label"> + Başlık: + </text> + <text name="description_label"> + Açıklama: + </text> + <check_box initial_value="true" label="Açıklamanın sonuna SL konumunu ekle" name="add_location_cb"/> + <text name="tags_label"> + Etiketler: + </text> + <text name="tags_help_label"> + Etiketleri boşlukla ayır Birden çok kelime içeren etiketler için "" kullan - </text> - <combo_box name="rating_combobox" tool_tip="Filckr içerik seviyesi"> - <combo_box.item label="Güvenli Flickr seviyesi" name="SafeRating"/> - <combo_box.item label="Orta Flickr seviyesi" name="ModerateRating"/> - <combo_box.item label="Kısıtlı Flickr seviyesi" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Karşıya Yükle" name="post_photo_btn"/> - <button label="İptal" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Filckr içerik seviyesi"> + <combo_box.item label="Güvenli Flickr seviyesi" name="SafeRating"/> + <combo_box.item label="Orta Flickr seviyesi" name="ModerateRating"/> + <combo_box.item label="Kısıtlı Flickr seviyesi" name="RestrictedRating"/> + </combo_box> + <button label="Karşıya Yükle" name="post_photo_btn"/> + <button label="İptal" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml index 58bb68a5c3..58bb68a5c3 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_general.xml b/indra/newview/skins/default/xui/tr/panel_group_general.xml index 0462026249..0462026249 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml index e4697eaa21..d72bb2cf31 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="Roller ve Üyeler"/> <accordion_tab name="group_notices_tab" title="Bildirimler"/> <accordion_tab name="group_land_tab" title="Arazi/Varlıklar"/> + <accordion_tab name="group_experiences_tab" title="Deneyimler"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/tr/panel_group_invite.xml b/indra/newview/skins/default/xui/tr/panel_group_invite.xml index 77c4db2cdc..77c4db2cdc 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_land_money.xml b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml index e9112a862b..e9112a862b 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml index f44d2b5e76..f44d2b5e76 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_notices.xml b/indra/newview/skins/default/xui/tr/panel_group_notices.xml index 179b5fff69..179b5fff69 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_notify.xml b/indra/newview/skins/default/xui/tr/panel_group_notify.xml index bcc5482daa..bcc5482daa 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/tr/panel_group_roles.xml b/indra/newview/skins/default/xui/tr/panel_group_roles.xml index 59a48bbdc2..59a48bbdc2 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml index aebdc6b48d..aebdc6b48d 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/tr/panel_instant_message.xml b/indra/newview/skins/default/xui/tr/panel_instant_message.xml index cf9bc7fccb..cf9bc7fccb 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/tr/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/tr/panel_inventory_item.xml b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml index 2cad753f25..2cad753f25 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/tr/panel_landmarks.xml b/indra/newview/skins/default/xui/tr/panel_landmarks.xml index d40d0c1543..d40d0c1543 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/tr/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml index ce1519be89..8b320ce9aa 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_login.xml +++ b/indra/newview/skins/default/xui/tr/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Kullanıcı Adı" name="username_combo" tool_tip="Kaydolduğunuzda seçtiğiniz kullanıcı adı, örn. mustafayalcin12 veya Faruk Gungoren"/> <line_editor label="Parola" name="password_edit"/> - <check_box label="Beni hatırla" name="remember_check"/> - <text name="forgot_password_text"> - Parolamı unuttum - </text> - <button label="Oturum Aç" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - son konumum - </text> <combo_box label="Sık kullandığım yerler" name="start_location_combo"> + <combo_box.item label="Son konumum" name="MyLastLocation"/> <combo_box.item label="Ana konumum" name="MyHome"/> </combo_box> - <button label="Oturum Aç" name="connect_favorite_btn"/> - <line_editor label="Bir yer adı yazın" name="location_edit"/> - <button label="Oturum Aç" name="connect_location_btn"/> + <button label="Oturum Aç" name="connect_btn"/> + <check_box label="Beni hatırla" name="remember_check"/> + <text name="forgot_password_text">Parolamı unuttum</text> <combo_box label="Ağ seç" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml index c69fb39130..c69fb39130 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml new file mode 100644 index 0000000000..50acc0f92a --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Pazaryeri" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Seçenekleri görüntüleyin/sıralayın"/> + <button name="add_btn" tool_tip="Yeni bir ilan klasörü oluşturun"/> + <button label="Hatalara Karşı Kontrol Et" name="audit_btn" tool_tip="Pazaryeri ilanlarınızı kontrol edin"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Pazaryeri İlanlarını Filtrele" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..8d857d20f0 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TÜMÜ" name="All Items" tool_tip="Öğeleri listelemek için buraya sürükleyin ve bırakın"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..c647a11246 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="LİSTELENMİŞ" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..ec9213ff35 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="İLİŞKİLENDİRİLMEMİŞ" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..d8c1b0a6d0 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="LİSTELENMEMİŞ" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml index 4b911c9ce6..4b911c9ce6 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_me.xml +++ b/indra/newview/skins/default/xui/tr/panel_me.xml diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml index 89e78b75de..89e78b75de 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml index 6c0b14a889..6c0b14a889 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml index da3ca1bd29..da3ca1bd29 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml index 8d43e3fb5a..8d43e3fb5a 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml index d238388b0e..d238388b0e 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml index 7d191191c4..7d191191c4 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_media.xml b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml index a654b2ac14..a654b2ac14 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml index b893da2a71..b893da2a71 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml b/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml index fdc489f375..fdc489f375 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml index a947eee150..a947eee150 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml index 00cd49abcd..00cd49abcd 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml index 550f7ebf10..550f7ebf10 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml index d222f1a6e3..d222f1a6e3 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml index 60a3576d84..60a3576d84 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml index 462926738f..462926738f 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml index b499ec8307..b499ec8307 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_people.xml +++ b/indra/newview/skins/default/xui/tr/panel_people.xml diff --git a/indra/newview/skins/default/xui/tr/panel_pick_info.xml b/indra/newview/skins/default/xui/tr/panel_pick_info.xml index f2bbfac232..f2bbfac232 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/tr/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/tr/panel_picks.xml b/indra/newview/skins/default/xui/tr/panel_picks.xml index 26beac7854..26beac7854 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_picks.xml +++ b/indra/newview/skins/default/xui/tr/panel_picks.xml diff --git a/indra/newview/skins/default/xui/tr/panel_place_profile.xml b/indra/newview/skins/default/xui/tr/panel_place_profile.xml index f42cde0ace..f42cde0ace 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/tr/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/tr/panel_places.xml b/indra/newview/skins/default/xui/tr/panel_places.xml index c2a3acf9c5..c2a3acf9c5 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_places.xml +++ b/indra/newview/skins/default/xui/tr/panel_places.xml diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_message.xml b/indra/newview/skins/default/xui/tr/panel_postcard_message.xml index 2361f4c1c3..2361f4c1c3 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/tr/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml index bce0b21b9a..e1443217e8 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Özel" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Genişlik" name="postcard_snapshot_width"/> - <spinner label="Yükseklik" name="postcard_snapshot_height"/> - <check_box label="Oranları koru" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Görüntü kalitesi" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Genişlik x Yükseklik" name="postcard_snapshot_width"/> + <check_box label="Oranları koru" name="postcard_keep_aspect_check"/> + <slider label="Kalite:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml index 82c7b87c9a..82c7b87c9a 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml index 46a4793c53..46a4793c53 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml index d46f3e08cc..d46f3e08cc 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml index f6e9d0948c..f6e9d0948c 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml index 2c05e8a47a..2c05e8a47a 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml index 25c9e966c7..25c9e966c7 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml index c35eaec9c3..c35eaec9c3 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml index 185d557567..185d557567 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml index 2039761748..acb20595f7 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> Web: </text> - <radio_group name="use_external_browser"> - <radio_item label="Tarayıcımı kullan (IE, Firefox, Safari)" name="external" tool_tip="Yardım, web bağlantıları vs. için sistemin varsayılan web tarayıcısını kullanın. Tam ekran çalıştırılıyorsa tavsiye edilmez." value="true"/> - <radio_item label="Yerleşik tarayıcıyı kullan" name="internal" tool_tip="Yardım, web bağlantıları vs. için dahili web tarayıcısını kullanın. Bu tarayıcı [APP_NAME] içerisinde yeni bir pencere olarak açılır." value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="Tüm bağlantılar için kendi tarayıcımı kullan (Chrome, Firefox, IE)" name="internal" tool_tip="Yardım, web bağlantıları vb. için sistemin varsayılan web tarayıcısını kullanın. Tam ekran çalıştırılıyorsa tavsiye edilmez." value="0"/> + <radio_item label="Yerleşik tarayıcıyı yalnızca Second Life bağlantıları için kullan" name="external" tool_tip="Yardım, web bağlantıları vb. için sistemin varsayılan web tarayıcısını kullanın. Yerleşik tarayıcı yalnızca LindenLab/SecondLife bağlantıları için kullanılır." value="1"/> </radio_group> <check_box initial_value="true" label="Eklentileri etkinleştir" name="browser_plugins_enabled"/> <check_box initial_value="true" label="Çerezleri kabul et" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml index 9256f1d324..9256f1d324 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml diff --git a/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml index 0433d03450..0433d03450 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_covenant.xml b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml index 5c46365aea..5c46365aea 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_debug.xml b/indra/newview/skins/default/xui/tr/panel_region_debug.xml index ec654aae82..ec654aae82 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_environment.xml b/indra/newview/skins/default/xui/tr/panel_region_environment.xml index 058ea91b70..058ea91b70 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_estate.xml b/indra/newview/skins/default/xui/tr/panel_region_estate.xml index 4a9028643f..4a9028643f 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_experiences.xml b/indra/newview/skins/default/xui/tr/panel_region_experiences.xml new file mode 100644 index 0000000000..406995c359 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Deneyimler" name="Experiences"> + <panel.string name="trusted_estate_text"> + Her Deneyim bir Anahtar olabilir. + +Bu gayrimenkul üzerinde Anahtar Deneyimlerin çalıştırılma izni var. + +Ek olarak, gayrimenkul genel erişime izin vermiyorsa, herhangi bir Anahtar Deneyime katılan Sakinler gayrimenkule girebilir ve bir Anahtar Deneyime dahil oldukları sürece burada kalabilirler. + </panel.string> + <panel.string name="allowed_estate_text"> + Yalnızca Arazi Kapsamındaki Deneyimlere İzin Verilebilir. + +Bu gayrimenkul üzerinde İzin Verilen Deneyimlerin çalıştırılma izni var. + </panel.string> + <panel.string name="blocked_estate_text"> + Yalnızca Ağ Kapsamındaki Deneyimler Engellenebilir. + +Bu gayrimenkul üzerinde Engellenmiş Deneyimler çalıştırılamaz. + </panel.string> + <panel.string name="estate_caption"> + Bu sekmedeki ayarlarda yapılan değişiklikler gayrimenkul içerisindeki tüm bölgeleri etkiler. + </panel.string> + <panel.string name="allowed_parcel_text"> + Yalnızca Arazi Kapsamındaki Deneyimlere İzin Verilebilir. + +Gayrimenkul tarafından engellenmemişlerse, İzin Verilen Deneyimlerin bu parsel üzerinde çalıştırılma izni vardır. + </panel.string> + <panel.string name="blocked_parcel_text"> + Sakinlerin Tüm Deneyimleri Engellenebilir. + +Engellenmiş Deneyimler bu parselde çalıştırılamaz. + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_region_general.xml b/indra/newview/skins/default/xui/tr/panel_region_general.xml index e6abef883d..e6abef883d 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/tr/panel_region_terrain.xml b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml index 3226ee008e..3226ee008e 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/tr/panel_script_ed.xml b/indra/newview/skins/default/xui/tr/panel_script_ed.xml index 83040d06e4..83040d06e4 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/tr/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/tr/panel_script_experience.xml b/indra/newview/skins/default/xui/tr/panel_script_experience.xml new file mode 100644 index 0000000000..1e7054c310 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="DENEYİM"> + <button label="Deneyim" name="Expand Experience"/> + <check_box label="Deneyimi Kullanır" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="Deneyimi Seç..." name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + Hiçbir deneyimde katkınız yok. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml index c821dc45c1..c821dc45c1 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml index 2994aba39b..2994aba39b 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml b/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml index aabdc7358b..aabdc7358b 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml index b9c39ef8cb..b9c39ef8cb 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml index e3b22c639a..160cba8700 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - Envanterime Kaydet + Envanter </text> <text name="hint_lbl"> Bir görüntüyü envanterinize kaydetmenin maliyeti L$[UPLOAD_COST] olur. Görüntünüzü bir doku olarak kaydetmek için kare formatlardan birini seçin. @@ -13,8 +13,8 @@ <combo_box.item label="Büyük (512x512)" name="Large(512x512)"/> <combo_box.item label="Özel" name="Custom"/> </combo_box> - <spinner label="Genişlik" name="inventory_snapshot_width"/> - <spinner label="Yükseklik" name="inventory_snapshot_height"/> + <spinner label="Genişlik x Yükseklik" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="Oranları koru" name="inventory_keep_aspect_check"/> <button label="İptal" name="cancel_btn"/> <button label="Kaydet" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml index 87d7677d73..a28e390ee5 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Bilgisayarıma Kaydet + Disk </text> <combo_box label="Çözünürlük" name="local_size_combo"> <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Özel" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Genişlik" name="local_snapshot_width"/> - <spinner label="Yükseklik" name="local_snapshot_height"/> - <check_box label="Oranları koru" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Format" name="local_format_combo"> - <combo_box.item label="PNG (Kayıpsız)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (Kayıpsız)" name="BMP"/> - </combo_box> - <slider label="Görüntü kalitesi" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Genişlik x Yükseklik" name="local_snapshot_width"/> + <check_box label="Oranları koru" name="local_keep_aspect_check"/> + <text name="local_format_label"> + Format: + </text> + <combo_box label="Format" name="local_format_combo"> + <combo_box.item label="PNG (Kayıpsız)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (Kayıpsız)" name="BMP"/> + </combo_box> + <slider label="Kalite:" name="image_quality_slider"/> <button label="İptal" name="cancel_btn"/> <flyout_button label="Kaydet" name="save_btn" tool_tip="Görüntüyü bir dosyaya kaydet"> <flyout_button.item label="Kaydet" name="save_item"/> diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml index 4bc1098ce9..db29e6908c 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="Profil Akışımda Yayınla" name="save_to_profile_btn"/> - <button label="E-posta" name="save_to_email_btn"/> - <button label="Envanterime Kaydet (L$[AMOUNT])" name="save_to_inventory_btn"/> - <button label="Bilgisayarıma Kaydet" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - Gönder: [secondlife:/// Facebook] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// Twitter] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="Diske Kaydet" name="save_to_computer_btn"/> + <button label="Envantere Kaydet (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Profile Yükle" name="save_to_profile_btn"/> + <button label="Facebook'a Yükle" name="send_to_facebook_btn"/> + <button label="Twitter'a Yükle" name="send_to_twitter_btn"/> + <button label="Flickr'a Yükle" name="send_to_flickr_btn"/> + <button label="E-postayla Gönder" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml index e999678a0d..ecb47b2218 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml @@ -12,6 +12,10 @@ <text name="title"> E-posta </text> - <button label="İleti" name="message_btn"/> - <button label="Ayarlar" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="İleti" name="panel_postcard_message"/> + <panel label="Ayarlar" name="panel_postcard_settings"/> + </tab_container> + <button label="İptal" name="cancel_btn"/> + <button label="Gönder" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml index 334fd52a48..ed8f25f255 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - Profil Akışımda Yayınla + Profil </text> <combo_box label="Çözünürlük" name="profile_size_combo"> <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Özel" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Genişlik" name="profile_snapshot_width"/> - <spinner label="Yükseklik" name="profile_snapshot_height"/> - <check_box label="Oranları koru" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Resim yazısı: - </text> - <check_box initial_value="true" label="Konumu dahil et" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Genişlik x Yükseklik" name="profile_snapshot_width"/> + <check_box label="Oranları koru" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Resim yazısı: + </text> + <check_box initial_value="true" label="Konumu dahil et" name="add_location_cb"/> <button label="İptal" name="cancel_btn"/> <button label="Yayınla" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_sound_devices.xml b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml index 982ef2ea3b..982ef2ea3b 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml index 91d07a3b0c..91d07a3b0c 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml index 178cbda4a2..9e2669ec2b 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Paket Kaybı - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bant genişliği - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Paket Kaybı</panel.string> + <panel.string name="bandwidth_tooltip">Bant genişliği</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-425" name="balance_bg" width="215"> - <text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$20"/> + <text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$??"/> <button label="L$ Satın Al" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/> <button label="Alışveriş yap" name="goShop" tool_tip="Second Life Pazaryeri Aç" width="95"/> </panel> - <text name="TimeText" tool_tip="Geçerli zaman (Pasifik)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Geçerli zaman (Pasifik)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Tüm Ortam Öğelerini Başlat/Durdur (Müzik, Video, Web sayfaları)"/> <button name="volume_btn" tool_tip="Küresel Ses Kontrolü"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml index f5b1175029..f5b1175029 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml index 311cee53c6..311cee53c6 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/tr/panel_twitter_photo.xml b/indra/newview/skins/default/xui/tr/panel_twitter_photo.xml index 966e9b906d..511ecb690d 100644 --- a/indra/newview/skins/default/xui/tr/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/tr/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - Neler oluyor? - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="SL konumunu dahil et" name="add_location_cb"/> - <check_box initial_value="true" label="Fotoğraf ekle" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> - <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> - <combo_box.item label="Filtre Yok" name="NoFilter"/> - </combo_box> - <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> - <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="Tweet" name="post_photo_btn"/> - <button label="İptal" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + Neler oluyor? + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="SL konumunu dahil et" name="add_location_cb"/> + <check_box initial_value="true" label="Fotoğraf ekle" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="Görüntü çözünürlüğü"> + <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="Görüntü filtreleri"> + <combo_box.item label="Filtre Yok" name="NoFilter"/> + </combo_box> + <button label="Yenile" name="new_snapshot_btn" tool_tip="Yenilemek için tıklayın"/> + <button label="Önizleme" name="big_preview_btn" tool_tip="Önizleme ayarları arasında geçiş yapmak için tıklayın"/> + <button label="Tweet" name="post_photo_btn"/> + <button label="İptal" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml index b46833d7e6..b46833d7e6 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml index 0c8c7b68b5..0c8c7b68b5 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/tr/panel_world_map.xml b/indra/newview/skins/default/xui/tr/panel_world_map.xml index 5595c13a7c..5595c13a7c 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_world_map.xml +++ b/indra/newview/skins/default/xui/tr/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml index 8f063122dc..a7e381d6a0 100755..100644 --- a/indra/newview/skins/default/xui/tr/role_actions.xml +++ b/indra/newview/skins/default/xui/tr/role_actions.xml @@ -71,4 +71,8 @@ <action description="Grup Sesli Sohbetine Katıl" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli sohbet oturumlarına katılabilir. NOT: Sesli sohbet oturumuna erişim için Grup Sohbetine Katıl yeteneği gereklidir." name="join voice chat" value="27"/> <action description="Grup Sohbetini Yönet" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli ve yazılı sohbet oturumlarına errişimi ve katılımı kontrol edebilir." name="moderate group chat" value="37"/> </action_set> + <action_set description="Bu Yetenekler'e, grubun sahip olduğu deneyimleri değiştirme gücü de dahildir." name="experience_tools_experience"> + <action description="Deneyim Yöneticisi" longdescription="Bu yeteneğe sahip bir roldeki üyeler bir deneyimin meta verilerini düzenleyebilirler." name="experience admin" value="49"/> + <action description="Deneyim Yardımcısı" longdescription="Bu yeteneğe sahip bir roldeki üyeler bir deneyimin komut dizilerine katkıda bulunabilirler." name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml index b632f21cf5..b632f21cf5 100755..100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml index 3241d52c81..3241d52c81 100755..100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml index 86b684c497..92d57deb12 100755..100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="Öğe Profili"> + <panel.string name="loading_experience"> + (yükleniyor) + </panel.string> <panel.string name="unknown"> (bilinmiyor) </panel.string> @@ -43,6 +46,9 @@ <text name="LabelAcquiredTitle"> Alınan: </text> + <text name="LabelItemExperienceTitle"> + Deneyim: + </text> <panel name="perms_inv"> <text name="perm_modify"> Şunu yapabilirsiniz: @@ -66,8 +72,9 @@ <check_box label="Aktar" name="CheckNextOwnerTransfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/> </panel> <check_box label="Satılık" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Kopyala" name="Copy"/> + <combo_box.item label="İçerik" name="Contents"/> <combo_box.item label="Orijinal" name="Original"/> </combo_box> <spinner label="Fiyat: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml index 9a4cf54fa7..ddb4bbf160 100755..100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Nesne Profili"> - <panel.string name="text deed continued"> - Devret - </panel.string> - <panel.string name="text deed"> - Devret - </panel.string> - <panel.string name="text modify info 1"> - Bu nesneyi değiştirebilirsiniz - </panel.string> - <panel.string name="text modify info 2"> - Bu nesneleri değiştirebilirsiniz - </panel.string> - <panel.string name="text modify info 3"> - Bu nesneyi değiştiremezsiniz - </panel.string> - <panel.string name="text modify info 4"> - Bu nesneleri değiştiremezsiniz - </panel.string> - <panel.string name="text modify info 5"> - Bir bölge sınırı üzerinden bu nesneyi değiştiremezsiniz - </panel.string> - <panel.string name="text modify info 6"> - Bir bölge sınırı üzerinden bu nesneleri değiştiremezsiniz - </panel.string> - <panel.string name="text modify warning"> - Bu nesne bağlantılı parçalara sahip - </panel.string> - <panel.string name="Cost Default"> - Fiyat: L$ - </panel.string> - <panel.string name="Cost Total"> - Toplam Fiyat: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Birim Fiyatı: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Karma Fiyat - </panel.string> - <panel.string name="Sale Mixed"> - Karma Satış - </panel.string> + <panel.string name="text deed continued">Devret</panel.string> + <panel.string name="text deed">Devret</panel.string> + <panel.string name="text modify info 1">Bu nesneyi değiştirebilirsiniz</panel.string> + <panel.string name="text modify info 2">Bu nesneleri değiştirebilirsiniz</panel.string> + <panel.string name="text modify info 3">Bu nesneyi değiştiremezsiniz</panel.string> + <panel.string name="text modify info 4">Bu nesneleri değiştiremezsiniz</panel.string> + <panel.string name="text modify info 5">Bir bölge sınırı üzerinden bu nesneyi değiştiremezsiniz</panel.string> + <panel.string name="text modify info 6">Bir bölge sınırı üzerinden bu nesneleri değiştiremezsiniz</panel.string> + <panel.string name="text modify warning">Bu nesne bağlantılı parçalara sahip</panel.string> + <panel.string name="Cost Default">Fiyat: L$</panel.string> + <panel.string name="Cost Total">Toplam Fiyat: L$</panel.string> + <panel.string name="Cost Per Unit">Birim Fiyatı: L$</panel.string> + <panel.string name="Cost Mixed">Karma Fiyat</panel.string> + <panel.string name="Sale Mixed">Karma Satış</panel.string> <text name="title" value="Nesne Profili"/> <text name="where" value="(SL Dünyası)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Ad: - </text> - <text name="Description:"> - Açıklama: - </text> - <text name="CreatorNameLabel"> - Oluşturan: - </text> - <text name="Owner:"> - Sahip: - </text> - <text name="Group_label"> - Grup: - </text> + <text name="Name:">Ad:</text> + <text name="Description:">Açıklama:</text> + <text name="CreatorNameLabel">Oluşturan:</text> + <text name="Owner:">Sahip:</text> + <text name="Group_label">Grup:</text> <button name="button set group" tool_tip="Bu nesnenin izinlerini paylaşmak için bir grup seçin"/> <name_box initial_value="Yükleniyor..." name="Group Name Proxy"/> <button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiğinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/> - <text name="label click action"> - Şu eylem için tıklayın: - </text> + <text name="label click action">Şu eylem için tıklayın:</text> <combo_box name="clickaction"> <combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/> <combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Yakınlaştır" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Bu nesneyi değiştirebilirsiniz - </text> - <text name="Anyone can:"> - Herkes: - </text> + <text name="perm_modify">Bu nesneyi değiştirebilirsiniz</text> + <text name="Anyone can:">Herkes:</text> <check_box label="Kopyala" name="checkbox allow everyone copy"/> <check_box label="Hareket Et" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grup: - </text> + <text name="GroupLabel">Grup:</text> <check_box label="Paylaş" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/> - <text name="NextOwnerLabel"> - Sonraki sahip: - </text> + <text name="NextOwnerLabel">Sonraki sahip:</text> <check_box label="Değiştir" name="checkbox next owner can modify"/> <check_box label="Kopyala" name="checkbox next owner can copy"/> <check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Fiyat: L$" name="Edit Cost"/> <check_box label="Aramada göster" name="search_check" tool_tip="Kişiler arama sonuçlarında bu nesneyi görebilsin"/> - <text name="pathfinding_attributes_label"> - Yol bulma özellikleri: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Yol bulma özellikleri:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Aç" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index c4fc76fe29..18a133a447 100755..100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -38,7 +38,7 @@ Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin! </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]] </string> <string name="AboutCompiler"> @@ -449,30 +449,51 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="TooltipMustSingleDrop"> Buraya sadece bir öğe sürüklenebilir. </string> + <string name="TooltipTooManyWearables"> + [AMOUNT] öğeden fazlasını içeren bir klasörü kullanamazsınız. Bu limiti Gelişmiş > Hata Ayıklama Ayarlarını Göster > KullanılabilirKlasörLimiti öğesinden değiştirebilirsiniz. + </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - Satıcı giden kutunuzda öğeler oluşturamazsınız + Pazaryeri İlanları klasöründen öğe oluşturamazsınız + </string> + <string name="TooltipOutboxWorn"> + Üzerinizde bulunan öğeleri Pazaryeri İlanları klasörüne koyamazsınız + </string> + <string name="TooltipOutboxFolderLevels"> + İç içe geçmiş klasörlerin derinliği [AMOUNT] değerini geçiyor. İç içe geçmiş klasörlerin derinliğini azaltın; gerekirse öğeleri kutu içine alın. + </string> + <string name="TooltipOutboxTooManyFolders"> + Alt klasör sayısı [AMOUNT] değerini geçiyor. İlanınızdaki klasör sayısını azaltın; gerekirse öğeleri kutu içine alın. + </string> + <string name="TooltipOutboxTooManyObjects"> + Öğe sayısı [AMOUNT] değerini geçiyor. Bir ilanda [AMOUNT] öğeden fazlasını satmak için bazılarını kutu içine almalısınız. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Stok öğelerinin sayısı [AMOUNT] değerini geçiyor. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Öğeleri veya klasörleri sadece TÜMÜ sekmesine bırakabilirsiniz. Lütfen bu sekmeyi seçin ve öğelerinizi ya da klasörlerinizi yeniden taşıyın. </string> <string name="TooltipOutboxNoTransfer"> - Bu nesnelerden bir veya daha fazlası satılamaz veya aktarılamaz. + Bu nesnelerden bir veya daha fazlası satılamaz veya aktarılamaz </string> <string name="TooltipOutboxNotInInventory"> - Satıcı giden kutunuza sadece doğrudan kendi envanterinizden öğeler koyabilirsiniz + Pazaryerine sadece envanterinizdeki öğelerden koyabilirsiniz </string> - <string name="TooltipOutboxWorn"> - Giymekte olduğunuz öğeleri Satıcı giden kutunuza koyamazsınız. + <string name="TooltipOutboxLinked"> + Bağlı öğeleri veya klasörleri Pazaryerine koyamazsınız </string> <string name="TooltipOutboxCallingCard"> - Satıcı giden kutunuza arama kartları koyamazsınız + Arama kartlarını Pazaryerine koyamazsınız </string> - <string name="TooltipOutboxFolderLevels"> - İç içe geçmiş klasörlerin derinliği üçü geçiyor + <string name="TooltipOutboxDragActive"> + Listeye alınmış bir ilanı taşıyamazsınız </string> - <string name="TooltipOutboxTooManyFolders"> - Üst seviyedeki klasördeki alt klasör sayısı 20'yi geçiyor + <string name="TooltipOutboxCannotMoveRoot"> + Pazaryeri ilanları kök klasörünü taşıyamazsınız </string> - <string name="TooltipOutboxTooManyObjects"> - Üst seviyedeki klasördeki öğe sayısı 200'ü geçiyor + <string name="TooltipOutboxMixedStock"> + Bir stok klasöründeki tüm öğelerin tipi ve izni aynı olmalıdır </string> <string name="TooltipDragOntoOwnChild"> Bir klasörü alt klasörüne taşıyamazsınız @@ -1057,9 +1078,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="AgentNameSubst"> (Siz) </string> - <string name="JoinAnExperience"> - Bir tecrübeye katıl - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Gayri menkul erişim listelerini yönetirken uyarıları bastır </string> @@ -1126,6 +1145,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="bitmap_image_files"> Bitmap Görüntüler </string> + <string name="png_image_files"> + PNG Görüntüleri + </string> + <string name="save_texture_image_files"> + Targa veya PNG Görüntüleri + </string> <string name="avi_movie_file"> AVI Film Dosyası </string> @@ -1375,6 +1400,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="FavoritesNoMatchingItems"> Bir yer imini favorilerinize eklemek için buraya sürükleyin. </string> + <string name="MarketplaceNoMatchingItems"> + Öğe bulunamadı. Arama dizenizin yazımını kontrol edin ve yeniden deneyin. + </string> <string name="InventoryNoTexture"> Envanterinizde bu dokunun kopyası yok </string> @@ -1422,29 +1450,95 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] Mağazası] hata döndürüyor. </string> + <string name="InventoryMarketplaceError"> + Bu özellik şu anda Beta aşamasında. Katılmak istiyorsanız lütfen adınızı bu [http://goo.gl/forms/FCQ7UXkakz Google formuna] ekleyin. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Pazaryeri İlanları klasörünüz boş. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Klasörleri [[MARKETPLACE_DASHBOARD_URL] Pazaryerinde] satılık olarak listelemek için bu alana sürükleyin. + </string> + <string name="Marketplace Validation Warning Stock"> + stok klasörü bir sürüm klasöründe bulunmalıdır + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Hata: Bir stok klasöründeki tüm öğeler aynı tipte ve kopyalanamaz olmalıdır + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Hata: stok klasörü alt klasörler içeremez + </string> + <string name="Marketplace Validation Warning Empty"> + : Uyarı: Klasör hiçbir öğe içermiyor + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Uyarı: stok klasörü oluşturuluyor + </string> + <string name="Marketplace Validation Warning Create Version"> + : Uyarı: sürüm klasörü oluşturuluyor + </string> + <string name="Marketplace Validation Warning Move"> + : Uyarı: Öğeler taşınıyor + </string> + <string name="Marketplace Validation Warning Delete"> + : Uyarı: klasör içeriği stok klasörüne aktarıldı, boş klasör kaldırılıyor + </string> + <string name="Marketplace Validation Error Stock Item"> + : Hata: Kopyalanamaz öğeler stok klasöründe saklanmalıdır + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Uyarı: Öğeler bir sürüm klasöründe bulunmalıdır + </string> + <string name="Marketplace Validation Error"> + : Hata: + </string> + <string name="Marketplace Validation Warning"> + : Uyarı: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Uyarı: sürüm klasörü en az 1 öğe içermelidir + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Uyarı: Stok klasörü en az 1 öğe içermelidir + </string> + <string name="Marketplace Validation No Error"> + Raporlanacak hiçbir hata ya da uyarı yok + </string> <string name="Marketplace Error None"> Hata yok </string> + <string name="Marketplace Error Prefix"> + Hata: + </string> <string name="Marketplace Error Not Merchant"> - Hata: Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirlemelisiniz (ücretsizdir). + Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirtmeniz gerekir (ücretsizdir). </string> - <string name="Marketplace Error Empty Folder"> - Hata: Bu klasörün içeriği boş. + <string name="Marketplace Error Not Accepted"> + Öğe bu klasöre taşınamıyor. </string> - <string name="Marketplace Error Unassociated Products"> - Hata: Bu öğe karşıya yüklenemedi çünkü satıcı hesabınızda ürünlerle ilişkisiz çok fazla öğe mevcut. Bu hatayı düzeltmek için Pazaryeri web sitesine oturum açın ve ilişkisiz öğe sayınızı azaltın. + <string name="Marketplace Error Unsellable Item"> + Bu öğe Pazaryerinde satılamaz. </string> - <string name="Marketplace Error Object Limit"> - Hata: Bu öğe çok fazla nesne içeriyor. Bu hatayı düzeltmek için nesneleri birlikte kutulara yerleştirerek, toplam nesne sayısını 200'ün altına düşürün. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - Hata: Bu öğede çok fazla iç içe geçmiş klasör seviyesi var. Bunu tekrar düzenleyerek maksimum 3 iç içe geçmiş klasör seviyesine indirin. + <string name="MarketplaceLive"> + listelenmiş </string> - <string name="Marketplace Error Unsellable Item"> - Hata: Bu öğe Pazaryerinde satılamaz. + <string name="MarketplaceActive"> + etkin </string> - <string name="Marketplace Error Internal Import"> - Hata: Bu öğede bir sorun var. Daha sonra tekrar deneyin. + <string name="MarketplaceMax"> + maks. + </string> + <string name="MarketplaceStock"> + stok + </string> + <string name="MarketplaceNoStock"> + stokta kalmadı + </string> + <string name="MarketplaceUpdating"> + güncelleniyor... </string> <string name="Open landmarks"> Açık yer imleri @@ -1465,6 +1559,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. İçerik yok </string> <string name="WornOnAttachmentPoint" value="([ATTACHMENT_POINT] üzerinde giyilmiş)"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (etkin)"/> <string name="PermYes"> Evet @@ -1735,6 +1830,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="Invalid Attachment"> Geçersiz Aksesuar Noktası </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Hata: eksik öğe + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Hata: Eksik temel öğe + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Hata: Nesne mevcut dış görünüme dahil ama eklenmemiş + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS]'lık </string> @@ -1903,6 +2007,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="SaveComplete"> Kaydetme tamamlandı. </string> + <string name="UploadFailed"> + Dosya karşıya yüklenemedi: + </string> <string name="ObjectOutOfRange"> Komut dosyası (nesne kapsam dışı) </string> @@ -1912,6 +2019,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="GroupsNone"> hiçbiri </string> + <string name="CompileNoExperiencePerm"> + [SCRIPT] komut dizisi [EXPERIENCE] deneyimiyle atlanıyor. + </string> <string name="Group" value="(grup)"/> <string name="Unknown"> (Bilinmiyor) @@ -5073,6 +5183,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Marketplace_Label"> Pazaryeri </string> + <string name="Command_MarketplaceListings_Label"> + Pazaryeri + </string> <string name="Command_MiniMap_Label"> Mini-harita </string> @@ -5160,6 +5273,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Marketplace_Tooltip"> Alışveriş yap </string> + <string name="Command_MarketplaceListings_Tooltip"> + Oluşturduğunuz öğeleri satın + </string> <string name="Command_MiniMap_Tooltip"> Yakındaki kişileri göster </string> @@ -5283,4 +5399,85 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="loading_chat_logs"> Yükleniyor... </string> + <string name="experience_tools_experience"> + Deneyim + </string> + <string name="ExperienceNameNull"> + (deneyim yok) + </string> + <string name="ExperienceNameUntitled"> + (başlıksız deneyim) + </string> + <string name="Land-Scope"> + Arazi Kapsamında + </string> + <string name="Grid-Scope"> + Ağ Kapsamında + </string> + <string name="Allowed_Experiences_Tab"> + İZİN VERİLEN + </string> + <string name="Blocked_Experiences_Tab"> + ENGELLENMİŞ + </string> + <string name="Contrib_Experiences_Tab"> + KATKIDA BULUNAN + </string> + <string name="Admin_Experiences_Tab"> + YÖNETİCİ + </string> + <string name="Recent_Experiences_Tab"> + SON + </string> + <string name="Owned_Experiences_Tab"> + SAHİBİ + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES], maks. [MAXEXPERIENCES]) + </string> + <string name="ExperiencePermission1"> + kontrollerinizi ele alma + </string> + <string name="ExperiencePermission3"> + avatarınızdaki animasyonları tetikleme + </string> + <string name="ExperiencePermission4"> + avatarınıza ekleme + </string> + <string name="ExperiencePermission9"> + kameranızı takip etmek + </string> + <string name="ExperiencePermission10"> + kameranızı kontrol etme + </string> + <string name="ExperiencePermission11"> + sizi ışınlama + </string> + <string name="ExperiencePermission12"> + deneyim izinlerini otomatik olarak kabul et + </string> + <string name="ExperiencePermissionShortUnknown"> + bilinmeyen bir işlem gerçekleştirdi: [Permission] + </string> + <string name="ExperiencePermissionShort1"> + Kontrolü Al + </string> + <string name="ExperiencePermissionShort3"> + Animasyonları Tetikle + </string> + <string name="ExperiencePermissionShort4"> + Ekle + </string> + <string name="ExperiencePermissionShort9"> + Kamera Takibi + </string> + <string name="ExperiencePermissionShort10"> + Kamera Kontrolü + </string> + <string name="ExperiencePermissionShort11"> + Işınla + </string> + <string name="ExperiencePermissionShort12"> + İzin + </string> </strings> diff --git a/indra/newview/skins/default/xui/tr/teleport_strings.xml b/indra/newview/skins/default/xui/tr/teleport_strings.xml index 20d09b1ee2..e3a08e04b2 100755..100644 --- a/indra/newview/skins/default/xui/tr/teleport_strings.xml +++ b/indra/newview/skins/default/xui/tr/teleport_strings.xml @@ -48,6 +48,9 @@ Bir dakika sonra tekrar deneyin. <message name="MustGetAgeRegion"> Bu bölgeye girebilmek için 18 veya üzeri bir yaşta olmanız gerekir. </message> + <message name="RegionTPSpecialUsageBlocked"> + Bölgeye girilemiyor. "[REGION_NAME]" bir Yetenek Oyunu Bölgesi. Buraya girebilmek için bazı ölçütleri karşılamanız gerekiyor. Ayrıntılar için lütfen [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ] adresini ziyaret edin. + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/skins/default/xui/zh/floater_aaa.xml b/indra/newview/skins/default/xui/zh/floater_aaa.xml index e2d6a2b004..e2d6a2b004 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_aaa.xml +++ b/indra/newview/skins/default/xui/zh/floater_aaa.xml diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 2dfb35fa54..250cbe67e0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -1,71 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="關於 [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - 以 [COMPILER_VERSION] 版本 [COMPILER] 建置 - </floater.string> - <floater.string name="AboutPosition"> - 你的方位是 [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地區名:[REGION],主機:<nolink>[HOSTNAME]</nolink> ([HOSTIP]) -第二人生 URL:<nolink>[SLURL]</nolink> -(全域坐標:[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU:[CPU] -記憶體:[MEMORY_MB] MB -作業系統版本:[OS_VERSION] -顯示卡供應商:[GRAPHICS_CARD_VENDOR] -顯示卡:[GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows 顯示驅動程式版本:[GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL 版本:[OPENGL_VERSION] - -libcurl 版本: [LIBCURL_VERSION] -J2C 解碼器版本: [J2C_VERSION] -音效驅動程式版本: [AUDIO_DRIVER_VERSION] -Qt Webkit 版本: [QT_WEBKIT_VERSION] -語音伺服器版本: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (無) - </floater.string> - <floater.string name="AboutTraffic"> - 封包損失:[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - 擷取伺服器版本說明 URL 時出錯。 - </floater.string> <tab_container name="about_tab"> <panel label="資訊" name="support_panel"> <button label="覆製到剪貼簿" name="copy_btn"/> </panel> <panel label="貸記" name="credits_panel"> - <text name="linden_intro"> - 「第二人生」由以下的 Linden 家族帶給你: - </text> - <text name="contrib_intro"> - 這些人士做了開放源碼的貢獻: - </text> - <text_editor name="contrib_names"> - 執行時期被取代的假名稱 - </text_editor> - <text name="trans_intro"> - 以下人士提供翻譯: - </text> - <text_editor name="trans_names"> - 執行時期被取代的假名稱 - </text_editor> + <text name="linden_intro">Second Life 由以下的 Linden 家族帶給你: +這些人士做了開放源碼的貢獻:</text> + <text_editor name="contrib_names">執行時期被取代的假名稱</text_editor> </panel> <panel label="許可" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -92,8 +37,7 @@ Qt Webkit 版本: [QT_WEBKIT_VERSION] 保留一切權利。 詳情見 licenses.txt。 - 語音聊天音頻技術:Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + 語音聊天音頻技術:Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml index 76db621951..a9d95e5b9b 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_about_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml @@ -331,22 +331,6 @@ <check_box label="安全(無傷害)" name="check safe" tool_tip="若勾選,將把土地設為安全,禁絕傷害性的戰鬥。 若未勾選,則允許傷害性的戰鬥。"/> <check_box label="禁止推撞" name="PushRestrictCheck" tool_tip="禁止使用腳本推撞。 勾選這選項可有效防止你土地上出現滋事行為。"/> <check_box label="將地點刊登顯示在搜尋中(L$30 / 每週)" name="ShowDirectoryCheck" tool_tip="讓其他人可以在搜尋結果中看到這塊地段"/> - <combo_box name="land category with adult"> - <combo_box.item label="任何類別" name="item0"/> - <combo_box.item label="林登位置" name="item1"/> - <combo_box.item label="完全成人" name="item2"/> - <combo_box.item label="藝術與文化" name="item3"/> - <combo_box.item label="商業" name="item4"/> - <combo_box.item label="教育" name="item5"/> - <combo_box.item label="遊戲" name="item6"/> - <combo_box.item label="聚會所" name="item7"/> - <combo_box.item label="歡迎新手光臨" name="item8"/> - <combo_box.item label="公園與自然景觀" name="item9"/> - <combo_box.item label="住宅" name="item10"/> - <combo_box.item label="購物" name="item11"/> - <combo_box.item label="出租" name="item13"/> - <combo_box.item label="其他" name="item12"/> - </combo_box> <combo_box name="land category"> <combo_box.item label="任何類別" name="item0"/> <combo_box.item label="林登位置" name="item1"/> @@ -477,5 +461,6 @@ <button label="移除" label_selected="移除" name="remove_banned"/> </panel> </panel> + <panel label="體驗" name="land_experiences_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_activeim.xml b/indra/newview/skins/default/xui/zh/floater_activeim.xml index b148ca8eb4..b148ca8eb4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_activeim.xml +++ b/indra/newview/skins/default/xui/zh/floater_activeim.xml diff --git a/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml index 76cb9079c4..76cb9079c4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml index ffb0de8a68..756cca825d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml @@ -141,35 +141,35 @@ 表情 </text> <combo_box name="emote_combo" tool_tip="控制動作演繹時臉部的姿態"> - <item label="(無)" name="[None]" value=""/> - <item label="張口吶喊貌" name="Aaaaah" value="張口吶喊貌"/> - <item label="害怕" name="Afraid" value="害怕"/> - <item label="生氣" name="Angry" value="生氣"/> - <item label="燦爛笑容" name="BigSmile" value="燦爛笑容"/> - <item label="無聊" name="Bored" value="無聊"/> - <item label="哭泣" name="Cry" value="哭泣"/> - <item label="鄙視" name="Disdain" value="鄙視"/> - <item label="尷尬" name="Embarrassed" value="尷尬"/> - <item label="皺眉" name="Frown" value="皺眉"/> - <item label="親吻" name="Kiss" value="親吻"/> - <item label="笑" name="Laugh" value="笑"/> - <item label="嫌惡貌" name="Plllppt" value="嫌惡貌"/> - <item label="作噁" name="Repulsed" value="作噁"/> - <item label="傷心" name="Sad" value="傷心"/> - <item label="聳聳肩" name="Shrug" value="聳聳肩"/> - <item label="微笑" name="Smile" value="微笑"/> - <item label="驚喜" name="Surprise" value="驚喜"/> - <item label="眨眼" name="Wink" value="眨眼"/> - <item label="擔心" name="Worry" value="擔心"/> + <item label="(無)" name="[None]"/> + <item label="張口吶喊貌" name="Aaaaah"/> + <item label="害怕" name="Afraid"/> + <item label="生氣" name="Angry"/> + <item label="燦爛笑容" name="BigSmile"/> + <item label="無聊" name="Bored"/> + <item label="哭泣" name="Cry"/> + <item label="鄙視" name="Disdain"/> + <item label="尷尬" name="Embarrassed"/> + <item label="皺眉" name="Frown"/> + <item label="親吻" name="Kiss"/> + <item label="笑" name="Laugh"/> + <item label="嫌惡貌" name="Plllppt"/> + <item label="作噁" name="Repulsed"/> + <item label="傷心" name="Sad"/> + <item label="聳聳肩" name="Shrug"/> + <item label="微笑" name="Smile"/> + <item label="驚喜" name="Surprise"/> + <item label="眨眼" name="Wink"/> + <item label="擔心" name="Worry"/> </combo_box> <text name="preview_label"> 預覽… </text> <combo_box name="preview_base_anim" tool_tip="用這個來測試你的化身從一般動作轉入動作演繹時的情況。"> - <item label="站立" name="Standing" value="站立"/> - <item label="步行中" name="Walking" value="步行中"/> - <item label="坐著" name="Sitting" value="坐著"/> - <item label="飛行" name="Flying" value="飛行"/> + <item label="站立" name="Standing"/> + <item label="步行中" name="Walking"/> + <item label="坐著" name="Sitting"/> + <item label="飛行" name="Flying"/> </combo_box> <spinner label="淡入(秒)" name="ease_in_time" tool_tip="動作攙混植入的時間長度(秒)"/> <spinner label="淡出(秒)" name="ease_out_time" tool_tip="動作攙混淡出的時間長度(秒)"/> diff --git a/indra/newview/skins/default/xui/zh/floater_associate_listing.xml b/indra/newview/skins/default/xui/zh/floater_associate_listing.xml new file mode 100644 index 0000000000..ab0a84dd18 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="聯結刊登"> + <text name="message">刊登 ID:</text> + <line_editor name="listing_id">在此鍵入 ID</line_editor> + <button label="確定" name="OK"/> + <button label="取消" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_auction.xml b/indra/newview/skins/default/xui/zh/floater_auction.xml index 1b589a92cc..1b589a92cc 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_auction.xml +++ b/indra/newview/skins/default/xui/zh/floater_auction.xml diff --git a/indra/newview/skins/default/xui/zh/floater_autoreplace.xml b/indra/newview/skins/default/xui/zh/floater_autoreplace.xml index 4ee07e6295..4ee07e6295 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/zh/floater_autoreplace.xml diff --git a/indra/newview/skins/default/xui/zh/floater_avatar.xml b/indra/newview/skins/default/xui/zh/floater_avatar.xml index 55b1a95a41..55b1a95a41 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar.xml diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml index c19369c859..c19369c859 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml index 69309c96de..69309c96de 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/zh/floater_beacons.xml b/indra/newview/skins/default/xui/zh/floater_beacons.xml index 83e10804d6..83e10804d6 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_beacons.xml +++ b/indra/newview/skins/default/xui/zh/floater_beacons.xml diff --git a/indra/newview/skins/default/xui/zh/floater_build_options.xml b/indra/newview/skins/default/xui/zh/floater_build_options.xml index 29f36b461c..29f36b461c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_build_options.xml +++ b/indra/newview/skins/default/xui/zh/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml index c103ea938f..c103ea938f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml diff --git a/indra/newview/skins/default/xui/zh/floater_bumps.xml b/indra/newview/skins/default/xui/zh/floater_bumps.xml index 2d76a9f831..2d76a9f831 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_bumps.xml +++ b/indra/newview/skins/default/xui/zh/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml index 5e4153de66..5e4153de66 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml index fcf2800728..fcf2800728 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml index ec700ad7af..ec700ad7af 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml index 51bbd6a561..51bbd6a561 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/zh/floater_buy_object.xml b/indra/newview/skins/default/xui/zh/floater_buy_object.xml index ff4a1feedb..ff4a1feedb 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/zh/floater_camera.xml b/indra/newview/skins/default/xui/zh/floater_camera.xml index becb7b9546..becb7b9546 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_camera.xml +++ b/indra/newview/skins/default/xui/zh/floater_camera.xml diff --git a/indra/newview/skins/default/xui/zh/floater_chat_bar.xml b/indra/newview/skins/default/xui/zh/floater_chat_bar.xml index f1a69a7688..f1a69a7688 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/zh/floater_chat_bar.xml diff --git a/indra/newview/skins/default/xui/zh/floater_choose_group.xml b/indra/newview/skins/default/xui/zh/floater_choose_group.xml index 9977bfc828..9977bfc828 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/zh/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/zh/floater_color_picker.xml b/indra/newview/skins/default/xui/zh/floater_color_picker.xml index fa7b795d4f..fa7b795d4f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/zh/floater_critical.xml b/indra/newview/skins/default/xui/zh/floater_critical.xml index 7d08fe8af2..7d08fe8af2 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_critical.xml +++ b/indra/newview/skins/default/xui/zh/floater_critical.xml diff --git a/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml index 4aafb31952..4aafb31952 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml diff --git a/indra/newview/skins/default/xui/zh/floater_destinations.xml b/indra/newview/skins/default/xui/zh/floater_destinations.xml index f50a6a631a..f50a6a631a 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_destinations.xml +++ b/indra/newview/skins/default/xui/zh/floater_destinations.xml diff --git a/indra/newview/skins/default/xui/zh/floater_display_name.xml b/indra/newview/skins/default/xui/zh/floater_display_name.xml index aa71bba769..aa71bba769 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_display_name.xml +++ b/indra/newview/skins/default/xui/zh/floater_display_name.xml diff --git a/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml index b84a4027ea..b84a4027ea 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml diff --git a/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml new file mode 100644 index 0000000000..d7c4728183 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="設定懸浮高度"> + <slider label="高度" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml index 1ff832cdc4..1ff832cdc4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml diff --git a/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml index 7943866e72..7943866e72 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml diff --git a/indra/newview/skins/default/xui/zh/floater_environment_settings.xml b/indra/newview/skins/default/xui/zh/floater_environment_settings.xml index 1c6f2f936d..1c6f2f936d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_environment_settings.xml diff --git a/indra/newview/skins/default/xui/zh/floater_event.xml b/indra/newview/skins/default/xui/zh/floater_event.xml index 7175731fef..7175731fef 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_event.xml +++ b/indra/newview/skins/default/xui/zh/floater_event.xml diff --git a/indra/newview/skins/default/xui/zh/floater_experience_search.xml b/indra/newview/skins/default/xui/zh/floater_experience_search.xml new file mode 100644 index 0000000000..c65b64c98f --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_experience_search.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="experiencepicker" title="選擇體驗"/> diff --git a/indra/newview/skins/default/xui/zh/floater_experienceprofile.xml b/indra/newview/skins/default/xui/zh/floater_experienceprofile.xml new file mode 100644 index 0000000000..4d2b3331d7 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_experienceprofile.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater title="EXPERIENCE PROFILE"> + <floater.string name="empty_slurl"> + (無) + </floater.string> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Light" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Light" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Light" + </floater.string> + <text name="edit_title" value="體驗簡覽"/> + <tab_container name="tab_container"> + <panel name="panel_experience_info"> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel name="top panel"> + <button label="編輯" name="edit_btn"/> + </layout_panel> + <layout_panel name="maturity panel"> + <text name="ContentRating"> + 分級: + </text> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + 位置: + </text> + </layout_panel> + <layout_panel> + <text name="Owner"> + 所有人: + </text> + </layout_panel> + <layout_panel name="group_panel"> + <text name="Group"> + 群組: + </text> + </layout_panel> + <layout_panel name="perm panel"> + <button label="允許" name="allow_btn"/> + <button label="忘記" name="forget_btn"/> + <button label="封鎖" name="block_btn"/> + <text name="privileged"> + 所有居民均可使用這個體驗。 + </text> + <button label="違規舉報" name="report_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> + </panel> + <panel name="edit_panel_experience_info"> + <scroll_container name="edit_xp_scroll"> + <panel name="edit_scrolling_panel"> + <text name="edit_experience_title_label" value="名稱:"/> + <text name="edit_experience_desc_label" value="描述:"/> + <button label="群組" name="Group_btn"/> + <text name="edit_ContentRating"> + 分級: + </text> + <icons_combo_box label="適度成人" name="edit_ContentRatingText" tool_tip="提升體驗的內容分級將會重設所有已允許該體驗的居民的權限。"> + <icons_combo_box.item label="完全成人" name="Adult" value="42"/> + <icons_combo_box.item label="適度成人" name="Mature" value="21"/> + <icons_combo_box.item label="一般" name="PG" value="13"/> + </icons_combo_box> + <text name="edit_Location"> + 位置: + </text> + <button label="設定為目前位置" name="location_btn"/> + <button label="清空位置" name="clear_btn"/> + <check_box label="啟用體驗" name="edit_enable_btn" tool_tip=""/> + <check_box label="不顯現在搜尋結果" name="edit_private_btn"/> + <text name="changes" value="體驗的變更結果可能需要數分鐘才會擴及所有地區。"/> + <button label="返回" name="cancel_btn"/> + <button label="儲存" name="save_btn"/> + </panel> + </scroll_container> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_experiences.xml b/indra/newview/skins/default/xui/zh/floater_experiences.xml new file mode 100644 index 0000000000..995241797e --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_experiences.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_experiences" title="體驗"/> diff --git a/indra/newview/skins/default/xui/zh/floater_facebook.xml b/indra/newview/skins/default/xui/zh/floater_facebook.xml index 9847db9124..9a71a26333 100644 --- a/indra/newview/skins/default/xui/zh/floater_facebook.xml +++ b/indra/newview/skins/default/xui/zh/floater_facebook.xml @@ -1,20 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_facebook" title="發佈到臉書"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="狀態" name="panel_facebook_status"/> - <panel label="相片" name="panel_facebook_photo"/> - <panel label="打卡" name="panel_facebook_place"/> - <panel label="朋友" name="panel_facebook_friends"/> - <panel label="帳號" name="panel_facebook_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - 錯誤 - </text> - <text name="connection_loading_text"> - 載入中… - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="狀態" name="panel_facebook_status"/> + <panel label="相片" name="panel_facebook_photo"/> + <panel label="打卡" name="panel_facebook_place"/> + <panel label="朋友" name="panel_facebook_friends"/> + </tab_container> + <text name="connection_error_text"> + 錯誤 + </text> + <text name="connection_loading_text"> + 載入中… + </text> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_fast_timers.xml b/indra/newview/skins/default/xui/zh/floater_fast_timers.xml index 871849305c..871849305c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/zh/floater_fast_timers.xml diff --git a/indra/newview/skins/default/xui/zh/floater_font_test.xml b/indra/newview/skins/default/xui/zh/floater_font_test.xml index ec83c51eb3..ec83c51eb3 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_font_test.xml +++ b/indra/newview/skins/default/xui/zh/floater_font_test.xml diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml index e7b1ed1de3..e7b1ed1de3 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/indra/newview/skins/default/xui/zh/floater_god_tools.xml index 69a6eadc8c..69a6eadc8c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml b/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml index 9e3bb88ac0..9e3bb88ac0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/zh/floater_help_browser.xml b/indra/newview/skins/default/xui/zh/floater_help_browser.xml index e605d5f19c..e605d5f19c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/zh/floater_help_browser.xml diff --git a/indra/newview/skins/default/xui/zh/floater_how_to.xml b/indra/newview/skins/default/xui/zh/floater_how_to.xml index e033327165..e033327165 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_how_to.xml +++ b/indra/newview/skins/default/xui/zh/floater_how_to.xml diff --git a/indra/newview/skins/default/xui/zh/floater_hud.xml b/indra/newview/skins/default/xui/zh/floater_hud.xml index a788961e95..a788961e95 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_hud.xml +++ b/indra/newview/skins/default/xui/zh/floater_hud.xml diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml index 84ad869100..84ad869100 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_im_container.xml +++ b/indra/newview/skins/default/xui/zh/floater_im_container.xml diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml index 864af2e592..864af2e592 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_im_session.xml +++ b/indra/newview/skins/default/xui/zh/floater_im_session.xml diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml index d2de37fa6a..d2de37fa6a 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_import_collada.xml b/indra/newview/skins/default/xui/zh/floater_import_collada.xml index 8f6b476ccf..8f6b476ccf 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/zh/floater_import_collada.xml diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml index 4526eff21d..4526eff21d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml diff --git a/indra/newview/skins/default/xui/zh/floater_inspect.xml b/indra/newview/skins/default/xui/zh/floater_inspect.xml index 4e1f4b24fd..4e1f4b24fd 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_inspect.xml +++ b/indra/newview/skins/default/xui/zh/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml index 6998df75f3..4f17b96579 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="收納區物品屬性"> - <floater.string name="unknown"> - (未知) - </floater.string> - <floater.string name="public"> - (公開) - </floater.string> - <floater.string name="you_can"> - 你可以: - </floater.string> - <floater.string name="owner_can"> - 所有人可以: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - 名稱: - </text> - <text name="LabelItemDescTitle"> - 描述: - </text> - <text name="LabelCreatorTitle"> - 創造者: - </text> + <floater.string name="unknown">(未知)</floater.string> + <floater.string name="public">(公開)</floater.string> + <floater.string name="you_can">你可以:</floater.string> + <floater.string name="owner_can">所有人可以:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">名稱:</text> + <text name="LabelItemDescTitle">描述:</text> + <text name="LabelCreatorTitle">創造者:</text> <button label="檔案..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - 所有人: - </text> + <text name="LabelOwnerTitle">所有人:</text> <button label="檔案..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - 取得於: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - 你: - </text> + <text name="LabelAcquiredTitle">取得於:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">你:</text> <check_box label="編輯" name="CheckOwnerModify"/> <check_box label="恚庨" name="CheckOwnerCopy"/> <check_box label="轉售" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 任何人: - </text> + <text name="AnyoneLabel">任何人:</text> <check_box label="恚庨" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - 群組: - </text> + <text name="GroupLabel">群組:</text> <check_box label="分享" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - 下一個所有人: - </text> + <text name="NextOwnerLabel">下一個所有人:</text> <check_box label="編輯" name="CheckNextOwnerModify"/> <check_box label="恚庨" name="CheckNextOwnerCopy"/> <check_box label="轉售" name="CheckNextOwnerTransfer"/> <check_box label="出售" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="恚庨" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="複製" name="Copy"/> + <combo_box.item label="內容" name="Contents"/> <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="價格:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml index 6d1d18b67c..51dc73d971 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml @@ -5,8 +5,8 @@ <check_box label="服裝" name="check_clothing"/> <check_box label="姿勢" name="check_gesture"/> <check_box label="地標" name="check_landmark"/> - <check_box label="網面" name="check_mesh"/> <check_box label="記事卡" name="check_notecard"/> + <check_box label="網面" name="check_mesh"/> <check_box label="物件" name="check_object"/> <check_box label="腳本" name="check_script"/> <check_box label="聲音" name="check_sound"/> @@ -19,6 +19,10 @@ <text name="- OR -"> - 或 - </text> + <radio_group name="date_search_direction"> + <radio_item label="新近於" name="newer"/> + <radio_item label="早於" name="older"/> + </radio_group> <spinner label="小時前" name="spin_hours_ago"/> <spinner label="天前" name="spin_days_ago"/> <button label="關閉" label_selected="關閉" name="Close"/> diff --git a/indra/newview/skins/default/xui/zh/floater_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_item_properties.xml new file mode 100644 index 0000000000..35dfae62b3 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="物品屬性"/> diff --git a/indra/newview/skins/default/xui/zh/floater_joystick.xml b/indra/newview/skins/default/xui/zh/floater_joystick.xml index e0b2cf5a1c..e0b2cf5a1c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_joystick.xml +++ b/indra/newview/skins/default/xui/zh/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml index 6e58e7332f..e9a082288a 100644 --- a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml @@ -7,7 +7,7 @@ 360 </floater.string> <floater.string name="min_title_msg"> - Lag + 延遲 </floater.string> <floater.string name="min_width_px"> 90 @@ -22,28 +22,28 @@ 15 </floater.string> <floater.string name="client_frame_time_window_bg_msg"> - Normal, window in background + 正常,視窗位於背景 </floater.string> <floater.string name="client_frame_time_critical_msg"> - Client frame rate below [CLIENT_FRAME_RATE_CRITICAL] + 客戶端幀率低於 [CLIENT_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="client_frame_time_warning_msg"> - Client frame rate between [CLIENT_FRAME_RATE_CRITICAL] and [CLIENT_FRAME_RATE_WARNING] + 客戶端幀率介於 [CLIENT_FRAME_RATE_CRITICAL] 和 [CLIENT_FRAME_RATE_WARNING] 之間 </floater.string> <floater.string name="client_frame_time_normal_msg"> 正常 </floater.string> <floater.string name="client_draw_distance_cause_msg"> - Possible cause: Draw distance set too high + 可能原因:可視距離設得太遠 </floater.string> <floater.string name="client_texture_loading_cause_msg"> - Possible cause: Images loading + 可能原因:正在載入圖像 </floater.string> <floater.string name="client_texture_memory_cause_msg"> - Possible cause: Too many images in memory + 可能原因:記憶體裡圖像太多 </floater.string> <floater.string name="client_complex_objects_cause_msg"> - Possible cause: Too many complex objects in scene + 可能原因:場景內複雜物件太多 </floater.string> <floater.string name="network_text_msg"> 網路 @@ -55,10 +55,10 @@ 5 </floater.string> <floater.string name="network_packet_loss_critical_msg"> - Connection is dropping over [NETWORK_PACKET_LOSS_CRITICAL]% of packets + 這次連通丟失了至少 [NETWORK_PACKET_LOSS_CRITICAL]% 的封包 </floater.string> <floater.string name="network_packet_loss_warning_msg"> - Connection is dropping [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% of packets + 這次連通丟失了 [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% 的封包 </floater.string> <floater.string name="network_performance_normal_msg"> 正常 @@ -70,16 +70,16 @@ 300 </floater.string> <floater.string name="network_ping_critical_msg"> - Connection ping time is over [NETWORK_PING_CRITICAL] ms + 探測連通回應時間超過 [NETWORK_PING_CRITICAL] 毫秒 </floater.string> <floater.string name="network_ping_warning_msg"> - Connection ping time is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + 探測連通回應時間為 [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] 毫秒 </floater.string> <floater.string name="network_packet_loss_cause_msg"> - Possible bad connection or 'Bandwidth' pref too high. + 可能連通不良,或所設的偏好連通頻寬過高。 </floater.string> <floater.string name="network_ping_cause_msg"> - Possible bad connection or file-sharing app. + 可能連通不良,或使用檔案分享應用程式。 </floater.string> <floater.string name="server_text_msg"> 伺服器 diff --git a/indra/newview/skins/default/xui/zh/floater_land_holdings.xml b/indra/newview/skins/default/xui/zh/floater_land_holdings.xml index aae2cfb466..aae2cfb466 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/zh/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml index f4a7ba5cca..e971b166f7 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml @@ -9,7 +9,24 @@ <floater.string name="Title"> 腳本:[NAME] </floater.string> + <floater.string name="experience_enabled"> + 清除勾選即可移除目前的體驗 + </floater.string> + <floater.string name="no_experiences"> + 你未經授權使用任何體驗 + </floater.string> + <floater.string name="add_experiences"> + 選取新增一個體驗 + </floater.string> + <floater.string name="show_experience_profile"> + 點按即可簡覽該體驗 + </floater.string> + <floater.string name="loading"> + 載入中… + </floater.string> <button label="重設" label_selected="重設" name="Reset"/> <check_box initial_value="true" label="執行中" name="running"/> <check_box initial_value="true" label="Mono" name="mono"/> + <check_box label="使用體驗:" name="enable_xp"/> + <button label=">" name="view_profile"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml b/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml index b10a480b06..b10a480b06 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/zh/floater_map.xml b/indra/newview/skins/default/xui/zh/floater_map.xml index 8a030b3b3f..8a030b3b3f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_map.xml +++ b/indra/newview/skins/default/xui/zh/floater_map.xml diff --git a/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml new file mode 100644 index 0000000000..6da718f230 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="MARKETPLACE 刊登"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">載入中…</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml new file mode 100644 index 0000000000..ef89de95ad --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="查核 Marketplace 刊登清單"> + <button label="確定" label_selected="確定" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_media_browser.xml b/indra/newview/skins/default/xui/zh/floater_media_browser.xml index 7f030924e1..7f030924e1 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/zh/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/zh/floater_media_settings.xml b/indra/newview/skins/default/xui/zh/floater_media_settings.xml index 3984095a65..3984095a65 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_media_settings.xml diff --git a/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml b/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml index 350254e385..350254e385 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml index 6b6126c8e0..6b6126c8e0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml diff --git a/indra/newview/skins/default/xui/zh/floater_model_preview.xml b/indra/newview/skins/default/xui/zh/floater_model_preview.xml index 22b3d3b065..22b3d3b065 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_moveview.xml b/indra/newview/skins/default/xui/zh/floater_moveview.xml index 0b267e8fae..0b267e8fae 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_moveview.xml +++ b/indra/newview/skins/default/xui/zh/floater_moveview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_mute_object.xml b/indra/newview/skins/default/xui/zh/floater_mute_object.xml index 64998d3e28..64998d3e28 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_mute_object.xml diff --git a/indra/newview/skins/default/xui/zh/floater_my_appearance.xml b/indra/newview/skins/default/xui/zh/floater_my_appearance.xml index 217ea5d1f9..217ea5d1f9 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/zh/floater_my_appearance.xml diff --git a/indra/newview/skins/default/xui/zh/floater_my_inventory.xml b/indra/newview/skins/default/xui/zh/floater_my_inventory.xml index 187597f4eb..187597f4eb 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/zh/floater_my_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/floater_notification.xml b/indra/newview/skins/default/xui/zh/floater_notification.xml index 1e0e207fb0..1e0e207fb0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_notification.xml +++ b/indra/newview/skins/default/xui/zh/floater_notification.xml diff --git a/indra/newview/skins/default/xui/zh/floater_notifications_console.xml b/indra/newview/skins/default/xui/zh/floater_notifications_console.xml index 3478761b0b..3478761b0b 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/zh/floater_notifications_console.xml diff --git a/indra/newview/skins/default/xui/zh/floater_object_weights.xml b/indra/newview/skins/default/xui/zh/floater_object_weights.xml index d2875b24b4..d2875b24b4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/zh/floater_object_weights.xml diff --git a/indra/newview/skins/default/xui/zh/floater_openobject.xml b/indra/newview/skins/default/xui/zh/floater_openobject.xml index ce6869487a..29140eceb9 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_openobject.xml +++ b/indra/newview/skins/default/xui/zh/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="覆製到收納區" label_selected="覆製到收納區" name="copy_to_inventory_button"/> - <button label="覆製且穿上" label_selected="覆製且穿上" name="copy_and_wear_button"/> + <text name="border_note"> + 複製到收納區並加以穿戴 + </text> + <button label="新增到裝扮" label_selected="新增到裝扮" name="copy_and_wear_button"/> + <button label="取代裝扮" label_selected="取代裝扮" name="copy_and_replace_button"/> + <button label="只複製到收納區" label_selected="只複製到收納區" name="copy_to_inventory_button"/> + <button label="取消" label_selected="取消" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml index 9e786edcdd..9e786edcdd 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml diff --git a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml index e57374f4d7..e57374f4d7 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml index e6971d111f..e6971d111f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml index be009b54d8..be009b54d8 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml index 22e5d2e846..22e5d2e846 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml index 69427605a4..026ead9574 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_pay.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - 支付群組 - </string> - <string name="payee_resident"> - 支付居民 - </string> - <text name="payee_name"> - 測試一個長度非常非常非常長的名稱,檢查是否被切斷 - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 或選擇一個金額: - </text> - <button label="支付" label_selected="支付" name="pay btn"/> - <button label="取消" label_selected="取消" name="cancel btn"/> + <string name="payee_group">支付群組</string> + <string name="payee_resident">支付居民</string> + <text name="paying_text">你正在支付:</text> + <text name="payee_name">測試一個長度非常非常非常長的名稱,檢查是否被切斷</text> + <panel label="搜尋" name="PatternsPanel"> + <button label="支付 L$ 1" label_selected="支付 L$ 1" name="fastpay 1"/> + <button label="支付 L$ 5" label_selected="支付 L$ 5" name="fastpay 5"/> + <button label="支付 L$ 10" label_selected="支付 L$ 10" name="fastpay 10"/> + <button label="支付 L$ 20" label_selected="支付 L$ 20" name="fastpay 20"/> + </panel> + <panel label="搜尋" name="InputPanel"> + <text name="amount text">其他金額:</text> + <button label="支付" label_selected="支付" name="pay btn"/> + <button label="取消" label_selected="取消" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay_object.xml b/indra/newview/skins/default/xui/zh/floater_pay_object.xml index 7d20b44bc6..c32243a115 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - 支付群組 - </string> - <string name="payee_resident"> - 支付居民 - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - 經由物件: - </text> + <string name="payee_group">支付群組</string> + <string name="payee_resident">支付居民</string> + <text name="paying_text">你正在支付:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">經由物件:</text> <icon name="icon_object" tool_tip="物件"/> - <text name="object_name_text"> - 這是我名稱很長很長很長很長的一個很棒的物件 - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 或選擇一個金額: - </text> - <button label="支付" label_selected="支付" name="pay btn"/> - <button label="取消" label_selected="取消" name="cancel btn"/> + <text name="object_name_text">這是我名稱很長很長很長很長的一個很棒的物件</text> + <panel label="搜尋" name="PatternsPanel"> + <button label="支付 L$ 1" label_selected="支付 L$ 1" name="fastpay 1"/> + <button label="支付 L$ 5" label_selected="支付 L$ 5" name="fastpay 5"/> + <button label="支付 L$ 10" label_selected="支付 L$ 10" name="fastpay 10"/> + <button label="支付 L$ 20" label_selected="支付 L$ 20" name="fastpay 20"/> + </panel> + <panel label="搜尋" name="InputPanel"> + <text name="amount text">其他金額:</text> + <button label="支付" label_selected="支付" name="pay btn"/> + <button label="取消" label_selected="取消" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_people.xml b/indra/newview/skins/default/xui/zh/floater_people.xml index f629f2f184..f629f2f184 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_people.xml +++ b/indra/newview/skins/default/xui/zh/floater_people.xml diff --git a/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml b/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml index b38db59ff3..b38db59ff3 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml diff --git a/indra/newview/skins/default/xui/zh/floater_picks.xml b/indra/newview/skins/default/xui/zh/floater_picks.xml index a8bfcd99e3..a8bfcd99e3 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_picks.xml +++ b/indra/newview/skins/default/xui/zh/floater_picks.xml diff --git a/indra/newview/skins/default/xui/zh/floater_places.xml b/indra/newview/skins/default/xui/zh/floater_places.xml index f6ef1e2141..f6ef1e2141 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_places.xml +++ b/indra/newview/skins/default/xui/zh/floater_places.xml diff --git a/indra/newview/skins/default/xui/zh/floater_post_process.xml b/indra/newview/skins/default/xui/zh/floater_post_process.xml index 2908f7c1d0..2908f7c1d0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_post_process.xml +++ b/indra/newview/skins/default/xui/zh/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preferences.xml b/indra/newview/skins/default/xui/zh/floater_preferences.xml index b0a27e8c1f..b0a27e8c1f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preferences.xml +++ b/indra/newview/skins/default/xui/zh/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml index f91d5c5cdb..f91d5c5cdb 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml index b94d67b7ef..b94d67b7ef 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml index be75038a09..be75038a09 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml index 9447939801..9447939801 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preview_sound.xml b/indra/newview/skins/default/xui/zh/floater_preview_sound.xml index d04428a36d..d04428a36d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/zh/floater_preview_texture.xml b/indra/newview/skins/default/xui/zh/floater_preview_texture.xml index c56b1c2987..c56b1c2987 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml b/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml index 078b490655..078b490655 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml diff --git a/indra/newview/skins/default/xui/zh/floater_publish_classified.xml b/indra/newview/skins/default/xui/zh/floater_publish_classified.xml index b810af0145..b810af0145 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/zh/floater_publish_classified.xml diff --git a/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml b/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml index 4ff2a3fc79..4ff2a3fc79 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml diff --git a/indra/newview/skins/default/xui/zh/floater_region_info.xml b/indra/newview/skins/default/xui/zh/floater_region_info.xml index 0e4879f555..0e4879f555 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_region_info.xml +++ b/indra/newview/skins/default/xui/zh/floater_region_info.xml diff --git a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml index d4b5a2f990..347b40e675 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml @@ -67,7 +67,7 @@ <combo_box.item label="土地 > 侵佔 > 物件或材質" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="土地 > 侵佔 > 粒子" name="Land__Encroachment__Particles"/> <combo_box.item label="土地 > 侵佔 > 樹種 / 植物" name="Land__Encroachment__Trees_plants"/> - <combo_box.item label="下注或賭博" name="Wagering_gambling"/> + <combo_box.item label="違反遊戲規則" name="Wagering_gambling"/> <combo_box.item label="其他" name="Other"/> </combo_box> <text name="abuser_name_title"> diff --git a/indra/newview/skins/default/xui/zh/floater_script_debug.xml b/indra/newview/skins/default/xui/zh/floater_script_debug.xml index 5b3500c018..5b3500c018 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml index e70a30fa24..e70a30fa24 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml diff --git a/indra/newview/skins/default/xui/zh/floater_script_limits.xml b/indra/newview/skins/default/xui/zh/floater_script_limits.xml index 7cd2c8e6c6..7cd2c8e6c6 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_limits.xml diff --git a/indra/newview/skins/default/xui/zh/floater_script_preview.xml b/indra/newview/skins/default/xui/zh/floater_script_preview.xml index a6c6c76181..a6c6c76181 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_script_queue.xml b/indra/newview/skins/default/xui/zh/floater_script_queue.xml index 7c253aa74c..7c253aa74c 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/zh/floater_script_search.xml b/indra/newview/skins/default/xui/zh/floater_script_search.xml index 11c23d933f..11c23d933f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_script_search.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/zh/floater_search.xml b/indra/newview/skins/default/xui/zh/floater_search.xml index 3e85a529ae..3e85a529ae 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_search.xml +++ b/indra/newview/skins/default/xui/zh/floater_search.xml diff --git a/indra/newview/skins/default/xui/zh/floater_select_key.xml b/indra/newview/skins/default/xui/zh/floater_select_key.xml index 231eb48b04..231eb48b04 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_select_key.xml +++ b/indra/newview/skins/default/xui/zh/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/indra/newview/skins/default/xui/zh/floater_sell_land.xml index 9030f7eb63..9030f7eb63 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/zh/floater_settings_debug.xml b/indra/newview/skins/default/xui/zh/floater_settings_debug.xml index 56a31bc292..56a31bc292 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/zh/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/indra/newview/skins/default/xui/zh/floater_snapshot.xml index a65227bbd4..4090248083 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/zh/floater_snapshot.xml @@ -39,17 +39,8 @@ <string name="local_failed_str"> 無法儲入電腦。 </string> - <button name="advanced_options_btn" tool_tip="進階選項"/> - <text name="image_res_text"> - [WIDTH] x [HEIGHT] 像素 - </text> - <text name="file_size_label"> - [SIZE] KB - </text> + <button label="刷新" name="new_snapshot_btn"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - 進階選項 - </text> <text name="layer_type_label"> 擷取快照: </text> @@ -68,4 +59,10 @@ <combo_box.item label="不用濾鏡" name="NoFilter"/> </combo_box> </panel> + <text name="image_res_text"> + [WIDTH] 像素(寬) x [HEIGHT] 像素(高) + </text> + <text name="file_size_label"> + [SIZE] KB + </text> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml b/indra/newview/skins/default/xui/zh/floater_sound_devices.xml index 0374c74f8f..0374c74f8f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/zh/floater_sound_devices.xml diff --git a/indra/newview/skins/default/xui/zh/floater_sound_preview.xml b/indra/newview/skins/default/xui/zh/floater_sound_preview.xml index c942ba1cfb..c942ba1cfb 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_sound_preview.xml diff --git a/indra/newview/skins/default/xui/zh/floater_spellcheck.xml b/indra/newview/skins/default/xui/zh/floater_spellcheck.xml index f5a6665844..f5a6665844 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/zh/floater_spellcheck.xml diff --git a/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml index 6094a3bbce..6094a3bbce 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml diff --git a/indra/newview/skins/default/xui/zh/floater_stats.xml b/indra/newview/skins/default/xui/zh/floater_stats.xml index f06eb5e78f..f06eb5e78f 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_stats.xml +++ b/indra/newview/skins/default/xui/zh/floater_stats.xml diff --git a/indra/newview/skins/default/xui/zh/floater_sys_well.xml b/indra/newview/skins/default/xui/zh/floater_sys_well.xml index ca0b7f146d..ca0b7f146d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/zh/floater_sys_well.xml diff --git a/indra/newview/skins/default/xui/zh/floater_telehub.xml b/indra/newview/skins/default/xui/zh/floater_telehub.xml index ee21a78e90..ee21a78e90 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_telehub.xml +++ b/indra/newview/skins/default/xui/zh/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml index 68fcf3f7f7..68fcf3f7f7 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml diff --git a/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml index 83b6df6fe5..83b6df6fe5 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml index 02d06323d4..02d06323d4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml index 0dcac17a75..0dcac17a75 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml +++ b/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml index 175e2bf7a4..175e2bf7a4 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_tools.xml diff --git a/indra/newview/skins/default/xui/zh/floater_top_objects.xml b/indra/newview/skins/default/xui/zh/floater_top_objects.xml index 6f50be0855..58530f00c1 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/zh/floater_top_objects.xml @@ -21,6 +21,12 @@ <floater.string name="none_descriptor"> 查無結果。 </floater.string> + <floater.string name="URLs"> + URL + </floater.string> + <floater.string name="memory"> + 記憶體 (KB) + </floater.string> <text name="title_text"> 載入中... </text> @@ -30,7 +36,7 @@ <scroll_list.columns label="所有人" name="owner"/> <scroll_list.columns label="位置" name="location"/> <scroll_list.columns label="地段" name="parcel"/> - <scroll_list.columns label="時間" name="time"/> + <scroll_list.columns label="日期" name="time"/> <scroll_list.columns label="URL" name="URLs"/> <scroll_list.columns label="記憶體 (KB)" name="memory"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml index 3da9445a55..3da9445a55 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_tos.xml +++ b/indra/newview/skins/default/xui/zh/floater_tos.xml diff --git a/indra/newview/skins/default/xui/zh/floater_toybox.xml b/indra/newview/skins/default/xui/zh/floater_toybox.xml index fc6b6ea611..fc6b6ea611 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_toybox.xml +++ b/indra/newview/skins/default/xui/zh/floater_toybox.xml diff --git a/indra/newview/skins/default/xui/zh/floater_translation_settings.xml b/indra/newview/skins/default/xui/zh/floater_translation_settings.xml index fe84872557..fe84872557 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_translation_settings.xml diff --git a/indra/newview/skins/default/xui/zh/floater_twitter.xml b/indra/newview/skins/default/xui/zh/floater_twitter.xml index 0df68ba9be..ac49b2a967 100644 --- a/indra/newview/skins/default/xui/zh/floater_twitter.xml +++ b/indra/newview/skins/default/xui/zh/floater_twitter.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_twitter" title="推特"> - <panel name="background"> - <tab_container name="tabs"> - <panel label="編撰" name="panel_twitter_photo"/> - <panel label="帳號" name="panel_twitter_account"/> - </tab_container> - <panel name="connection_status_panel"> - <text name="connection_error_text"> - 錯誤 - </text> - <text name="connection_loading_text"> - 載入中… - </text> - </panel> - </panel> + <tab_container name="tabs"> + <panel label="編撰" name="panel_twitter_photo"/> + <panel label="帳號" name="panel_twitter_account"/> + </tab_container> + <text name="connection_error_text"> + 錯誤 + </text> + <text name="connection_loading_text"> + 載入中… + </text> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_url_entry.xml b/indra/newview/skins/default/xui/zh/floater_url_entry.xml index 9e3f3cd47d..9e3f3cd47d 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/zh/floater_url_entry.xml diff --git a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml index a3a7679957..a3a7679957 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml index aab5fa6028..aab5fa6028 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml diff --git a/indra/newview/skins/default/xui/zh/floater_web_content.xml b/indra/newview/skins/default/xui/zh/floater_web_content.xml index be6bf8bb27..be6bf8bb27 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_web_content.xml +++ b/indra/newview/skins/default/xui/zh/floater_web_content.xml diff --git a/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml index 967e36ead7..967e36ead7 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml diff --git a/indra/newview/skins/default/xui/zh/floater_window_size.xml b/indra/newview/skins/default/xui/zh/floater_window_size.xml index 3942f72d76..3942f72d76 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_window_size.xml +++ b/indra/newview/skins/default/xui/zh/floater_window_size.xml diff --git a/indra/newview/skins/default/xui/zh/floater_world_map.xml b/indra/newview/skins/default/xui/zh/floater_world_map.xml index 4cd05ebaa0..4cd05ebaa0 100755..100644 --- a/indra/newview/skins/default/xui/zh/floater_world_map.xml +++ b/indra/newview/skins/default/xui/zh/floater_world_map.xml diff --git a/indra/newview/skins/default/xui/zh/inspect_avatar.xml b/indra/newview/skins/default/xui/zh/inspect_avatar.xml index ef10e5d2d0..ef10e5d2d0 100755..100644 --- a/indra/newview/skins/default/xui/zh/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/zh/inspect_avatar.xml diff --git a/indra/newview/skins/default/xui/zh/inspect_group.xml b/indra/newview/skins/default/xui/zh/inspect_group.xml index ca5ccc3349..ca5ccc3349 100755..100644 --- a/indra/newview/skins/default/xui/zh/inspect_group.xml +++ b/indra/newview/skins/default/xui/zh/inspect_group.xml diff --git a/indra/newview/skins/default/xui/zh/inspect_object.xml b/indra/newview/skins/default/xui/zh/inspect_object.xml index 377b8b7c78..377b8b7c78 100755..100644 --- a/indra/newview/skins/default/xui/zh/inspect_object.xml +++ b/indra/newview/skins/default/xui/zh/inspect_object.xml diff --git a/indra/newview/skins/default/xui/zh/inspect_remote_object.xml b/indra/newview/skins/default/xui/zh/inspect_remote_object.xml index b8418fc8a1..b8418fc8a1 100755..100644 --- a/indra/newview/skins/default/xui/zh/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/zh/inspect_remote_object.xml diff --git a/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml index 3c8c3e4a31..3c8c3e4a31 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml index 41b3409627..41b3409627 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml index eb1bad0ca2..d9e6eff897 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="我的外觀" name="Change Outfit"/> <menu_item_call label="編輯我的裝扮" name="Edit Outfit"/> <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="我的朋友" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml index cefb395256..cefb395256 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml index dc035bafa0..dc035bafa0 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml index 68d0600141..a644a45df6 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="我的外觀" name="Chenge Outfit"/> <menu_item_call label="編輯我的裝扮" name="Edit Outfit"/> <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="我的朋友" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml b/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml index 876fef16df..876fef16df 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml diff --git a/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml b/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml index d06207b19d..d06207b19d 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml diff --git a/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml b/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml index 300ff47b12..300ff47b12 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml index eb7093a23c..eb7093a23c 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_edit.xml b/indra/newview/skins/default/xui/zh/menu_edit.xml index bda640e5f3..bda640e5f3 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_edit.xml +++ b/indra/newview/skins/default/xui/zh/menu_edit.xml diff --git a/indra/newview/skins/default/xui/zh/menu_favorites.xml b/indra/newview/skins/default/xui/zh/menu_favorites.xml index a01412ce1c..a01412ce1c 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_favorites.xml +++ b/indra/newview/skins/default/xui/zh/menu_favorites.xml diff --git a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml index 5a38197e4c..5a38197e4c 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_group_plus.xml b/indra/newview/skins/default/xui/zh/menu_group_plus.xml index d4a5a69104..d4a5a69104 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/zh/menu_group_plus.xml diff --git a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml index 3f6820cb32..3f6820cb32 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml index 85417d554e..85417d554e 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml index 4664fcb027..4664fcb027 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml index 636bdaae09..636bdaae09 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml index f4e886ff67..f4e886ff67 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml index abff0f64ac..abff0f64ac 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml index c48ee0c9be..c48ee0c9be 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml index 577e5988f8..577e5988f8 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml index 478f987035..b346e82b77 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="新建刊登" name="Marketplace Create Listing"/> + <menu_item_call label="聯結刊登" name="Marketplace Associate Listing"/> + <menu_item_call label="取得(刷新)刊登" name="Marketplace Get Listing"/> + <menu_item_call label="檢查是否有誤" name="Marketplace Check Listing"/> + <menu_item_call label="編輯刊登" name="Marketplace Edit Listing"/> + <menu_item_call label="刊登" name="Marketplace List"/> + <menu_item_call label="停止刊登" name="Marketplace Unlist"/> + <menu_item_call label="啟用" name="Marketplace Activate"/> + <menu_item_call label="停用" name="Marketplace Deactivate"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="購買" name="Task Buy"/> <menu_item_call label="打開" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="添加" name="Wearable Add"/> <menu_item_call label="脫下" name="Take Off"/> <menu_item_call label="複製到商家發件匣" name="Merchant Copy"/> - <menu_item_call label="送往第二人生購物市集" name="Marketplace Send"/> + <menu_item_call label="複製到 Marketplace 刊登" name="Marketplace Copy"/> + <menu_item_call label="移到 Marketplace 刊登" name="Marketplace Move"/> <menu_item_call label="-- 無選項 --" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_add.xml b/indra/newview/skins/default/xui/zh/menu_inventory_add.xml index 30bf5a7e75..30bf5a7e75 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory_add.xml diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml index 8ad0e7324f..a4461f8c6a 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml @@ -5,7 +5,7 @@ <menu_item_check label="依最近排序" name="sort_by_recent"/> <menu_item_check label="總是由名稱排序資料夾" name="sort_folders_by_name"/> <menu_item_check label="系統資料夾排序到最上方" name="sort_system_folders_to_top"/> - <menu_item_call label="顯示過濾器" name="show_filters"/> + <menu_item_call label="顯示過濾器…" name="show_filters"/> <menu_item_call label="重設過濾器" name="reset_filters"/> <menu_item_call label="關閉全部資料夾" name="close_folders"/> <menu_item_call label="清空 Lost and Found" name="empty_lostnfound"/> diff --git a/indra/newview/skins/default/xui/zh/menu_land.xml b/indra/newview/skins/default/xui/zh/menu_land.xml index 3ad9c0ab31..3ad9c0ab31 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_land.xml +++ b/indra/newview/skins/default/xui/zh/menu_land.xml diff --git a/indra/newview/skins/default/xui/zh/menu_landmark.xml b/indra/newview/skins/default/xui/zh/menu_landmark.xml index 7372b223cf..7372b223cf 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_landmark.xml diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 4a1e2f4364..4a1e2f4364 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml diff --git a/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml b/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml new file mode 100644 index 0000000000..5396b2a866 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="按存量排序(由少到多)" name="sort_by_stock_amount"/> + <menu_item_check label="只顯示刊登資料夾" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml b/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml index d222d7f658..d222d7f658 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml diff --git a/indra/newview/skins/default/xui/zh/menu_mini_map.xml b/indra/newview/skins/default/xui/zh/menu_mini_map.xml index 7fd629471a..7fd629471a 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/zh/menu_mini_map.xml diff --git a/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml index 5f82685632..5f82685632 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml diff --git a/indra/newview/skins/default/xui/zh/menu_navbar.xml b/indra/newview/skins/default/xui/zh/menu_navbar.xml index d8356e6277..d8356e6277 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_navbar.xml +++ b/indra/newview/skins/default/xui/zh/menu_navbar.xml diff --git a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml index ce5f5b6e17..ce5f5b6e17 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml b/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml index b629f73584..b629f73584 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml diff --git a/indra/newview/skins/default/xui/zh/menu_object.xml b/indra/newview/skins/default/xui/zh/menu_object.xml index 4e4e55e6f4..4e4e55e6f4 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_object.xml +++ b/indra/newview/skins/default/xui/zh/menu_object.xml diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml index 9655732f2e..9655732f2e 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml index 258d0d6b20..258d0d6b20 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml b/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml index a4614710f4..a4614710f4 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml diff --git a/indra/newview/skins/default/xui/zh/menu_participant_list.xml b/indra/newview/skins/default/xui/zh/menu_participant_list.xml index 2456e9fee9..2456e9fee9 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/zh/menu_participant_list.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml index 59854faeec..59854faeec 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml index b4b566f5ca..b4b566f5ca 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_groups.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml index 1be5c69b94..1be5c69b94 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml index d25adaf8fb..d25adaf8fb 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml index 69f0eab7dc..69f0eab7dc 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml index 6cb0ac3c89..6cb0ac3c89 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml index 5b6e7335d6..5b6e7335d6 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml diff --git a/indra/newview/skins/default/xui/zh/menu_picks.xml b/indra/newview/skins/default/xui/zh/menu_picks.xml index 2e88ac2d39..2e88ac2d39 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_picks.xml +++ b/indra/newview/skins/default/xui/zh/menu_picks.xml diff --git a/indra/newview/skins/default/xui/zh/menu_picks_plus.xml b/indra/newview/skins/default/xui/zh/menu_picks_plus.xml index 80922a757d..80922a757d 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/zh/menu_picks_plus.xml diff --git a/indra/newview/skins/default/xui/zh/menu_place.xml b/indra/newview/skins/default/xui/zh/menu_place.xml index 3733baf119..3733baf119 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_place.xml +++ b/indra/newview/skins/default/xui/zh/menu_place.xml diff --git a/indra/newview/skins/default/xui/zh/menu_place_add_button.xml b/indra/newview/skins/default/xui/zh/menu_place_add_button.xml index 95f8917234..95f8917234 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/zh/menu_place_add_button.xml diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml index 27f0c7ebdb..27f0c7ebdb 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml index f23d970b78..f23d970b78 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml diff --git a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml index f77e7090c4..f77e7090c4 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml diff --git a/indra/newview/skins/default/xui/zh/menu_save_outfit.xml b/indra/newview/skins/default/xui/zh/menu_save_outfit.xml index 53ee6ee977..53ee6ee977 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/zh/menu_save_outfit.xml diff --git a/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml b/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml index e9817dd2bc..e9817dd2bc 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml diff --git a/indra/newview/skins/default/xui/zh/menu_slurl.xml b/indra/newview/skins/default/xui/zh/menu_slurl.xml index 2cea18105a..2cea18105a 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_slurl.xml +++ b/indra/newview/skins/default/xui/zh/menu_slurl.xml diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml index d188840588..d188840588 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml index bf60983896..bf60983896 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml index 90e8098348..90e8098348 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml diff --git a/indra/newview/skins/default/xui/zh/menu_text_editor.xml b/indra/newview/skins/default/xui/zh/menu_text_editor.xml index febc0b8b67..febc0b8b67 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/zh/menu_text_editor.xml diff --git a/indra/newview/skins/default/xui/zh/menu_toolbars.xml b/indra/newview/skins/default/xui/zh/menu_toolbars.xml index d318992dd5..d318992dd5 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/zh/menu_toolbars.xml diff --git a/indra/newview/skins/default/xui/zh/menu_topinfobar.xml b/indra/newview/skins/default/xui/zh/menu_topinfobar.xml index b07e9890ff..b07e9890ff 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/zh/menu_topinfobar.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml index 752634dc6b..752634dc6b 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_experience.xml b/indra/newview/skins/default/xui/zh/menu_url_experience.xml new file mode 100644 index 0000000000..97ff33b921 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/menu_url_experience.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_group.xml b/indra/newview/skins/default/xui/zh/menu_url_group.xml index de97bb731f..de97bb731f 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_group.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_group.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_http.xml b/indra/newview/skins/default/xui/zh/menu_url_http.xml index 861cbfb975..861cbfb975 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_http.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_http.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_inventory.xml b/indra/newview/skins/default/xui/zh/menu_url_inventory.xml index 8eaea68c6f..8eaea68c6f 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_map.xml b/indra/newview/skins/default/xui/zh/menu_url_map.xml index fbda20fd2f..fbda20fd2f 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_map.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_map.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml index ac366f92ef..ac366f92ef 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_parcel.xml b/indra/newview/skins/default/xui/zh/menu_url_parcel.xml index 330c28238f..330c28238f 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_parcel.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_slapp.xml b/indra/newview/skins/default/xui/zh/menu_url_slapp.xml index 6ce9a10d3e..6ce9a10d3e 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_slapp.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_slurl.xml b/indra/newview/skins/default/xui/zh/menu_url_slurl.xml index 2fb247f250..2fb247f250 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_slurl.xml diff --git a/indra/newview/skins/default/xui/zh/menu_url_teleport.xml b/indra/newview/skins/default/xui/zh/menu_url_teleport.xml index e3e4b4716d..e3e4b4716d 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_teleport.xml diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index adc29a3944..9572ad49d3 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -8,13 +8,14 @@ <menu_item_call label="新收納區視窗" name="NewInventoryWindow"/> <menu_item_call label="地點…" name="Places"/> <menu_item_call label="精選地點…" name="Picks"/> + <menu_item_call label="體驗…" name="Experiences"/> <menu_item_call label="攝影機控制…" name="Camera Controls"/> <menu label="動作" name="Movement"> <menu_item_call label="坐下" name="Sit Down Here"/> <menu_item_check label="飛行" name="Fly"/> <menu_item_check label="以跑代步" name="Always Run"/> <menu_item_call label="停止我身上的動作" name="Stop Animating My Avatar"/> - <menu_item_call label="行走 / 跑步 / 飛行…" name="Walk / run / fly"/> + <menu_item_call label="行走 / 跑步 / 飛行…" name="WalkRunFly"/> </menu> <menu label="狀態" name="Status"> <menu_item_check label="離開" name="Away"/> @@ -22,6 +23,7 @@ </menu> <menu_item_call label="購買 L$…" name="Buy and Sell L$"/> <menu_item_call label="商家發件匣…" name="MerchantOutbox"/> + <menu_item_call label="Marketplace 刊登…" name="MarketplaceListings"/> <menu_item_call label="帳戶主控臺…" name="Manage My Account"/> <menu_item_call label="偏好設定…" name="Preferences"/> <menu_item_call label="工具列按鈕…" name="Toolbars"/> @@ -46,7 +48,7 @@ <menu_item_check label="朋友" name="My Friends"/> <menu_item_check label="群組" name="My Groups"/> <menu_item_check label="附近的人群" name="Active Speakers"/> - <menu_item_call label="封鎖清單" name="Block List"/> + <menu_item_check label="封鎖清單" name="Block List"/> <menu_item_check label="請勿打擾" name="Do Not Disturb"/> </menu> <menu label="世界" name="World"> @@ -60,7 +62,7 @@ <menu_item_call label="快照" name="Take Snapshot"/> <menu_item_call label="地點小檔案" name="Place Profile"/> <menu_item_call label="土地資料" name="About Land"/> - <menu_item_call label="地區/領地" name="Region/Estate"/> + <menu_item_call label="地區/領地" name="RegionEstate"/> <menu_item_call label="我所擁有的土地…" name="My Land"/> <menu_item_call label="購買這塊土地" name="Buy Land"/> <menu label="顯示" name="LandShow"> @@ -248,6 +250,7 @@ <menu_item_check label="材質控制台" name="Texture Console"/> <menu_item_check label="除錯控制台" name="Debug Console"/> <menu_item_call label="通知控制台" name="Notifications"/> + <menu_item_check label="地區除錯控制台" name="Region Debug Console"/> <menu_item_check label="快速碼錶" name="Fast Timers"/> <menu_item_check label="記憶體" name="Memory"/> <menu_item_check label="場景統計資料" name="Scene Statistics"/> @@ -351,7 +354,7 @@ <menu_item_check label="探詢內插物件位置" name="Ping Interpolate Object Positions"/> <menu_item_call label="丟出一個封包" name="Drop a Packet"/> </menu> - <menu_item_call label="傾印腳本控制的攝影機" name="Dump Scripted Camera"/> + <menu_item_call label="傾印腳本控制的攝影機" name="Dump Scripted Camera"/> <menu label="錄製器" name="Recorder"> <menu_item_call label="開始播放" name="Start Playback"/> <menu_item_call label="停止播放" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml index 576f7f3b73..576f7f3b73 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml index 6184f956d1..6184f956d1 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml index c7d2853995..c7d2853995 100755..100644 --- a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml index 70af2d2f19..8967475abb 100755..100644 --- a/indra/newview/skins/default/xui/zh/mime_types.xml +++ b/indra/newview/skins/default/xui/zh/mime_types.xml @@ -44,6 +44,14 @@ 播放這個位置的音頻 </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + 無內容 + </label> + <tooltip name="none_tooltip"> + 此處無媒體 + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> 即時串流 diff --git a/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/indra/newview/skins/default/xui/zh/mime_types_linux.xml index 70af2d2f19..8967475abb 100755..100644 --- a/indra/newview/skins/default/xui/zh/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_linux.xml @@ -44,6 +44,14 @@ 播放這個位置的音頻 </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + 無內容 + </label> + <tooltip name="none_tooltip"> + 此處無媒體 + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> 即時串流 diff --git a/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/indra/newview/skins/default/xui/zh/mime_types_mac.xml index 70af2d2f19..8967475abb 100755..100644 --- a/indra/newview/skins/default/xui/zh/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_mac.xml @@ -44,6 +44,14 @@ 播放這個位置的音頻 </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + 無內容 + </label> + <tooltip name="none_tooltip"> + 此處無媒體 + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> 即時串流 diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index bd05725e2b..0a98101b60 100755..100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -73,6 +73,10 @@ [MESSAGE] <usetemplate name="okcancelbuttons" notext="取消" yestext="是"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="BadInstallation"> [APP_NAME] 更新時出錯。 請 [http://get.secondlife.com 下載] 最新版本的 Viewer。 <usetemplate name="okbutton" yestext="確定"/> @@ -125,6 +129,88 @@ 購物市集初始化失敗,系統或網路出錯。 請稍候再試一次。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="StockPasteFailed"> + 複製或移到限量資料夾時發生問題: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantPasteFailed"> + 複製或移到 Marketplace 刊登時發生問題: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantTransactionFailed"> + 和 Marketplace 進行的交易發生如下錯誤: + + 原因:'[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + 我們無法刊登這產品或啓用版本資料夾。 通常這是因為刊登內容表的資料不齊,但也可能因為資料夾結構有錯所致。 請編輯刊登內容或檢查刊登資料夾看是否有誤。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantListingFailed"> + 刊登到 Marketplace 時,發生錯誤: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + 啓用此版本資料夾時發生錯誤: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + 這個動作會改變此刊登的內容。 你確定要繼續嗎? + <usetemplate ignoretext="在我變更 Marketplace 的一項刊登內容之前,先跟我確認" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + 你拖曳到 Marketplace 刊登視窗的物項,會從原來的位置移出來,不會被複製。 你確定要繼續嗎? + <usetemplate ignoretext="在我把物項從收納區移到 Marketplace 之前,先跟我確認" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + 移動或刪除刊登資料夾將會刪除你的 Marketplace 刊登。 如你希望保留 Marketplace 刊登,請改而移動或刪除所想修改的版本資料夾的內容。 你確定要繼續嗎? + <usetemplate ignoretext="在我把物項從 Marketplace 移出或刪除之前,先跟我確認" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + 你無權將這些物項的一或多個複製到 Marketplace。 你可以移動這些物項,或保留不動。 + <usetemplate canceltext="取消" ignoretext="我試著選擇複製到 Marketplace 的內容如果含有「禁止複製」的物項,先向我確認" name="yesnocancelbuttons" notext="保留不移動物項" yestext="移動物項"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + 這動作會停登這個刊登。 你確定要繼續嗎? + <usetemplate ignoretext="在我停登 Marketplace 的現有刊登內容前,先跟我確認" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + 這個動作會停用此刊登的版本資料夾。 你確定要繼續嗎? + <usetemplate ignoretext="在我停用 Marketplace 某項刊登的版本資料夾之前,先跟我確認。" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + 這刊登無法更新。 +[[URL] 點按這裡]即可在 Marketplace 進行編輯。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + 你不能穿戴位在 Marketplace 刊登資料夾裡的衣物或身體部位。 + </notification> + <notification name="AlertMerchantListingInvalidID"> + 無效的刊登 ID。 + </notification> + <notification name="AlertMerchantListingActivateRequired"> + 這個刊登有多個版本資料夾或缺少版本資料夾。 你事後必須選擇一個加以啓用。 + <usetemplate ignoretext="當我要新建帶有多個版本資料夾的刊登前,提醒我啓動一個版本資料夾" name="okignore" yestext="確定"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + 我們已經將不同類型的限量物項分開放置到不同的存量資料夾,這樣你的資料夾才能夠刊登。 + <usetemplate ignoretext="刊登前把限量資料夾一分為二時,告知我" name="okignore" yestext="確定"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + 因為存量爲零,我們已經把你的刊登物下架。 你若希望重新刊登,必須先增加存量。 + <usetemplate ignoretext="限量資料夾如果成空、導致刊登物下架,告知我" name="okignore" yestext="確定"/> + </notification> <notification name="CompileQueueSaveText"> 上傳腳本文字時出問題,原因:[REASON]。 請稍候再試一次。 </notification> @@ -469,6 +555,10 @@ 儲存變更? <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> </notification> + <notification name="DeleteNotecard"> + 刪除記事卡? + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> 姿勢儲存失敗。 這個姿勢步驟太多。 @@ -575,6 +665,9 @@ <notification name="RegionNoTerraforming"> 這個 [REGION] 地區並不允許變更地形。 </notification> + <notification name="ParcelNoTerraforming"> + 你無權針對地段 [PARCEL] 進行土地變形。 + </notification> <notification name="CannotCopyWarning"> 你沒有權限複製以下項目: [ITEMS] @@ -1816,6 +1909,30 @@ SHA1 指紋:[MD5_DIGEST] 僅針對這個領地或針對 [ALL_ESTATES] 移除領地管理人? <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> + <notification label="選擇領地" name="EstateAllowedExperienceAdd"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它新增到允許清單? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> + <notification label="選擇領地" name="EstateAllowedExperienceRemove"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它從允許清單中移除? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> + <notification label="選擇領地" name="EstateBlockedExperienceAdd"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它新增到封鎖清單? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> + <notification label="選擇領地" name="EstateBlockedExperienceRemove"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它從封鎖清單中移除? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> + <notification label="選擇領地" name="EstateTrustedExperienceAdd"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它新增到金鑰清單? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> + <notification label="選擇領地" name="EstateTrustedExperienceRemove"> + 僅針對這個領地或針對 [ALL_ESTATES] 將它從金鑰清單中移除? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + </notification> <notification label="確認踢出" name="EstateKickUser"> 將 [EVIL_USER] 由這領地踢出? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> @@ -1828,6 +1945,9 @@ SHA1 指紋:[MD5_DIGEST] 你所欲前往的地區含有超過你目前偏好的分級的內容。 你可以到「我自己 > 偏好設定 > 一般設定」變更你的偏好設定。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> 你所欲前往的地區含有 [REGIONMATURITY] 的分級內容,僅限成人。 <url name="url"> @@ -1890,6 +2010,10 @@ SHA1 指紋:[MD5_DIGEST] 發生技術問題,你的偏好設定和伺服器上的不一致。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="RegionTPSpecialUsageBlocked"> + 無法進入地區。 '[REGION_NAME]' 是個「技巧性博奕」(Skill Gaming)地區,你必須符合一定條件才可進入。 欲知詳情,請參閱 [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life 技巧性博奕常見問題集]。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="PreferredMaturityChanged"> 你將不再收到通知,告知你即將進入一個 [RATING] 內容分級的地區。 你可以到選單列底下的「我自己 > 偏好設定 > 一般設定」變更你的內容偏好。 <usetemplate name="okbutton" yestext="確定"/> @@ -2111,6 +2235,10 @@ SHA1 指紋:[MD5_DIGEST] <ignore name="ignore" text="我在創建不含 money() 腳本的物件時設定了「支付物件」動作"/> </form> </notification> + <notification name="PayConfirmation"> + 確認你真要支付 L$[AMOUNT] 給 [TARGET]。 + <usetemplate ignoretext="付款前跟我確認(超過 L$200 的總額)" name="okcancelignore" notext="取消" yestext="支付"/> + </notification> <notification name="OpenObjectCannotCopy"> 這物件中沒有任何准許你複製的物項。 </notification> @@ -2196,6 +2324,9 @@ SHA1 指紋:[MD5_DIGEST] <button ignore="絕不取代" name="No" text="取消"/> </form> </notification> + <notification name="TooManyWearables"> + 你不能對含超過 [AMOUNT] 個物項的資料夾作穿戴動作。 欲變更此上限,可到「進階」>「顯示除錯設定」>「WearFolderLimit」。 + </notification> <notification label="「請勿打擾」模式警告" name="DoNotDisturbModePay"> 你已開啟「請勿打擾」。 你將不會收到任何付款購買的物項。 @@ -2647,9 +2778,6 @@ SHA1 指紋:[MD5_DIGEST] <notification name="NoValidCircuit"> 沒有有效的線路碼。 </notification> - <notification name="NoValidTimestamp"> - 沒有有效的時間戳記。 - </notification> <notification name="NoPendingConnection"> 無法建立待通的連線。 </notification> @@ -2804,7 +2932,7 @@ SHA1 指紋:[MD5_DIGEST] [MESSAGE] -來源物件:<nolink>[OBJECTNAME]</nolink>(所有人是 [NAME])? +來源物件:<nolink>[OBJECTNAME]</nolink>(所有人:[NAME]) <form name="form"> <button name="Gotopage" text="前往頁面"/> <button name="Cancel" text="取消"/> @@ -2830,6 +2958,72 @@ SHA1 指紋:[MD5_DIGEST] <button name="Mute" text="封鎖"/> </form> </notification> + <notification name="ExperienceAcquireFailed"> + 無法取得新的體驗: + [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="NotInGroupExperienceProfileMessage"> + 已取消對體驗群組的變更,因為擁有人不是所選群組的成員。 + </notification> + <notification name="UneditableExperienceProfileMessage"> + 已在更新體驗簡覽時忽略不可編輯的欄位 '[field]'。 + </notification> + <notification name="RestrictedToOwnerExperienceProfileMessage"> + 已忽略對欄位 '[field]' 的變更,只有體驗擁有人可作此變更。 + </notification> + <notification name="MaturityRatingExceedsOwnerExperienceProfileMessage"> + 你不能將體驗的內容分級設定為比擁有人所設更高的等級。 + </notification> + <notification name="RestrictedTermExperienceProfileMessage"> + 以下項目導致無法更新體驗的名稱或描述:[extra_info] + </notification> + <notification name="TeleportedHomeExperienceRemoved"> + 你已移除金鑰體驗 secondlife:///app/experience/[public_id]/profile,因此被瞬間傳送離開 [region_name] 地區,因為你已無權續留。 + <form name="form"> + <ignore name="ignore" text="移除體驗後,已被踢出地區"/> + </form> + </notification> + <notification name="TrustedExperienceEntry"> + 你已參與金鑰體驗 secondlife:///app/experience/[public_id]/profile,因此獲准進入 [region_name] 地區,若移除此體驗,你可能會被踢出地區。 + <form name="form"> + <ignore name="ignore" text="已透過體驗獲准進入地區"/> + </form> + </notification> + <notification name="TrustedExperiencesAvailable"> + 你並沒有權限進入此目的地。 若接受以下一項體驗,可獲准進入該地區: + +[EXPERIENCE_LIST] + +可能有其他金鑰體驗供選擇。 + </notification> + <notification name="ExperienceEvent"> + 一個物件已得到 secondlife:///app/experience/[public_id]/profile 體驗允許,可以[EventType]。 + 所有人:secondlife:///app/agent/[OwnerID]/inspect + 物件名稱:[ObjectName] + 地段名稱:[ParcelName] + </notification> + <notification name="ExperienceEventAttachment"> + 一個附件已得到 secondlife:///app/experience/[public_id]/profile 體驗允許,可以[EventType]。 + 所有人:secondlife:///app/agent/[OwnerID]/inspect + </notification> + <notification name="ScriptQuestionExperience"> + '<nolink>[OBJECTNAME]</nolink>',一個由 '[NAME]' 擁有的物件,邀請你參與以下的 [GRID_WIDE] 體驗: + +[EXPERIENCE] + +允准之後,除非在「體驗簡覽」撤銷該權限,否則你將不再看到此訊息。 + +本體驗的相關腳本,將可在啟用本體驗的地區進行以下動作: + +[QUESTIONS] 你是否同意? + <form name="form"> + <button name="BlockExperience" text="封鎖體驗"/> + <button name="Mute" text="封鎖物件"/> + <button name="Yes" text="是"/> + <button name="No" text="否"/> + </form> + </notification> <notification name="ScriptQuestionCaution"> 警告:物件 '<nolink>[OBJECTNAME]</nolink>' 要求全權存取你的林登幣帳戶。 你如果允許存取帳戶,它將可在任何時候從你帳戶取走資金,或完全加以清空,或定期取走部分資金,且不會發出警告。 @@ -3149,6 +3343,10 @@ SHA1 指紋:[MD5_DIGEST] (存續 [EXISTENCE] 秒鐘) 你在 [TIME] 秒鐘後在本地為 '[BODYREGION]' 更新了一個 [RESOLUTION] 的定貌材質。 </notification> + <notification name="CannotUploadTexture"> + 無法上傳質料。 +[REASON] + </notification> <notification name="LivePreviewUnavailable"> 我們無法顯示這個材質的預覽,因為它設為「禁止複製」且 / 或「禁止轉移」。 <usetemplate ignoretext="「禁止複製」和「禁止轉移」的材質若不能使用實時預覽模式,請給我警示。" name="okignore" yestext="確定"/> @@ -3724,9 +3922,11 @@ SHA1 指紋:[MD5_DIGEST] </notification> <notification name="TeleportedByAttachment"> 你已成功被 [ITEM_ID] 上的一個附件瞬間傳送 + <usetemplate ignoretext="瞬間傳送:你已成功被一個附件瞬間傳送" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> 你已成功被 '[PARCEL_NAME]' 地段的物件 '[OBJECT_NAME]' 瞬間傳送 + <usetemplate ignoretext="瞬間傳送:你已被一個物件或地段瞬間傳送成功" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> 你已成功被 [OWNER_ID] 擁有的物件 '[OBJECT_NAME]' 瞬間傳送 @@ -4058,7 +4258,7 @@ SHA1 指紋:[MD5_DIGEST] <usetemplate ignoretext="無法移動檔案。 已恢復前一個路徑。" name="okignore" yestext="確定"/> </notification> <notification name="DefaultObjectPermissions"> - 儲存預設權限時出問題,原因:[REASON]。 請稍後再嘗試儲存預設權限。 + 儲存預設物件權限時出問題,原因:[REASON]。 請稍後再嘗試儲存預設權限。 <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/zh/panel_active_object_row.xml b/indra/newview/skins/default/xui/zh/panel_active_object_row.xml index 42a4aa9e85..42a4aa9e85 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/zh/panel_active_object_row.xml diff --git a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml index 7d16ac4129..7d16ac4129 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml index e0a49a0add..e0a49a0add 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml b/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml index fd91ea97d1..fd91ea97d1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml index 9f59bb32f8..9f59bb32f8 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml diff --git a/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml index fef692c1c5..fef692c1c5 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml index e4e7a661a7..e4e7a661a7 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml index 9833e9ef8b..9833e9ef8b 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml diff --git a/indra/newview/skins/default/xui/zh/panel_chat_header.xml b/indra/newview/skins/default/xui/zh/panel_chat_header.xml index 7916bf5155..7916bf5155 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/zh/panel_chat_header.xml diff --git a/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml index 69340349bc..69340349bc 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_classified_info.xml b/indra/newview/skins/default/xui/zh/panel_classified_info.xml index 6f2dd89318..6f2dd89318 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_classified_info.xml diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml index ba63dada76..ba63dada76 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml index 55e72f5347..55e72f5347 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml b/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml index c074abb568..c074abb568 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml diff --git a/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml index a9e65419c2..a9e65419c2 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml index 6377bf4135..6377bf4135 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml b/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml index 32765a3e16..32765a3e16 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_classified.xml b/indra/newview/skins/default/xui/zh/panel_edit_classified.xml index b06ece02ad..b06ece02ad 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_classified.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml b/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml index f44d411908..f44d411908 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml index d107eea553..d107eea553 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml index 65f78f9273..65f78f9273 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml index 61e45f911e..61e45f911e 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml index 846ed72961..846ed72961 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_physics.xml b/indra/newview/skins/default/xui/zh/panel_edit_physics.xml index 26fedb59be..26fedb59be 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_physics.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml index faee42fd0e..faee42fd0e 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml index 849b82c71a..849b82c71a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shape.xml b/indra/newview/skins/default/xui/zh/panel_edit_shape.xml index f249100786..f249100786 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shape.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml index bc69f2ffc4..bc69f2ffc4 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml index e190bb5bd8..e190bb5bd8 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skin.xml b/indra/newview/skins/default/xui/zh/panel_edit_skin.xml index d8552f52f0..d8552f52f0 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_skin.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml index 34319fcc01..34319fcc01 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml index 8e19fb5692..8e19fb5692 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml index f5111d629a..f5111d629a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml index 5ead7c9004..5ead7c9004 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml index e497e285c9..e497e285c9 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml diff --git a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml index 4dd7ea6d93..4dd7ea6d93 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml diff --git a/indra/newview/skins/default/xui/zh/panel_experience_info.xml b/indra/newview/skins/default/xui/zh/panel_experience_info.xml new file mode 100644 index 0000000000..04d22c46ea --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experience_info.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_experience_info"> + <text name="title" value="體驗簡覽"/> + <scroll_container name="xp_scroll"> + <panel name="scrolling_panel"> + <layout_stack> + <layout_panel> + <text name="experience_title" value="Kyle's Superhero RPG"/> + </layout_panel> + <layout_panel name="location panel"> + <text name="Location"> + 位置: + </text> + <text name="LocationTextText"> + 某某地點 + </text> + <button label="瞬間傳送" name="teleport_btn"/> + <button label="地圖" name="map_btn"/> + </layout_panel> + <layout_panel name="marketplace panel"> + <text name="Location"> + 第二人生購物市集商店: + </text> + <text name="LocationTextText"> + 某某地點 + </text> + </layout_panel> + <layout_panel> + <text name="ContentRating"> + 分級: + </text> + <text name="ContentRatingText"> + 完全成人 + </text> + <text name="Owner"> + 所有人: + </text> + <text name="OwnerText"> + Kyle + </text> + <button label="編輯" name="edit_btn"/> + </layout_panel> + </layout_stack> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/zh/panel_experience_list_editor.xml new file mode 100644 index 0000000000..469f942578 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experience_list_editor.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="experince_list_editor"> + <panel.string name="loading"> + 載入中... + </panel.string> + <panel.string name="panel_allowed"> + 允許的體驗: + </panel.string> + <panel.string name="panel_blocked"> + 封鎖的體驗: + </panel.string> + <panel.string name="panel_trusted"> + 金鑰體驗: + </panel.string> + <panel.string name="no_results"> + (空白) + </panel.string> + <text name="text_name"> + 體驗清單 + </text> + <scroll_list name="experience_list"> + <columns label="名稱" name="experience_name"/> + </scroll_list> + <button label="添加..." name="btn_add"/> + <button label="移除" name="btn_remove"/> + <button label="檔案..." name="btn_profile"/> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_experience_list_item.xml b/indra/newview/skins/default/xui/zh/panel_experience_list_item.xml new file mode 100644 index 0000000000..3ec619b8de --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experience_list_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <text name="experience_name"> + 測試用名稱 + </text> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_experience_log.xml b/indra/newview/skins/default/xui/zh/panel_experience_log.xml new file mode 100644 index 0000000000..791dcd0a2e --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experience_log.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="EVENTS"> + <string name="no_events" value="無活動。"/> + <string name="loading" value="載入中..."/> + <layout_stack> + <layout_panel> + <scroll_list name="experience_log_list"> + <columns label="時間" name="time"/> + <columns label="活動" name="event"/> + <columns label="體驗" name="experience_name"/> + <columns label="物件" name="object_name"/> + </scroll_list> + <button label="通知" name="btn_notify"/> + <button label="簡覽" name="btn_profile_xp"/> + <button label="回報" name="btn_report_xp"/> + </layout_panel> + <layout_panel name="button_panel"> + <check_box label="對所有活動作通知 天數" name="notify_all"/> + <button label="清除" name="btn_clear"/> + <button label="<" name="btn_prev"/> + <button label=">" name="btn_next"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_experience_search.xml b/indra/newview/skins/default/xui/zh/panel_experience_search.xml new file mode 100644 index 0000000000..9b0145748e --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experience_search.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="SEARCH"> + <string name="not_found"> + 查無「[TEXT]」 + </string> + <string name="no_results"> + 沒有結果 + </string> + <string name="searching"> + 搜尋中... + </string> + <string name="loading"> + 載入中… + </string> + <string name="maturity_icon_general"> + "Parcel_PG_Light" + </string> + <string name="maturity_icon_moderate"> + "Parcel_M_Light" + </string> + <string name="maturity_icon_adult"> + "Parcel_R_Light" + </string> + <panel name="search_panel"> + <button label="前往" name="find"/> + <icons_combo_box label="適度成人" name="maturity"> + <icons_combo_box.item label="完全成人" name="Adult" value="42"/> + <icons_combo_box.item label="適度成人" name="Mature" value="21"/> + <icons_combo_box.item label="一般" name="PG" value="13"/> + </icons_combo_box> + <scroll_list name="search_results"> + <columns label="名稱" name="experience_name"/> + <columns label="所有人" name="owner"/> + </scroll_list> + <button label="確定" label_selected="確定" name="ok_btn"/> + <button label="取消" name="cancel_btn"/> + <button label="察看簡覽" name="profile_btn"/> + <button label="<" name="left_btn"/> + <button label=">" name="right_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_experiences.xml b/indra/newview/skins/default/xui/zh/panel_experiences.xml new file mode 100644 index 0000000000..bb1df97058 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_experiences.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Experiences"> + <string name="loading_experiences" value="體驗載入中..."/> + <string name="no_experiences" value="未設體驗。"/> + <string name="acquire" value="取得體驗"/> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_facebook_photo.xml b/indra/newview/skins/default/xui/zh/panel_facebook_photo.xml index d43fcf4665..85d2ac36f3 100644 --- a/indra/newview/skins/default/xui/zh/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/zh/panel_facebook_photo.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="圖像解析度"> - <combo_box.item label="目前視窗" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="1200x630" name="1200x630"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> - <combo_box.item label="不用濾鏡" name="NoFilter"/> - </combo_box> - <button label="重新整理" name="new_snapshot_btn" tool_tip="點按即可刷新"/> - <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> - <text name="caption_label"> - 說明(可留空): - </text> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="發佈" name="post_photo_btn"/> - <button label="取消" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <combo_box name="resolution_combobox" tool_tip="圖像解析度"> + <combo_box.item label="目前視窗" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1200x630" name="1200x630"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> + <combo_box.item label="不用濾鏡" name="NoFilter"/> + </combo_box> + <button label="刷新" name="new_snapshot_btn" tool_tip="點按即可刷新"/> + <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> + <text name="caption_label"> + 說明(可留空): + </text> + <button label="發佈" name="post_photo_btn"/> + <button label="取消" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_facebook_place.xml b/indra/newview/skins/default/xui/zh/panel_facebook_place.xml index 27bd789af1..56d4d687ef 100644 --- a/indra/newview/skins/default/xui/zh/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/zh/panel_facebook_place.xml @@ -1,17 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_place"> - <layout_stack name="stack_place"> - <layout_panel name="place_detail_panel"> - <text name="place_caption_label"> - 描述一下你所在的地方: - </text> - </layout_panel> - <layout_panel name="place_map_panel"> - <check_box initial_value="false" label="" name="add_place_view_cb"/> - </layout_panel> - <layout_panel name="place_button_panel"> - <button label="發佈" name="post_place_btn"/> - <button label="取消" name="cancel_place_btn"/> - </layout_panel> - </layout_stack> + <text name="place_caption_label"> + 描述一下你所在的地方: + </text> + <check_box initial_value="false" label="包括地點的俯瞰圖" name="add_place_view_cb"/> + <button label="發佈" name="post_place_btn"/> + <button label="取消" name="cancel_place_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_facebook_status.xml b/indra/newview/skins/default/xui/zh/panel_facebook_status.xml index b947b49a4f..3a7cbd07b0 100644 --- a/indra/newview/skins/default/xui/zh/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/zh/panel_facebook_status.xml @@ -1,14 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_facebook_status"> - <layout_stack name="stack_status"> - <layout_panel name="status_detail_panel"> - <text name="status_caption_label"> - 你在想些什麼? - </text> - </layout_panel> - <layout_panel name="status_button_panel"> - <button label="發佈" name="post_status_btn"/> - <button label="取消" name="cancel_status_btn"/> - </layout_panel> - </layout_stack> + <string name="facebook_connected" value="已成功連通臉書,身分為:"/> + <string name="facebook_disconnected" value="未連通臉書"/> + <text name="account_caption_label"> + 未連通臉書。 + </text> + <panel name="panel_buttons"> + <button label="連通…" name="connect_btn"/> + <button label="中斷" name="disconnect_btn"/> + <text name="account_learn_more_label"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 如何發佈到臉書] + </text> + </panel> + <text name="status_caption_label"> + 你在想些什麼? + </text> + <button label="發佈" name="post_status_btn"/> + <button label="取消" name="cancel_status_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml b/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml index 75738abebc..ece239a29f 100644 --- a/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml @@ -1,41 +1,35 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_flickr_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="圖像解析度"> - <combo_box.item label="目前視窗" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> - <combo_box.item label="不用濾鏡" name="NoFilter"/> - </combo_box> - <button label="刷新" name="new_snapshot_btn" tool_tip="點按即可刷新"/> - <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> - <text name="title_label"> - 標題: - </text> - <text name="description_label"> - 描述: - </text> - <check_box initial_value="true" label="在描述結尾加上第二人生的地點" name="add_location_cb"/> - <text name="tags_label"> - 標籤: - </text> - <text name="tags_help_label"> - 不同標籤之間以半形空格分隔 + <combo_box name="resolution_combobox" tool_tip="圖像解析度"> + <combo_box.item label="目前視窗" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> + <combo_box.item label="不用濾鏡" name="NoFilter"/> + </combo_box> + <button label="刷新" name="new_snapshot_btn" tool_tip="點按即可刷新"/> + <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> + <text name="title_label"> + 標題: + </text> + <text name="description_label"> + 描述: + </text> + <check_box initial_value="true" label="在描述結尾加上第二人生的地點" name="add_location_cb"/> + <text name="tags_label"> + 標籤: + </text> + <text name="tags_help_label"> + 不同標籤之間以半形空格分隔 標籤若含空格,用 "" 半形符號括住 - </text> - <combo_box name="rating_combobox" tool_tip="Flickr 內容分級"> - <combo_box.item label="安全級 Flickr 內容" name="SafeRating"/> - <combo_box.item label="適中級 Flickr 內容" name="ModerateRating"/> - <combo_box.item label="限制級 Flickr 內容" name="RestrictedRating"/> - </combo_box> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="上傳" name="post_photo_btn"/> - <button label="取消" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + </text> + <combo_box name="rating_combobox" tool_tip="Flickr 內容分級"> + <combo_box.item label="安全級 Flickr 內容" name="SafeRating"/> + <combo_box.item label="適中級 Flickr 內容" name="ModerateRating"/> + <combo_box.item label="限制級 Flickr 內容" name="RestrictedRating"/> + </combo_box> + <button label="上傳" name="post_photo_btn"/> + <button label="取消" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml index f468aba514..f468aba514 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml index 2b16b61dd1..2b16b61dd1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml index 43e3507961..1fb0b3f5bb 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml @@ -23,6 +23,7 @@ <accordion_tab name="group_roles_tab" title="角色與成員"/> <accordion_tab name="group_notices_tab" title="通知"/> <accordion_tab name="group_land_tab" title="土地 / 資產"/> + <accordion_tab name="group_experiences_tab" title="體驗"/> </accordion> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/panel_group_invite.xml b/indra/newview/skins/default/xui/zh/panel_group_invite.xml index 250bbaab6a..250bbaab6a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml index 81d5573e1c..81d5573e1c 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml index fec4bb572a..fec4bb572a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_notices.xml b/indra/newview/skins/default/xui/zh/panel_group_notices.xml index ba5f4f1bba..ba5f4f1bba 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_notices.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_notify.xml b/indra/newview/skins/default/xui/zh/panel_group_notify.xml index 08a8c94876..08a8c94876 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_notify.xml diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml index b4b32c204a..b4b32c204a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_roles.xml diff --git a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml index e937368a2b..e937368a2b 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml diff --git a/indra/newview/skins/default/xui/zh/panel_instant_message.xml b/indra/newview/skins/default/xui/zh/panel_instant_message.xml index cf9bc7fccb..cf9bc7fccb 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/zh/panel_instant_message.xml diff --git a/indra/newview/skins/default/xui/zh/panel_inventory_item.xml b/indra/newview/skins/default/xui/zh/panel_inventory_item.xml index d18047fbcf..d18047fbcf 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_inventory_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml index b50aa24d3f..b50aa24d3f 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml diff --git a/indra/newview/skins/default/xui/zh/panel_landmarks.xml b/indra/newview/skins/default/xui/zh/panel_landmarks.xml index eea406170a..eea406170a 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/zh/panel_landmarks.xml diff --git a/indra/newview/skins/default/xui/zh/panel_login.xml b/indra/newview/skins/default/xui/zh/panel_login.xml index 09a1af5cf8..5292e5fc38 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_login.xml +++ b/indra/newview/skins/default/xui/zh/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="使用者名稱" name="username_combo" tool_tip="使用者名稱是你註冊時所挑選的,例如 bobsmith12 或 Steller Sunshine"/> <line_editor label="密碼" name="password_edit"/> - <check_box label="記得我" name="remember_check"/> - <text name="forgot_password_text"> - 忘記密碼 - </text> - <button label="登入" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - 到我上次去的地點 - </text> <combo_box label="我的最愛" name="start_location_combo"> + <combo_box.item label="我上一次位置" name="MyLastLocation"/> <combo_box.item label="我的家" name="MyHome"/> </combo_box> - <button label="登入" name="connect_favorite_btn"/> - <line_editor label="鍵入一個地點" name="location_edit"/> - <button label="登入" name="connect_location_btn"/> + <button label="登入" name="connect_btn"/> + <check_box label="記得我" name="remember_check"/> + <text name="forgot_password_text">忘記密碼</text> <combo_box label="選擇模擬世界" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml index 0ad3d8506d..0ad3d8506d 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml new file mode 100644 index 0000000000..2eae87c6a0 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="檢視/排序的選項"/> + <button name="add_btn" tool_tip="新建一個刊登資料夾"/> + <button label="檢查是否有誤" name="audit_btn" tool_tip="檢查你的 Marketplace 刊登"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="過濾 Marketplace 刊登清單" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000..a052a50bd1 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="全部" name="All Items" tool_tip="拖曳並置放物品到這裡,即可刊登"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000..3adc66a1d4 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="已刊登" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000..d582e6615c --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="已取消聯結" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000..6d00f3d9b7 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="未刊登" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_me.xml b/indra/newview/skins/default/xui/zh/panel_me.xml index aad1348e46..aad1348e46 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_me.xml +++ b/indra/newview/skins/default/xui/zh/panel_me.xml diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml index 0c11befcf5..0c11befcf5 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml index 4a1eaef3a1..4a1eaef3a1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml index da84d6fe02..da84d6fe02 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml diff --git a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml index 7a11aa961b..7a11aa961b 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml index bb52c13a11..bb52c13a11 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml +++ b/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml index fc52168bb7..fc52168bb7 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml index 9489113d09..9489113d09 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_media.xml b/indra/newview/skins/default/xui/zh/panel_nearby_media.xml index c11a7a088b..c11a7a088b 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/zh/panel_nearby_media.xml diff --git a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml index 01a8210338..01a8210338 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml diff --git a/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml b/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml index a5d3afccb9..a5d3afccb9 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml index 8de0bb0e4d..8de0bb0e4d 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml index a698da0ab1..a698da0ab1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml index 8dd93543c0..8dd93543c0 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml index 92ec774f9b..92ec774f9b 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_list.xml b/indra/newview/skins/default/xui/zh/panel_outfits_list.xml index cfb0180f9c..cfb0180f9c 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_list.xml diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml index 693cdcdeca..693cdcdeca 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml index da5918d553..da5918d553 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_people.xml +++ b/indra/newview/skins/default/xui/zh/panel_people.xml diff --git a/indra/newview/skins/default/xui/zh/panel_pick_info.xml b/indra/newview/skins/default/xui/zh/panel_pick_info.xml index cd4cdbf999..cd4cdbf999 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_pick_info.xml diff --git a/indra/newview/skins/default/xui/zh/panel_picks.xml b/indra/newview/skins/default/xui/zh/panel_picks.xml index 98d36eaea0..98d36eaea0 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_picks.xml +++ b/indra/newview/skins/default/xui/zh/panel_picks.xml diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml index a364f732d8..a364f732d8 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_place_profile.xml diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml index 08cae610f6..08cae610f6 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_places.xml +++ b/indra/newview/skins/default/xui/zh/panel_places.xml diff --git a/indra/newview/skins/default/xui/zh/panel_postcard_message.xml b/indra/newview/skins/default/xui/zh/panel_postcard_message.xml index 563c4fca3c..563c4fca3c 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/zh/panel_postcard_message.xml diff --git a/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml b/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml index 900ab3a54e..8ab122ccc3 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml @@ -7,17 +7,7 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="自訂" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="寬" name="postcard_snapshot_width"/> - <spinner label="高度" name="postcard_snapshot_height"/> - <check_box label="鎖住比例" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="圖像品質" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="寬 x 高" name="postcard_snapshot_width"/> + <check_box label="鎖住比例" name="postcard_keep_aspect_check"/> + <slider label="清晰度:" name="image_quality_slider"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml index 170cdddb8c..170cdddb8c 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml index 94eb3c1389..94eb3c1389 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml index b5cdddc252..b5cdddc252 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml b/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml index 6af4bb8970..6af4bb8970 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml index 20335d82ae..20335d82ae 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml index 2311eb99a7..2311eb99a7 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml index 3a27477885..3a27477885 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml index aa2486e988..aa2486e988 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml index ab4d9a881d..fcbed76d49 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml @@ -14,9 +14,9 @@ <text name="Web:"> 網頁: </text> - <radio_group name="use_external_browser"> - <radio_item label="使用我的網頁瀏覽器(例如 IE, Firefox, Safari)" name="external" tool_tip="使用系統預設的瀏覽器瀏覽幫助,開啟網頁。全螢幕模式下不建議這麼做。" value="true"/> - <radio_item label="使用內建網頁瀏覽器" name="internal" tool_tip="使用內建的瀏覽器瀏覽幫助,開啟網頁。該瀏覽器將透過 [APP_NAME] 開啟新視窗。" value=""/> + <radio_group name="preferred_browser_behavior"> + <radio_item label="所有連結都用我的網頁瀏覽器(例如 Chrome、Firefox、IE)開啟" name="internal" tool_tip="使用系統預設的瀏覽器瀏覽幫助,開啟網頁。全螢幕模式下不建議這麼做。" value="0"/> + <radio_item label="僅在開啟第二人生連結時使用內建瀏覽器" name="external" tool_tip="使用系統預設的瀏覽器瀏覽幫助,開啟網頁。僅在開啟 LindenLab/SecondLife 的連結時才會使用內建瀏覽器。" value="1"/> </radio_group> <check_box initial_value="true" label="啟用外掛" name="browser_plugins_enabled"/> <check_box initial_value="true" label="接受 cookies" name="cookies_enabled"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml index e57f08fd74..e57f08fd74 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml diff --git a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml index 09043311da..09043311da 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_covenant.xml b/indra/newview/skins/default/xui/zh/panel_region_covenant.xml index d5dd337795..d5dd337795 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml index 0bb59a7b14..0bb59a7b14 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_environment.xml b/indra/newview/skins/default/xui/zh/panel_region_environment.xml index 8f466af39e..8f466af39e 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_environment.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_estate.xml b/indra/newview/skins/default/xui/zh/panel_region_estate.xml index f3c1c85379..f3c1c85379 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_experiences.xml b/indra/newview/skins/default/xui/zh/panel_region_experiences.xml new file mode 100644 index 0000000000..7b1b697fd6 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_region_experiences.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="體驗" name="Experiences"> + <panel.string name="trusted_estate_text"> + 任何體驗都可以成為金鑰體驗。 + +金鑰體驗可在此領地執行。 + +此外,即使這個領地平常不開放進入,參與任何鑰匙體驗的居民,只要維持處在「金鑰體驗」狀態,仍可進入領地停留。 + </panel.string> + <panel.string name="allowed_estate_text"> + 只允准「土地範圍」的體驗。 + +獲准的體驗可在此領地執行。 + </panel.string> + <panel.string name="blocked_estate_text"> + 只封鎖「網格範圍」的體驗。 + +遭封鎖的體驗不得在此領地執行。 + </panel.string> + <panel.string name="estate_caption"> + 變更此夜籤中的設定會影響這個領地內的全部地區設定。 + </panel.string> + <panel.string name="allowed_parcel_text"> + 只允准「土地範圍」的體驗。 + +獲准的體驗若未被領地封鎖,就可在此地段執行。 + </panel.string> + <panel.string name="blocked_parcel_text"> + 任何居民的體驗都可以加以封鎖。 + +遭封鎖的體驗不得在此地段執行。 + </panel.string> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml index 0ce3b659b2..0ce3b659b2 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml index 85e759e445..85e759e445 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/zh/panel_script_ed.xml b/indra/newview/skins/default/xui/zh/panel_script_ed.xml index c64982b397..c64982b397 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml diff --git a/indra/newview/skins/default/xui/zh/panel_script_experience.xml b/indra/newview/skins/default/xui/zh/panel_script_experience.xml new file mode 100644 index 0000000000..40fd0a90de --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_script_experience.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel name="script_experience" title="體驗"> + <button label="體驗" name="Expand Experience"/> + <check_box label="使用體驗" name="enable_xp"/> + <layout_stack name="xp_details"> + <layout_panel> + <combo_box label="選擇體驗…" name="Experiences..."/> + </layout_panel> + </layout_stack> + <text name="No Experiences"> + 你尚未對任何體驗作貢獻。 + </text> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml index eb32d39f78..eb32d39f78 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml index 40a2dd6926..40a2dd6926 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml diff --git a/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml b/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml index a2d0237da0..a2d0237da0 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml diff --git a/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml b/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml index bc29058f77..bc29058f77 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml index fa659040ea..fa659040ea 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml index cdd79da30c..cdd79da30c 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml index 20fb9b494a..9c45c54a5e 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - 儲存到我的收納區 + 收納區 </text> <text name="hint_lbl"> 將圖像儲存到收納區的費用為 L$[UPLOAD_COST]。 若要將圖像存為材質,請選擇一個正方格式。 @@ -13,8 +13,8 @@ <combo_box.item label="大(512x512)" name="Large(512x512)"/> <combo_box.item label="自訂" name="Custom"/> </combo_box> - <spinner label="寬" name="inventory_snapshot_width"/> - <spinner label="高度" name="inventory_snapshot_height"/> + <spinner label="寬 x 高" name="inventory_snapshot_width"/> + <spinner label="" name="inventory_snapshot_height"/> <check_box label="鎖住比例" name="inventory_keep_aspect_check"/> <button label="取消" name="cancel_btn"/> <button label="儲存" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml index a929c9a3fb..691ab8bac7 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - 儲存到電腦上 + 硬碟 </text> <combo_box label="解析度" name="local_size_combo"> <combo_box.item label="目前視窗" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="自訂" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="寬" name="local_snapshot_width"/> - <spinner label="高度" name="local_snapshot_height"/> - <check_box label="鎖住比例" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="格式" name="local_format_combo"> - <combo_box.item label="PNG(零失真)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP(零失真)" name="BMP"/> - </combo_box> - <slider label="圖像品質" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="寬 x 高" name="local_snapshot_width"/> + <check_box label="鎖住比例" name="local_keep_aspect_check"/> + <text name="local_format_label"> + 格式 + </text> + <combo_box label="格式" name="local_format_combo"> + <combo_box.item label="PNG(零失真)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP(零失真)" name="BMP"/> + </combo_box> + <slider label="清晰度:" name="image_quality_slider"/> <button label="取消" name="cancel_btn"/> <flyout_button label="儲存" name="save_btn" tool_tip="儲存圖像到檔案"> <flyout_button.item label="儲存" name="save_item"/> diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml index 43d7280373..a5a1cbfb51 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml @@ -1,16 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="送至我的檔案訊息發佈" name="save_to_profile_btn"/> - <button label="電郵" name="save_to_email_btn"/> - <button label="儲存到我的收納區(L$[AMOUNT])" name="save_to_inventory_btn"/> - <button label="儲存到電腦上" name="save_to_computer_btn"/> - <text name="send_to_facebook_textbox"> - [secondlife:/// 臉書(Facebook)] - </text> - <text name="send_to_twitter_textbox"> - [secondlife:/// 推特(Twitter)] - </text> - <text name="send_to_flickr_textbox"> - [secondlife:/// Flickr] - </text> + <button label="儲存到硬碟" name="save_to_computer_btn"/> + <button label="儲存到收納區(L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="上傳到簡覽" name="save_to_profile_btn"/> + <button label="上傳到臉書" name="send_to_facebook_btn"/> + <button label="上傳到推特" name="send_to_twitter_btn"/> + <button label="上傳到 Flickr" name="send_to_flickr_btn"/> + <button label="用電郵傳送" name="save_to_email_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml index 853a856104..77f8b335db 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml @@ -12,6 +12,10 @@ <text name="title"> 電郵 </text> - <button label="訊息" name="message_btn"/> - <button label="設定" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel label="訊息" name="panel_postcard_message"/> + <panel label="設定" name="panel_postcard_settings"/> + </tab_container> + <button label="取消" name="cancel_btn"/> + <button label="送出" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml index 6f64a4e83c..1f202572f5 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - 送至我的檔案訊息發佈 + 簡覽 </text> <combo_box label="解析度" name="profile_size_combo"> <combo_box.item label="目前視窗" name="CurrentWindow"/> @@ -10,19 +10,12 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="自訂" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="寬" name="profile_snapshot_width"/> - <spinner label="高度" name="profile_snapshot_height"/> - <check_box label="鎖住比例" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - 內容敘述: - </text> - <check_box initial_value="true" label="加入所在位置" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="寬 x 高" name="profile_snapshot_width"/> + <check_box label="鎖住比例" name="profile_keep_aspect_check"/> + <text name="caption_label"> + 內容敘述: + </text> + <check_box initial_value="true" label="加入所在位置" name="add_location_cb"/> <button label="取消" name="cancel_btn"/> <button label="發佈" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_sound_devices.xml b/indra/newview/skins/default/xui/zh/panel_sound_devices.xml index fa4e24a605..fa4e24a605 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/zh/panel_sound_devices.xml diff --git a/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml index 4586d4eca1..4586d4eca1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml diff --git a/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/indra/newview/skins/default/xui/zh/panel_status_bar.xml index b4cdff9d6b..2de31eb526 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - 封包損失 - </panel.string> - <panel.string name="bandwidth_tooltip"> - 頻寬 - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">封包損失</panel.string> + <panel.string name="bandwidth_tooltip">頻寬</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel name="balance_bg"> - <text name="balance" tool_tip="點按以重新更新你的 L$ 帳戶餘額" value="L$20"/> + <text name="balance" tool_tip="點按以重新更新你的 L$ 帳戶餘額" value="L$??"/> <button label="購買 L$" name="buyL" tool_tip="點按以購買更多 L$"/> <button label="購物" name="goShop" tool_tip="打開第二人生購物市集"/> </panel> - <text name="TimeText" tool_tip="目前時區(太平洋)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="目前時區(太平洋)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="開始/停止全部媒體(音樂、影片、網頁)"/> <button name="volume_btn" tool_tip="全域音量控制"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml index 44d545a86d..44d545a86d 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml index 93c02900e2..93c02900e2 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml diff --git a/indra/newview/skins/default/xui/zh/panel_twitter_photo.xml b/indra/newview/skins/default/xui/zh/panel_twitter_photo.xml index d015f4aa95..19eb23eac7 100644 --- a/indra/newview/skins/default/xui/zh/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/zh/panel_twitter_photo.xml @@ -1,32 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_twitter_photo"> - <layout_stack name="stack_photo"> - <layout_panel name="text_panel"> - <text name="status_label"> - 說一說你正在做什麼 - </text> - <text name="status_counter_label"> - 140 - </text> - <check_box initial_value="true" label="加入所在位置" name="add_location_cb"/> - <check_box initial_value="true" label="附上照片" name="add_photo_cb"/> - </layout_panel> - <layout_panel name="snapshot_panel"> - <combo_box name="resolution_combobox" tool_tip="圖像解析度"> - <combo_box.item label="目前視窗" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> - <combo_box.item label="不用濾鏡" name="NoFilter"/> - </combo_box> - <button label="刷新" name="new_snapshot_btn" tool_tip="點按即可刷新"/> - <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> - </layout_panel> - <layout_panel name="photo_button_panel"> - <button label="發到推特" name="post_photo_btn"/> - <button label="取消" name="cancel_photo_btn"/> - </layout_panel> - </layout_stack> + <text name="status_label"> + 說一說你正在做什麼 + </text> + <text name="status_counter_label"> + 140 + </text> + <check_box initial_value="true" label="加入所在位置" name="add_location_cb"/> + <check_box initial_value="true" label="附上照片" name="add_photo_cb"/> + <combo_box name="resolution_combobox" tool_tip="圖像解析度"> + <combo_box.item label="目前視窗" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + </combo_box> + <combo_box name="filters_combobox" tool_tip="圖像濾鏡"> + <combo_box.item label="不用濾鏡" name="NoFilter"/> + </combo_box> + <button label="刷新" name="new_snapshot_btn" tool_tip="點按即可刷新"/> + <button label="預覽" name="big_preview_btn" tool_tip="點按即可切換預覽"/> + <button label="發到推特" name="post_photo_btn"/> + <button label="取消" name="cancel_photo_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml b/indra/newview/skins/default/xui/zh/panel_voice_effect.xml index 6c8a452014..6c8a452014 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/zh/panel_voice_effect.xml diff --git a/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml index 70ec028176..70ec028176 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml diff --git a/indra/newview/skins/default/xui/zh/panel_world_map.xml b/indra/newview/skins/default/xui/zh/panel_world_map.xml index 84018768a1..84018768a1 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_world_map.xml +++ b/indra/newview/skins/default/xui/zh/panel_world_map.xml diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml index 96f931f73f..0a3ef8c710 100755..100644 --- a/indra/newview/skins/default/xui/zh/role_actions.xml +++ b/indra/newview/skins/default/xui/zh/role_actions.xml @@ -71,4 +71,8 @@ <action description="加入群組語音聊天" longdescription="身負具這能力的角色的成員,可以加入群組的語音聊天會話。 注意:欲加入語音聊天會話,需有「加入群組聊天」能力。" name="join voice chat" value="27"/> <action description="適度成人內容的群組聊天" longdescription="身負具這能力的角色的成員,可以控制誰可加入群組語音和文字聊天會話。" name="moderate group chat" value="37"/> </action_set> + <action_set description="這些能力包括修改本群組所擁有的體驗的權限" name="experience_tools_experience"> + <action description="體驗管理" longdescription="擔任有此能力的角色的成員,可以編輯一個體驗的元資料。" name="experience admin" value="49"/> + <action description="體驗貢獻者" longdescription="擔任有此能力的角色的成員,可以為一個體驗貢獻腳本。" name="experience contributor" value="50"/> + </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml index 83a9bdf6a5..83a9bdf6a5 100755..100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml index 54ea7cab22..54ea7cab22 100755..100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml index 1b093e0ecd..9c5798d256 100755..100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="物品檔案"> + <panel.string name="loading_experience"> + (載入中) + </panel.string> <panel.string name="unknown"> (未知) </panel.string> @@ -43,17 +46,20 @@ <text name="LabelAcquiredTitle"> 取得於: </text> + <text name="LabelItemExperienceTitle"> + 體驗: + </text> <panel name="perms_inv"> <text name="perm_modify"> 你可以: </text> <check_box label="修改" name="CheckOwnerModify"/> - <check_box label="恚庨" name="CheckOwnerCopy"/> + <check_box label="複製" name="CheckOwnerCopy"/> <check_box label="轉移" name="CheckOwnerTransfer"/> <text name="AnyoneLabel"> 任何人: </text> - <check_box label="恚庨" name="CheckEveryoneCopy"/> + <check_box label="複製" name="CheckEveryoneCopy"/> <text name="GroupLabel"> 群組: </text> @@ -62,12 +68,13 @@ 下一個所有人: </text> <check_box label="修改" name="CheckNextOwnerModify"/> - <check_box label="恚庨" name="CheckNextOwnerCopy"/> + <check_box label="複製" name="CheckNextOwnerCopy"/> <check_box label="轉移" name="CheckNextOwnerTransfer" tool_tip="下一個所有人可贈送或轉售這個物件"/> </panel> <check_box label="出售" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="恚庨" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="複製" name="Copy"/> + <combo_box.item label="內容" name="Contents"/> <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="價格: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml index 60f44a3d88..0884f1789b 100755..100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="物件檔案"> - <panel.string name="text deed continued"> - 讓渡 - </panel.string> - <panel.string name="text deed"> - 讓渡 - </panel.string> - <panel.string name="text modify info 1"> - 你能修改這個物件 - </panel.string> - <panel.string name="text modify info 2"> - 你能修改這些物件 - </panel.string> - <panel.string name="text modify info 3"> - 你不能修改這個物件 - </panel.string> - <panel.string name="text modify info 4"> - 你不能修改這些物件 - </panel.string> - <panel.string name="text modify info 5"> - 無法跨地區修改這個物件 - </panel.string> - <panel.string name="text modify info 6"> - 無法跨地區修改這些物件 - </panel.string> - <panel.string name="text modify warning"> - 這個物件含有聯結的部分 - </panel.string> - <panel.string name="Cost Default"> - 價格: L$ - </panel.string> - <panel.string name="Cost Total"> - 總價:L$ - </panel.string> - <panel.string name="Cost Per Unit"> - 單價:L$ - </panel.string> - <panel.string name="Cost Mixed"> - 混合價格 - </panel.string> - <panel.string name="Sale Mixed"> - 混合銷售 - </panel.string> + <panel.string name="text deed continued">讓渡</panel.string> + <panel.string name="text deed">讓渡</panel.string> + <panel.string name="text modify info 1">你能修改這個物件</panel.string> + <panel.string name="text modify info 2">你能修改這些物件</panel.string> + <panel.string name="text modify info 3">你不能修改這個物件</panel.string> + <panel.string name="text modify info 4">你不能修改這些物件</panel.string> + <panel.string name="text modify info 5">無法跨地區修改這個物件</panel.string> + <panel.string name="text modify info 6">無法跨地區修改這些物件</panel.string> + <panel.string name="text modify warning">這個物件含有聯結的部分</panel.string> + <panel.string name="Cost Default">價格: L$</panel.string> + <panel.string name="Cost Total">總價格:L$</panel.string> + <panel.string name="Cost Per Unit">單價:L$</panel.string> + <panel.string name="Cost Mixed">混合價格</panel.string> + <panel.string name="Sale Mixed">混合銷售</panel.string> <text name="title" value="物件檔案"/> <text name="where" value="(在虛擬世界)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - 名稱: - </text> - <text name="Description:"> - 描述: - </text> - <text name="CreatorNameLabel"> - 創造者: - </text> - <text name="Owner:"> - 所有人: - </text> - <text name="Group_label"> - 群組: - </text> + <text name="Name:">名稱:</text> + <text name="Description:">描述:</text> + <text name="CreatorNameLabel">創造者:</text> + <text name="Owner:">所有人:</text> + <text name="Group_label">群組:</text> <button name="button set group" tool_tip="選擇一個群組以分享這物件的權限"/> <name_box initial_value="載入中..." name="Group Name Proxy"/> <button label="讓渡" label_selected="讓渡" name="button deed" tool_tip="「讓渡」會把這物件贈送出去並賦予「下一個所有人」權限。 群組所分享的物件可由群組職員加以讓渡。"/> - <text name="label click action"> - 點按以: - </text> + <text name="label click action">點按以:</text> <combo_box name="clickaction"> <combo_box.item label="觸碰(預設)" name="Touch/grab(default)"/> <combo_box.item label="坐在物件上" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="縮放" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - 你能修改這個物件 - </text> - <text name="Anyone can:"> - 任何人: - </text> + <text name="perm_modify">你能修改這個物件</text> + <text name="Anyone can:">任何人:</text> <check_box label="恚庨" name="checkbox allow everyone copy"/> <check_box label="移動" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - 群組: - </text> + <text name="GroupLabel">群組:</text> <check_box label="分享" name="checkbox share with group" tool_tip="允許此群組所有成員共享你修改此物件的權限。 你必須讓渡才能啟動角色限制。"/> - <text name="NextOwnerLabel"> - 下一個所有人: - </text> + <text name="NextOwnerLabel">下一個所有人:</text> <check_box label="修改" name="checkbox next owner can modify"/> <check_box label="恚庨" name="checkbox next owner can copy"/> <check_box label="轉移" name="checkbox next owner can transfer" tool_tip="下一個所有人可贈送或轉售這個物件"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="價格: L$" name="Edit Cost"/> <check_box label="顯示在搜尋中" name="search_check" tool_tip="讓其他人可以在搜尋結果中察看到此物件"/> - <text name="pathfinding_attributes_label"> - 尋徑屬性: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">尋徑屬性:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="打開" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index ad2c331ee4..2e07e4ebd0 100755..100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -38,7 +38,7 @@ 顯像初始化失敗。 請更新你的顯像卡驅動程式! </string> <string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] </string> <string name="AboutCompiler"> @@ -444,30 +444,51 @@ http://secondlife.com/viewer-access-faq <string name="TooltipMustSingleDrop"> 只有一個物品可以被拖曳到此處 </string> + <string name="TooltipTooManyWearables"> + 你不能對含超過 [AMOUNT] 個物項的資料夾作穿戴動作。 欲變更此上限,可到「進階」>「顯示除錯設定」>「WearFolderLimit」。 + </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - 商家發件匣內的物項無法產生到虛擬世界 + 你不能從 Marketplace 的刊登資料夾產生物件。 + </string> + <string name="TooltipOutboxWorn"> + 你不能把正在穿戴的物件放到 Marketplace 的刊登資料夾 + </string> + <string name="TooltipOutboxFolderLevels"> + 巢狀資料夾深度超過 [AMOUNT]。 請減少巢狀資料夾的深度,必要的話請把物件併整起來。 + </string> + <string name="TooltipOutboxTooManyFolders"> + 子資料夾數目超過 [AMOUNT]。 請減少刊登的資料夾數目,必要的話請把物件併整起來。 + </string> + <string name="TooltipOutboxTooManyObjects"> + 物件數目超過 [AMOUNT]。 若想在同一刊登中出售超過 [AMOUNT] 個物件,你需要把物件併整起來。 + </string> + <string name="TooltipOutboxTooManyStockItems"> + 限量物件數目超過 [AMOUNT]。 + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + 你只能把物項或資料夾拖放到「所有」(ALL)頁籤 請選取該頁籤,再移動你的物項或資料夾。 </string> <string name="TooltipOutboxNoTransfer"> - 至少一個物件無法出售或轉移。 + 至少一個物件無法出售或轉移 </string> <string name="TooltipOutboxNotInInventory"> - 你的商家發件匣只能接受直接來自收納區的物項。 + 你只能將物件從收納區放到 Marketplace。 </string> - <string name="TooltipOutboxWorn"> - 你穿著中的物項無法放入商家發件匣。 + <string name="TooltipOutboxLinked"> + 你不能把聯結的物件或資料夾放到 Marketplace </string> <string name="TooltipOutboxCallingCard"> - 名片不得放入商家發件匣 + 你不能把名片放到 Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - 巢狀資料夾深度超過 3 + <string name="TooltipOutboxDragActive"> + 已登出的刊登內容不得移動 </string> - <string name="TooltipOutboxTooManyFolders"> - 頂層資料夾的子資料夾數目超過 20 + <string name="TooltipOutboxCannotMoveRoot"> + 你不能移動 Marketplace 刊登的根目錄 </string> - <string name="TooltipOutboxTooManyObjects"> - 頂層資料夾物項數目超過 200 + <string name="TooltipOutboxMixedStock"> + 限量資料夾的所有物件必須是相同的類型和權限 </string> <string name="TooltipDragOntoOwnChild"> 資料夾不得移到其子資料夾底下 @@ -1052,9 +1073,7 @@ http://secondlife.com/viewer-access-faq <string name="AgentNameSubst"> (你) </string> - <string name="JoinAnExperience"> - 加入體驗 - </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> 管理領出入許可名單時,不顯示警示 </string> @@ -1121,6 +1140,12 @@ http://secondlife.com/viewer-access-faq <string name="bitmap_image_files"> Bitmap 圖像 </string> + <string name="png_image_files"> + PNG 圖像 + </string> + <string name="save_texture_image_files"> + Targa 或 PNG 圖像 + </string> <string name="avi_movie_file"> AVI 視頻檔案 </string> @@ -1370,6 +1395,9 @@ http://secondlife.com/viewer-access-faq <string name="FavoritesNoMatchingItems"> 將一個地標拖曳到這裡,加進「我的最愛」。 </string> + <string name="MarketplaceNoMatchingItems"> + 找不到物項。 請檢查搜尋字串的拼寫,再試一次。 + </string> <string name="InventoryNoTexture"> 你的收納區裡沒有這個材質的副本 </string> @@ -1417,29 +1445,95 @@ http://secondlife.com/viewer-access-faq <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] 購物市集商店]正傳回錯誤。 </string> + <string name="InventoryMarketplaceError"> + 這功能尚在 Beta 測試階段。 如你想參與,請到這個[http://goo.gl/forms/FCQ7UXkakz Google 表單]填寫姓名。 + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + 你的 Marketplace 刊登資料夾是空的。 + </string> + <string name="InventoryMarketplaceListingsNoItems"> + 將資料夾拖曳到這個區域,即可在[[MARKETPLACE_DASHBOARD_URL] Marketplace]刊登出售。 + </string> + <string name="Marketplace Validation Warning Stock"> + 限量資料夾必須放在版本資料夾裡 + </string> + <string name="Marketplace Validation Error Mixed Stock"> + :錯誤:限量資料夾的所有物件必須是「禁止複製」且同一類型 + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + :錯誤:限量資料夾不得含有子資料夾 + </string> + <string name="Marketplace Validation Warning Empty"> + :警告:資料夾裡沒有東西 + </string> + <string name="Marketplace Validation Warning Create Stock"> + :警告:新建限量資料夾 + </string> + <string name="Marketplace Validation Warning Create Version"> + :警告:新建版本資料夾 + </string> + <string name="Marketplace Validation Warning Move"> + :警告:移動物項 + </string> + <string name="Marketplace Validation Warning Delete"> + :警告:資料夾內容已轉移到限量資料夾,空的資料夾已移除 + </string> + <string name="Marketplace Validation Error Stock Item"> + :錯誤:「禁止複製」物件必須放在限量資料夾裡 + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + :警告:物項必須放在一個版本資料夾裡 + </string> + <string name="Marketplace Validation Error"> + :錯誤: + </string> + <string name="Marketplace Validation Warning"> + :警告: + </string> + <string name="Marketplace Validation Error Empty Version"> + :警告:版本資料夾必須包含至少一個物項 + </string> + <string name="Marketplace Validation Error Empty Stock"> + :警告:限量資料夾必須包含至少一個物項 + </string> + <string name="Marketplace Validation No Error"> + 沒有需要報告的錯誤或警告 + </string> <string name="Marketplace Error None"> 零錯誤 </string> + <string name="Marketplace Error Prefix"> + 錯誤: + </string> <string name="Marketplace Error Not Merchant"> - 發生錯誤:將物項送往第二人生購物市集之前,你必須取得商家的身份(免費)。 + 將物件移到 Marketplace 前,你必須取得商家的身份(免費)。 </string> - <string name="Marketplace Error Empty Folder"> - 錯誤:此資料夾沒有內容。 + <string name="Marketplace Error Not Accepted"> + 無法移動該資料夾的物項。 </string> - <string name="Marketplace Error Unassociated Products"> - 錯誤:此物項上傳失敗,因為你的商家帳戶有太多和產品無關聯的物項。 要解決這個問題,請登入第二人生購物市集網站,減低你的無關聯物項數目。 + <string name="Marketplace Error Unsellable Item"> + 此物項無法在 Marketplace 出售。 </string> - <string name="Marketplace Error Object Limit"> - 錯誤:此物項包含太多物件。 要解決這錯誤,請將物件裝箱,使總物件數目不超過 200。 + <string name="MarketplaceNoID"> + 沒有 Mkt ID </string> - <string name="Marketplace Error Folder Depth"> - 錯誤:此物項含有太多層的巢狀資料夾。 請加以重新整理,至多允許 3 層的巢狀資料夾。 + <string name="MarketplaceLive"> + 已刊登 </string> - <string name="Marketplace Error Unsellable Item"> - 錯誤:此物項無法在第二人生購物市集出售。 + <string name="MarketplaceActive"> + 使用中 + </string> + <string name="MarketplaceMax"> + 最多 </string> - <string name="Marketplace Error Internal Import"> - 錯誤:這個物項有問題。 請稍候再試一次。 + <string name="MarketplaceStock"> + 限量 + </string> + <string name="MarketplaceNoStock"> + 缺貨 + </string> + <string name="MarketplaceUpdating"> + 正在更新… </string> <string name="Open landmarks"> 開啟地標 @@ -1460,6 +1554,7 @@ http://secondlife.com/viewer-access-faq 無內容 </string> <string name="WornOnAttachmentPoint" value="(已穿 [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL](使用中)"/> <string name="PermYes"> 是 @@ -1730,6 +1825,15 @@ http://secondlife.com/viewer-access-faq <string name="Invalid Attachment"> 無效的附接點 </string> + <string name="ATTACHMENT_MISSING_ITEM"> + 錯誤:缺少物件 + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + 錯誤:缺少基本物項 + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + 錯誤:物件在目前的裝扮裡,可是卻未附著 + </string> <string name="YearsMonthsOld"> 年齡:[AGEYEARS] 年 [AGEMONTHS] 月 </string> @@ -1898,6 +2002,9 @@ http://secondlife.com/viewer-access-faq <string name="SaveComplete"> 儲存完畢。 </string> + <string name="UploadFailed"> + 檔案上傳失敗: + </string> <string name="ObjectOutOfRange"> 腳本(物件超出範圍) </string> @@ -1907,6 +2014,9 @@ http://secondlife.com/viewer-access-faq <string name="GroupsNone"> 無 </string> + <string name="CompileNoExperiencePerm"> + 略過體驗 [EXPERIENCE] 的腳本 [SCRIPT]。 + </string> <string name="Group" value="(群組)"/> <string name="Unknown"> (未知) @@ -4396,7 +4506,7 @@ http://secondlife.com/viewer-access-faq 女性姿勢 </string> <string name="Other Gestures"> - 其他���勢 + 其他姿勢 </string> <string name="Speech Gestures"> 演說姿勢 @@ -4658,7 +4768,7 @@ http://secondlife.com/viewer-access-faq 刪除所選取的物品? </string> <string name="DeleteItem"> - 刪除所選取的物���? + 刪除所選取的物品? </string> <string name="EmptyOutfitText"> 沒有任何物品在這個裝扮內 @@ -5070,6 +5180,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Marketplace_Label"> 第二人生購物市集 </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> 迷你地圖 </string> @@ -5157,6 +5270,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Marketplace_Tooltip"> 前往購物 </string> + <string name="Command_MarketplaceListings_Tooltip"> + 出售你的創作物 + </string> <string name="Command_MiniMap_Tooltip"> 顯示附近的人 </string> @@ -5280,4 +5396,85 @@ http://secondlife.com/viewer-access-faq <string name="loading_chat_logs"> 載入中… </string> + <string name="experience_tools_experience"> + 體驗 + </string> + <string name="ExperienceNameNull"> + (沒有體驗) + </string> + <string name="ExperienceNameUntitled"> + (無名的體驗) + </string> + <string name="Land-Scope"> + 土地範圍型 + </string> + <string name="Grid-Scope"> + 網格範圍型 + </string> + <string name="Allowed_Experiences_Tab"> + 准許 + </string> + <string name="Blocked_Experiences_Tab"> + 已封鎖的 + </string> + <string name="Contrib_Experiences_Tab"> + 貢獻者 + </string> + <string name="Admin_Experiences_Tab"> + 管理員 + </string> + <string name="Recent_Experiences_Tab"> + 最近 + </string> + <string name="Owned_Experiences_Tab"> + 擁有 + </string> + <string name="ExperiencesCounter"> + ([EXPERIENCES] 項,最多 [MAXEXPERIENCES] 項) + </string> + <string name="ExperiencePermission1"> + 取得你的各項控制 + </string> + <string name="ExperiencePermission3"> + 對你的化身觸發動作 + </string> + <string name="ExperiencePermission4"> + 附著到你的化身 + </string> + <string name="ExperiencePermission9"> + 追蹤你的攝影機 + </string> + <string name="ExperiencePermission10"> + 控制你的攝影機 + </string> + <string name="ExperiencePermission11"> + 瞬間傳送你本人 + </string> + <string name="ExperiencePermission12"> + 自動接受各種體驗權限 + </string> + <string name="ExperiencePermissionShortUnknown"> + 進行了未知的操作:[Permission] + </string> + <string name="ExperiencePermissionShort1"> + 取得控制 + </string> + <string name="ExperiencePermissionShort3"> + 觸發動作 + </string> + <string name="ExperiencePermissionShort4"> + 附著 + </string> + <string name="ExperiencePermissionShort9"> + 追蹤攝影機 + </string> + <string name="ExperiencePermissionShort10"> + 控制攝影機 + </string> + <string name="ExperiencePermissionShort11"> + 瞬間傳送 + </string> + <string name="ExperiencePermissionShort12"> + 權限 + </string> </strings> diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml index 37080a8d0c..61db294272 100755..100644 --- a/indra/newview/skins/default/xui/zh/teleport_strings.xml +++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml @@ -48,6 +48,9 @@ <message name="MustGetAgeRegion"> 你必須年滿 18 歲才可進入這地區。 </message> + <message name="RegionTPSpecialUsageBlocked"> + 無法進入地區。 '[REGION_NAME]' 是個「技巧性博奕」(Skill Gaming)地區,你必須符合一定條件才可進入。 欲知詳情,請參閱 [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life 技巧性博奕常見問題集]。 + </message> </message_set> <message_set name="progress"> <message name="sending_dest"> diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt index 106593afd5..106593afd5 100755..100644 --- a/indra/newview/tests/gpus_results.txt +++ b/indra/newview/tests/gpus_results.txt diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt index a417cb3761..a417cb3761 100755..100644 --- a/indra/newview/tests/gpus_seen.txt +++ b/indra/newview/tests/gpus_seen.txt diff --git a/indra/newview/tests/llagentaccess_test.cpp b/indra/newview/tests/llagentaccess_test.cpp index 45ce1ba62f..45ce1ba62f 100755..100644 --- a/indra/newview/tests/llagentaccess_test.cpp +++ b/indra/newview/tests/llagentaccess_test.cpp diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index bde991a01e..bde991a01e 100755..100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp index 47353962e1..47353962e1 100755..100644 --- a/indra/newview/tests/lldateutil_test.cpp +++ b/indra/newview/tests/lldateutil_test.cpp diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp index 2bc6772d86..2bc6772d86 100755..100644 --- a/indra/newview/tests/lldir_stub.cpp +++ b/indra/newview/tests/lldir_stub.cpp diff --git a/indra/newview/tests/llglslshader_stub.cpp b/indra/newview/tests/llglslshader_stub.cpp index 8947a632c8..8947a632c8 100755..100644 --- a/indra/newview/tests/llglslshader_stub.cpp +++ b/indra/newview/tests/llglslshader_stub.cpp diff --git a/indra/newview/tests/llhttpretrypolicy_test.cpp b/indra/newview/tests/llhttpretrypolicy_test.cpp index 25e6de46d9..25e6de46d9 100755..100644 --- a/indra/newview/tests/llhttpretrypolicy_test.cpp +++ b/indra/newview/tests/llhttpretrypolicy_test.cpp diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index 1b0334498e..1b0334498e 100755..100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp index 6f57daf151..7cb4aeb121 100755..100644 --- a/indra/newview/tests/llmediadataclient_test.cpp +++ b/indra/newview/tests/llmediadataclient_test.cpp @@ -26,7 +26,7 @@ #include "linden_common.h" #include "../llviewerprecompiledheaders.h" - + #include <iostream> #include "../test/lltut.h" diff --git a/indra/newview/tests/llpipeline_stub.cpp b/indra/newview/tests/llpipeline_stub.cpp index ad112cbf6a..ad112cbf6a 100755..100644 --- a/indra/newview/tests/llpipeline_stub.cpp +++ b/indra/newview/tests/llpipeline_stub.cpp diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp index c49b0350e9..c49b0350e9 100755..100644 --- a/indra/newview/tests/llremoteparcelrequest_test.cpp +++ b/indra/newview/tests/llremoteparcelrequest_test.cpp diff --git a/indra/newview/tests/llsecapi_test.cpp b/indra/newview/tests/llsecapi_test.cpp index d7e87ed52e..d7e87ed52e 100755..100644 --- a/indra/newview/tests/llsecapi_test.cpp +++ b/indra/newview/tests/llsecapi_test.cpp diff --git a/indra/newview/tests/llsechandler_basic_test.cpp b/indra/newview/tests/llsechandler_basic_test.cpp index 2a8dc15346..2a8dc15346 100755..100644 --- a/indra/newview/tests/llsechandler_basic_test.cpp +++ b/indra/newview/tests/llsechandler_basic_test.cpp diff --git a/indra/newview/tests/llsky_stub.cpp b/indra/newview/tests/llsky_stub.cpp index 241d740635..241d740635 100755..100644 --- a/indra/newview/tests/llsky_stub.cpp +++ b/indra/newview/tests/llsky_stub.cpp diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp index 2bc0d5a086..4694f657b6 100755..100644 --- a/indra/newview/tests/llslurl_test.cpp +++ b/indra/newview/tests/llslurl_test.cpp @@ -39,7 +39,21 @@ namespace static const char * const TEST_FILENAME("llslurl_test.xml"); } - + +// +// Stub implementation for LLTrans +// +class LLTrans +{ +public: + static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args); +}; + +std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) +{ + return std::string(); +} + //---------------------------------------------------------------------------- // Mock objects for the dependencies of the code we're testing diff --git a/indra/newview/tests/lltextureinfo_test.cpp b/indra/newview/tests/lltextureinfo_test.cpp index 73ace1de37..73ace1de37 100755..100644 --- a/indra/newview/tests/lltextureinfo_test.cpp +++ b/indra/newview/tests/lltextureinfo_test.cpp diff --git a/indra/newview/tests/lltextureinfodetails_test.cpp b/indra/newview/tests/lltextureinfodetails_test.cpp index 31ec5f9d4e..31ec5f9d4e 100755..100644 --- a/indra/newview/tests/lltextureinfodetails_test.cpp +++ b/indra/newview/tests/lltextureinfodetails_test.cpp diff --git a/indra/newview/tests/lltexturestatsuploader_test.cpp b/indra/newview/tests/lltexturestatsuploader_test.cpp index 4438523022..4438523022 100755..100644 --- a/indra/newview/tests/lltexturestatsuploader_test.cpp +++ b/indra/newview/tests/lltexturestatsuploader_test.cpp diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp index 5e73dbb981..5e73dbb981 100755..100644 --- a/indra/newview/tests/lltranslate_test.cpp +++ b/indra/newview/tests/lltranslate_test.cpp diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp index 6b0be29c2d..6b0be29c2d 100755..100644 --- a/indra/newview/tests/llversioninfo_test.cpp +++ b/indra/newview/tests/llversioninfo_test.cpp diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp index a08e32cb49..a08e32cb49 100755..100644 --- a/indra/newview/tests/llviewerassetstats_test.cpp +++ b/indra/newview/tests/llviewerassetstats_test.cpp diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp index f6456a2839..f6456a2839 100755..100644 --- a/indra/newview/tests/llviewerhelputil_test.cpp +++ b/indra/newview/tests/llviewerhelputil_test.cpp diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp index 0eb0ab6500..e68da14fe9 100755..100644 --- a/indra/newview/tests/llviewernetwork_test.cpp +++ b/indra/newview/tests/llviewernetwork_test.cpp @@ -38,6 +38,31 @@ namespace static const char * const TEST_FILENAME("llviewernetwork_test.xml"); } + +// +// Stub implementation for LLTrans +// +class LLTrans +{ +public: + static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args); +}; + +std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) +{ + std::string grid_label = std::string(); + if(xml_desc == "AgniGridLabel") + { + grid_label = "Second Life Main Grid (Agni)"; + } + else if(xml_desc == "AditiGridLabel") + { + grid_label = "Second Life Beta Test Grid (Aditi)"; + } + + return grid_label; +} + //---------------------------------------------------------------------------- // Mock objects for the dependencies of the code we're testing diff --git a/indra/newview/tests/llviewershadermgr_stub.cpp b/indra/newview/tests/llviewershadermgr_stub.cpp index 18eff72f3c..18eff72f3c 100755..100644 --- a/indra/newview/tests/llviewershadermgr_stub.cpp +++ b/indra/newview/tests/llviewershadermgr_stub.cpp diff --git a/indra/newview/tests/llwlanimator_stub.cpp b/indra/newview/tests/llwlanimator_stub.cpp index f5e15b2e7b..f5e15b2e7b 100755..100644 --- a/indra/newview/tests/llwlanimator_stub.cpp +++ b/indra/newview/tests/llwlanimator_stub.cpp diff --git a/indra/newview/tests/llwldaycycle_stub.cpp b/indra/newview/tests/llwldaycycle_stub.cpp index a7bc9a7b83..a7bc9a7b83 100755..100644 --- a/indra/newview/tests/llwldaycycle_stub.cpp +++ b/indra/newview/tests/llwldaycycle_stub.cpp diff --git a/indra/newview/tests/llwlparammanager_test.cpp b/indra/newview/tests/llwlparammanager_test.cpp index be0dc9fd0c..be0dc9fd0c 100755..100644 --- a/indra/newview/tests/llwlparammanager_test.cpp +++ b/indra/newview/tests/llwlparammanager_test.cpp diff --git a/indra/newview/tests/llwlparamset_stub.cpp b/indra/newview/tests/llwlparamset_stub.cpp index ccb99db475..ccb99db475 100755..100644 --- a/indra/newview/tests/llwlparamset_stub.cpp +++ b/indra/newview/tests/llwlparamset_stub.cpp diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp index 84194adb5d..84194adb5d 100755..100644 --- a/indra/newview/tests/llworldmap_test.cpp +++ b/indra/newview/tests/llworldmap_test.cpp diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp index 142d75bcfd..142d75bcfd 100755..100644 --- a/indra/newview/tests/llworldmipmap_test.cpp +++ b/indra/newview/tests/llworldmipmap_test.cpp diff --git a/indra/newview/tests/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp index 6e9756e7d5..6e9756e7d5 100755..100644 --- a/indra/newview/tests/llxmlrpclistener_test.cpp +++ b/indra/newview/tests/llxmlrpclistener_test.cpp diff --git a/indra/newview/tr.lproj/language.txt b/indra/newview/tr.lproj/language.txt index 44266bf283..44266bf283 100755..100644 --- a/indra/newview/tr.lproj/language.txt +++ b/indra/newview/tr.lproj/language.txt diff --git a/indra/newview/uk.lproj/language.txt b/indra/newview/uk.lproj/language.txt index fbc658f6f9..fbc658f6f9 100755..100644 --- a/indra/newview/uk.lproj/language.txt +++ b/indra/newview/uk.lproj/language.txt diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 32cf9d3df6..f7992dba90 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -340,9 +340,9 @@ class Windows_i686_Manifest(ViewerManifest): self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe()) # Plugin host application - # The current slplugin package places slplugin.exe right into the - # packages base directory. - self.path2basename(pkgdir, "slplugin.exe") + self.path2basename(os.path.join(os.pardir, + 'llplugin', 'slplugin', self.args['configuration']), + "slplugin.exe") self.path2basename("../viewer_components/updater/scripts/windows", "update_install.bat") # Get shared libs from the shared libs staging directory @@ -387,9 +387,13 @@ class Windows_i686_Manifest(ViewerManifest): if self.args['configuration'].lower() == 'debug': self.path("msvcr120d.dll") self.path("msvcp120d.dll") + self.path("msvcr100d.dll") + self.path("msvcp100d.dll") else: self.path("msvcr120.dll") self.path("msvcp120.dll") + self.path("msvcr100.dll") + self.path("msvcp100.dll") # Vivox runtimes self.path("SLVoice.exe") @@ -424,54 +428,121 @@ class Windows_i686_Manifest(ViewerManifest): self.path("featuretable_xp.txt") # Media plugins - QuickTime - # Media plugins - WebKit/Qt - if self.prefix(src=os.path.join(pkgdir, "llplugin"), dst="llplugin"): + if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"): self.path("media_plugin_quicktime.dll") - self.path("media_plugin_webkit.dll") - self.path("qtcore4.dll") - self.path("qtgui4.dll") - self.path("qtnetwork4.dll") - self.path("qtopengl4.dll") - self.path("qtwebkit4.dll") - self.path("qtxmlpatterns4.dll") - - # For WebKit/Qt plugin runtimes (image format plugins) - if self.prefix(src="imageformats", dst="imageformats"): - self.path("qgif4.dll") - self.path("qico4.dll") - self.path("qjpeg4.dll") - self.path("qmng4.dll") - self.path("qsvg4.dll") - self.path("qtiff4.dll") - self.end_prefix() - - # For WebKit/Qt plugin runtimes (codec/character encoding plugins) - if self.prefix(src="codecs", dst="codecs"): - self.path("qcncodecs4.dll") - self.path("qjpcodecs4.dll") - self.path("qkrcodecs4.dll") - self.path("qtwcodecs4.dll") - self.end_prefix() + self.end_prefix() - self.end_prefix() + # Media plugins - CEF + if self.prefix(src='../media_plugins/cef/%s' % self.args['configuration'], dst="llplugin"): + self.path("media_plugin_cef.dll") + self.end_prefix() # winmm.dll shim if self.prefix(src='../media_plugins/winmmshim/%s' % self.args['configuration'], dst=""): self.path("winmm.dll") self.end_prefix() + # CEF runtime files - debug if self.args['configuration'].lower() == 'debug': - if self.prefix(src=debpkgdir, dst="llplugin"): - self.path("libeay32.dll") - self.path("ssleay32.dll") + if self.prefix(src=os.path.join(os.pardir, 'packages', 'bin', 'debug'), dst="llplugin"): + self.path("d3dcompiler_43.dll") + self.path("d3dcompiler_47.dll") + self.path("libcef.dll") + self.path("libEGL.dll") + self.path("libGLESv2.dll") + self.path("llceflib_host.exe") + self.path("natives_blob.bin") + self.path("snapshot_blob.bin") + self.path("widevinecdmadapter.dll") + self.path("wow_helper.exe") self.end_prefix() - else: - if self.prefix(src=relpkgdir, dst="llplugin"): - self.path("libeay32.dll") - self.path("ssleay32.dll") + # CEF runtime files - not debug (release, relwithdebinfo etc.) + if self.prefix(src=os.path.join(os.pardir, 'packages', 'bin', 'release'), dst="llplugin"): + self.path("d3dcompiler_43.dll") + self.path("d3dcompiler_47.dll") + self.path("libcef.dll") + self.path("libEGL.dll") + self.path("libGLESv2.dll") + self.path("llceflib_host.exe") + self.path("natives_blob.bin") + self.path("snapshot_blob.bin") + self.path("widevinecdmadapter.dll") + self.path("wow_helper.exe") self.end_prefix() + # MSVC DLLs needed for CEF and have to be in same directory as plugin + if self.prefix(src=os.path.join(os.pardir, 'sharedlibs', 'Release'), dst="llplugin"): + self.path("msvcp120.dll") + self.path("msvcr120.dll") + self.end_prefix() + + # CEF files common to all configurations + if self.prefix(src=os.path.join(os.pardir, 'packages', 'resources'), dst="llplugin"): + self.path("cef.pak") + self.path("cef_100_percent.pak") + self.path("cef_200_percent.pak") + self.path("cef_extensions.pak") + self.path("devtools_resources.pak") + self.path("icudtl.dat") + self.end_prefix() + + if self.prefix(src=os.path.join(os.pardir, 'packages', 'resources', 'locales'), dst=os.path.join('llplugin', 'locales')): + self.path("am.pak") + self.path("ar.pak") + self.path("bg.pak") + self.path("bn.pak") + self.path("ca.pak") + self.path("cs.pak") + self.path("da.pak") + self.path("de.pak") + self.path("el.pak") + self.path("en-GB.pak") + self.path("en-US.pak") + self.path("es-419.pak") + self.path("es.pak") + self.path("et.pak") + self.path("fa.pak") + self.path("fi.pak") + self.path("fil.pak") + self.path("fr.pak") + self.path("gu.pak") + self.path("he.pak") + self.path("hi.pak") + self.path("hr.pak") + self.path("hu.pak") + self.path("id.pak") + self.path("it.pak") + self.path("ja.pak") + self.path("kn.pak") + self.path("ko.pak") + self.path("lt.pak") + self.path("lv.pak") + self.path("ml.pak") + self.path("mr.pak") + self.path("ms.pak") + self.path("nb.pak") + self.path("nl.pak") + self.path("pl.pak") + self.path("pt-BR.pak") + self.path("pt-PT.pak") + self.path("ro.pak") + self.path("ru.pak") + self.path("sk.pak") + self.path("sl.pak") + self.path("sr.pak") + self.path("sv.pak") + self.path("sw.pak") + self.path("ta.pak") + self.path("te.pak") + self.path("th.pak") + self.path("tr.pak") + self.path("uk.pak") + self.path("vi.pak") + self.path("zh-CN.pak") + self.path("zh-TW.pak") + self.end_prefix() + # pull in the crash logger and updater from other projects # tag:"crash-logger" here as a cue to the exporter self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'], @@ -735,14 +806,13 @@ class Darwin_i386_Manifest(ViewerManifest): dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile) # our apps - for app_bld_dir, app in ((os.path.join(os.pardir, - "mac_crash_logger", - self.args['configuration']), - "mac-crash-logger.app"), + for app_bld_dir, app in (("mac_crash_logger", "mac-crash-logger.app"), # plugin launcher - (pkgdir, "SLPlugin.app"), + (os.path.join("llplugin", "slplugin"), "SLPlugin.app"), ): - self.path2basename(app_bld_dir, app) + self.path2basename(os.path.join(os.pardir, + app_bld_dir, self.args['configuration']), + app) # our apps dependencies on shared libs # for each app, for each dylib we collected in dylibs, @@ -755,46 +825,57 @@ class Darwin_i386_Manifest(ViewerManifest): symlinkf(src, dst) except OSError as err: print "Can't symlink %s -> %s: %s" % (src, dst, err) - # SLPlugin.app/Contents/Resources gets those Qt4 libraries it needs. - if self.prefix(src="", dst="SLPlugin.app/Contents/Resources"): - for libfile in ('libQtCore.4.dylib', - 'libQtCore.4.7.1.dylib', - 'libQtGui.4.dylib', - 'libQtGui.4.7.1.dylib', - 'libQtNetwork.4.dylib', - 'libQtNetwork.4.7.1.dylib', - 'libQtOpenGL.4.dylib', - 'libQtOpenGL.4.7.1.dylib', - 'libQtSvg.4.dylib', - 'libQtSvg.4.7.1.dylib', - 'libQtWebKit.4.dylib', - 'libQtWebKit.4.7.1.dylib', - 'libQtXml.4.dylib', - 'libQtXml.4.7.1.dylib'): - self.path2basename(relpkgdir, libfile) - self.end_prefix("SLPlugin.app/Contents/Resources") - - # Qt4 codecs go to llplugin. Not certain why but this is the first - # location probed according to dtruss so we'll go with that. - if self.prefix(src=os.path.join(pkgdir, "llplugin/codecs/"), dst="llplugin/codecs"): - self.path("libq*.dylib") - self.end_prefix("llplugin/codecs") - - # Similarly for imageformats. - if self.prefix(src=os.path.join(pkgdir, "llplugin/imageformats/"), dst="llplugin/imageformats"): - self.path("libq*.dylib") - self.end_prefix("llplugin/imageformats") - - # SLPlugin plugins proper - if self.prefix(src=os.path.join(pkgdir, "llplugin"), dst="llplugin"): - self.path("media_plugin_quicktime.dylib") - self.path("media_plugin_webkit.dylib") + + # LLCefLib helper apps go inside SLPlugin.app + if self.prefix(src="", dst="SLPlugin.app/Contents/Frameworks"): + for helperappfile in ('LLCefLib Helper.app', + 'LLCefLib Helper EH.app'): + self.path2basename(relpkgdir, helperappfile) + + pluginframeworkpath = self.dst_path_of('Chromium Embedded Framework.framework'); + + self.end_prefix() + + # SLPlugin plugins + if self.prefix(src="", dst="llplugin"): + self.path2basename("../media_plugins/quicktime/" + self.args['configuration'], + "media_plugin_quicktime.dylib") + self.path2basename("../media_plugins/cef/" + self.args['configuration'], + "media_plugin_cef.dylib") self.end_prefix("llplugin") self.end_prefix("Resources") + # CEF framework goes inside Second Life.app/Contents/Frameworks + if self.prefix(src="", dst="Frameworks"): + frameworkfile="Chromium Embedded Framework.framework" + self.path2basename(relpkgdir, frameworkfile) + self.end_prefix("Frameworks") + + # This code constructs a relative path from the + # target framework folder back to the location of the symlink. + # It needs to be relative so that the symlink still works when + # (as is normal) the user moves the app bunlde out of the DMG + # and into the /Applications folder. Note we also call 'raise' + # to terminate the process if we get an error since without + # this symlink, Second Life web media can't possibly work. + # Real Framework folder: + # Second Life.app/Contents/Frameworks/Chromium Embedded Framework.framework/ + # Location of symlink and why it'ds relavie + # Second Life.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework/ + frameworkpath = os.path.join(os.pardir, os.pardir, os.pardir, os.pardir, "Frameworks", "Chromium Embedded Framework.framework") + try: + symlinkf(frameworkpath, pluginframeworkpath) + except OSError as err: + print "Can't symlink %s -> %s: %s" % (frameworkpath, pluginframeworkpath, err) + raise + self.end_prefix("Contents") + # fix up media_plugin.dylib so it knows where to look for CEF files it needs + self.run_command('install_name_tool -change "@executable_path/Chromium Embedded Framework" "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%(config)s/Second Life.app/Contents/Resources/llplugin/media_plugin_cef.dylib"' % + { 'config' : self.args['configuration'] }) + # NOTE: the -S argument to strip causes it to keep enough info for # annotated backtraces (i.e. function names in the crash log). 'strip' with no # arguments yields a slightly smaller binary but makes crash logs mostly useless. @@ -804,7 +885,6 @@ class Darwin_i386_Manifest(ViewerManifest): self.run_command('strip -S %(viewer_binary)r' % { 'viewer_binary' : self.dst_path_of('Contents/MacOS/Second Life')}) - def copy_finish(self): # Force executable permissions to be set for scripts # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 @@ -981,7 +1061,7 @@ class LinuxManifest(ViewerManifest): if self.prefix(src="", dst="bin"): self.path("secondlife-bin","do-not-directly-run-secondlife-bin") self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin") - self.path2basename(pkgdir, "SLPlugin") + self.path2basename("../llplugin/slplugin", "SLPlugin") self.path2basename("../viewer_components/updater/scripts/linux", "update_install") self.end_prefix("bin") @@ -1001,9 +1081,8 @@ class LinuxManifest(ViewerManifest): self.end_prefix(icon_path) # plugins - if self.prefix(src=os.path.join(pkgdir, "llplugin"), dst="bin/llplugin"): - self.path("libmedia_plugin_webkit.so") - self.path("libmedia_plugin_gstreamer.so") + if self.prefix(src="", dst="bin/llplugin"): + self.path("../media_plugins/gstreamer010/libmedia_plugin_gstreamer010.so", "libmedia_plugin_gstreamer.so") self.end_prefix("bin/llplugin") # llcommon @@ -1143,37 +1222,6 @@ class Linux_i686_Manifest(LinuxManifest): self.path("libvivoxplatform.so") self.end_prefix("lib") - # plugin runtime - if self.prefix(src=os.path.join(pkgdir, "lib"), dst="lib"): - self.path("libQtCore.so*") - self.path("libQtGui.so*") - self.path("libQtNetwork.so*") - self.path("libQtOpenGL.so*") - self.path("libQtSvg.so*") - self.path("libQtWebKit.so*") - self.path("libQtXml.so*") - self.end_prefix("lib") - - # For WebKit/Qt plugin runtimes (image format plugins) - if self.prefix(src=os.path.join(pkgdir, "llplugin", "imageformats"), - dst="bin/llplugin/imageformats"): - self.path("libqgif.so") - self.path("libqico.so") - self.path("libqjpeg.so") - self.path("libqmng.so") - self.path("libqsvg.so") - self.path("libqtiff.so") - self.end_prefix("bin/llplugin/imageformats") - - # For WebKit/Qt plugin runtimes (codec/character encoding plugins) - if self.prefix(src=os.path.join(pkgdir, "llplugin", "codecs"), - dst="bin/llplugin/codecs"): - self.path("libqcncodecs.so") - self.path("libqjpcodecs.so") - self.path("libqkrcodecs.so") - self.path("libqtwcodecs.so") - self.end_prefix("bin/llplugin/codecs") - self.strip_binaries() diff --git a/indra/newview/zh-Hans.lproj/language.txt b/indra/newview/zh-Hans.lproj/language.txt index 147d659917..147d659917 100755..100644 --- a/indra/newview/zh-Hans.lproj/language.txt +++ b/indra/newview/zh-Hans.lproj/language.txt diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 9404dcf88e..9404dcf88e 100755..100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt diff --git a/indra/test/blowfish.digits.txt b/indra/test/blowfish.digits.txt index fce1fed943..fce1fed943 100755..100644 --- a/indra/test/blowfish.digits.txt +++ b/indra/test/blowfish.digits.txt diff --git a/indra/test/catch_and_store_what_in.h b/indra/test/catch_and_store_what_in.h index 59f8cc0085..59f8cc0085 100755..100644 --- a/indra/test/catch_and_store_what_in.h +++ b/indra/test/catch_and_store_what_in.h diff --git a/indra/test/debug.h b/indra/test/debug.h index d61eba651b..d61eba651b 100755..100644 --- a/indra/test/debug.h +++ b/indra/test/debug.h diff --git a/indra/test/io.cpp b/indra/test/io.cpp index 97726c2b92..97726c2b92 100755..100644 --- a/indra/test/io.cpp +++ b/indra/test/io.cpp diff --git a/indra/test/llapp_tut.cpp b/indra/test/llapp_tut.cpp index aa5c0672e6..aa5c0672e6 100755..100644 --- a/indra/test/llapp_tut.cpp +++ b/indra/test/llapp_tut.cpp diff --git a/indra/test/llassetuploadqueue_tut.cpp b/indra/test/llassetuploadqueue_tut.cpp index 25efe63d3f..25efe63d3f 100755..100644 --- a/indra/test/llassetuploadqueue_tut.cpp +++ b/indra/test/llassetuploadqueue_tut.cpp diff --git a/indra/test/llblowfish_tut.cpp b/indra/test/llblowfish_tut.cpp index 18eb01363f..18eb01363f 100755..100644 --- a/indra/test/llblowfish_tut.cpp +++ b/indra/test/llblowfish_tut.cpp diff --git a/indra/test/llbuffer_tut.cpp b/indra/test/llbuffer_tut.cpp index 9b8aae6a73..9b8aae6a73 100755..100644 --- a/indra/test/llbuffer_tut.cpp +++ b/indra/test/llbuffer_tut.cpp diff --git a/indra/test/lldatapacker_tut.cpp b/indra/test/lldatapacker_tut.cpp index b403660c13..b403660c13 100755..100644 --- a/indra/test/lldatapacker_tut.cpp +++ b/indra/test/lldatapacker_tut.cpp diff --git a/indra/test/lldoubledispatch_tut.cpp b/indra/test/lldoubledispatch_tut.cpp index ad8f6454d4..ad8f6454d4 100755..100644 --- a/indra/test/lldoubledispatch_tut.cpp +++ b/indra/test/lldoubledispatch_tut.cpp diff --git a/indra/test/llevents_tut.cpp b/indra/test/llevents_tut.cpp index 16edab6282..16edab6282 100755..100644 --- a/indra/test/llevents_tut.cpp +++ b/indra/test/llevents_tut.cpp diff --git a/indra/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp index ecf734ee90..ecf734ee90 100755..100644 --- a/indra/test/llhttpdate_tut.cpp +++ b/indra/test/llhttpdate_tut.cpp diff --git a/indra/test/llhttpnode_tut.cpp b/indra/test/llhttpnode_tut.cpp index c528a34129..c528a34129 100755..100644 --- a/indra/test/llhttpnode_tut.cpp +++ b/indra/test/llhttpnode_tut.cpp diff --git a/indra/test/lliohttpserver_tut.cpp b/indra/test/lliohttpserver_tut.cpp index 1513446788..1513446788 100755..100644 --- a/indra/test/lliohttpserver_tut.cpp +++ b/indra/test/lliohttpserver_tut.cpp diff --git a/indra/test/llmessageconfig_tut.cpp b/indra/test/llmessageconfig_tut.cpp index df2151b1b1..df2151b1b1 100755..100644 --- a/indra/test/llmessageconfig_tut.cpp +++ b/indra/test/llmessageconfig_tut.cpp diff --git a/indra/test/llmessagetemplateparser_tut.cpp b/indra/test/llmessagetemplateparser_tut.cpp index 39f834a9fc..39f834a9fc 100755..100644 --- a/indra/test/llmessagetemplateparser_tut.cpp +++ b/indra/test/llmessagetemplateparser_tut.cpp diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp index fa4b085fd3..fa4b085fd3 100755..100644 --- a/indra/test/llpermissions_tut.cpp +++ b/indra/test/llpermissions_tut.cpp diff --git a/indra/test/llpipeutil.cpp b/indra/test/llpipeutil.cpp index bb706b58d5..bb706b58d5 100755..100644 --- a/indra/test/llpipeutil.cpp +++ b/indra/test/llpipeutil.cpp diff --git a/indra/test/llpipeutil.h b/indra/test/llpipeutil.h index 5deb26764f..5deb26764f 100755..100644 --- a/indra/test/llpipeutil.h +++ b/indra/test/llpipeutil.h diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp index 5f4d9186a8..5f4d9186a8 100755..100644 --- a/indra/test/llsaleinfo_tut.cpp +++ b/indra/test/llsaleinfo_tut.cpp diff --git a/indra/test/llsd_new_tut.cpp b/indra/test/llsd_new_tut.cpp index 458df3361e..458df3361e 100755..100644 --- a/indra/test/llsd_new_tut.cpp +++ b/indra/test/llsd_new_tut.cpp diff --git a/indra/test/llsdmessagebuilder_tut.cpp b/indra/test/llsdmessagebuilder_tut.cpp index b7283f53a6..b7283f53a6 100755..100644 --- a/indra/test/llsdmessagebuilder_tut.cpp +++ b/indra/test/llsdmessagebuilder_tut.cpp diff --git a/indra/test/llsdmessagereader_tut.cpp b/indra/test/llsdmessagereader_tut.cpp index 6dc5cf593e..6dc5cf593e 100755..100644 --- a/indra/test/llsdmessagereader_tut.cpp +++ b/indra/test/llsdmessagereader_tut.cpp diff --git a/indra/test/llsdtraits.h b/indra/test/llsdtraits.h index 07f6193ce2..07f6193ce2 100755..100644 --- a/indra/test/llsdtraits.h +++ b/indra/test/llsdtraits.h diff --git a/indra/test/llsdutil_tut.cpp b/indra/test/llsdutil_tut.cpp index 140f4b832b..140f4b832b 100755..100644 --- a/indra/test/llsdutil_tut.cpp +++ b/indra/test/llsdutil_tut.cpp diff --git a/indra/test/llservicebuilder_tut.cpp b/indra/test/llservicebuilder_tut.cpp index 8f5be3011c..8f5be3011c 100755..100644 --- a/indra/test/llservicebuilder_tut.cpp +++ b/indra/test/llservicebuilder_tut.cpp diff --git a/indra/test/llstreamtools_tut.cpp b/indra/test/llstreamtools_tut.cpp index 0f6436f0f4..0f6436f0f4 100755..100644 --- a/indra/test/llstreamtools_tut.cpp +++ b/indra/test/llstreamtools_tut.cpp diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp index 7b4b6a8b70..7b4b6a8b70 100755..100644 --- a/indra/test/lltemplatemessagebuilder_tut.cpp +++ b/indra/test/lltemplatemessagebuilder_tut.cpp diff --git a/indra/test/lltimestampcache_tut.cpp b/indra/test/lltimestampcache_tut.cpp index 857a17a6d5..857a17a6d5 100755..100644 --- a/indra/test/lltimestampcache_tut.cpp +++ b/indra/test/lltimestampcache_tut.cpp diff --git a/indra/test/lltranscode_tut.cpp b/indra/test/lltranscode_tut.cpp index 3fce6e0e2b..3fce6e0e2b 100755..100644 --- a/indra/test/lltranscode_tut.cpp +++ b/indra/test/lltranscode_tut.cpp diff --git a/indra/test/lltut.cpp b/indra/test/lltut.cpp index 5a8ee87afd..5a8ee87afd 100755..100644 --- a/indra/test/lltut.cpp +++ b/indra/test/lltut.cpp diff --git a/indra/test/lltut.h b/indra/test/lltut.h index 9835565bb6..9835565bb6 100755..100644 --- a/indra/test/lltut.h +++ b/indra/test/lltut.h diff --git a/indra/test/lluserrelations_tut.cpp b/indra/test/lluserrelations_tut.cpp index afbcf6e5a8..afbcf6e5a8 100755..100644 --- a/indra/test/lluserrelations_tut.cpp +++ b/indra/test/lluserrelations_tut.cpp diff --git a/indra/test/llxorcipher_tut.cpp b/indra/test/llxorcipher_tut.cpp index 55b3faaa61..55b3faaa61 100755..100644 --- a/indra/test/llxorcipher_tut.cpp +++ b/indra/test/llxorcipher_tut.cpp diff --git a/indra/test/message_tut.cpp b/indra/test/message_tut.cpp index aa23699de0..aa23699de0 100755..100644 --- a/indra/test/message_tut.cpp +++ b/indra/test/message_tut.cpp diff --git a/indra/test/mock_http_client.cpp b/indra/test/mock_http_client.cpp index e72902bfc2..e72902bfc2 100755..100644 --- a/indra/test/mock_http_client.cpp +++ b/indra/test/mock_http_client.cpp diff --git a/indra/test/mock_http_client.h b/indra/test/mock_http_client.h index a2b9b435fb..a2b9b435fb 100755..100644 --- a/indra/test/mock_http_client.h +++ b/indra/test/mock_http_client.h diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 7d59cad32c..7d59cad32c 100755..100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h diff --git a/indra/test/prim_linkability_tut.cpp b/indra/test/prim_linkability_tut.cpp index a70912e535..a70912e535 100755..100644 --- a/indra/test/prim_linkability_tut.cpp +++ b/indra/test/prim_linkability_tut.cpp diff --git a/indra/test/test.cpp b/indra/test/test.cpp index e42374d56b..e42374d56b 100755..100644 --- a/indra/test/test.cpp +++ b/indra/test/test.cpp diff --git a/indra/test/test.h b/indra/test/test.h index 40c94283ec..40c94283ec 100755..100644 --- a/indra/test/test.h +++ b/indra/test/test.h diff --git a/indra/test_apps/llfbconnecttest/CMakeLists.txt b/indra/test_apps/llfbconnecttest/CMakeLists.txt deleted file mode 100644 index 25aaebb783..0000000000 --- a/indra/test_apps/llfbconnecttest/CMakeLists.txt +++ /dev/null @@ -1,372 +0,0 @@ -# -*- cmake -*- -project(llfbconnecttest) - -include(00-Common) -include(FindOpenGL) -include(LLCommon) -include(LLPlugin) -include(Linking) -include(LLSharedLibs) -include(PluginAPI) -include(LLImage) -include(LLMath) -include(LLMessage) -include(LLRender) -include(LLWindow) -include(Glut) -include(Glui) - -include_directories( - ${LLPLUGIN_INCLUDE_DIRS} - ${LLCOMMON_INCLUDE_DIRS} - ${LLIMAGE_INCLUDE_DIRS} - ${LLMATH_INCLUDE_DIRS} - ${LLMESSAGE_INCLUDE_DIRS} - ${LLRENDER_INCLUDE_DIRS} - ${LLWINDOW_INCLUDE_DIRS} -) - -if (DARWIN) - include(CMakeFindFrameworks) - find_library(COREFOUNDATION_LIBRARY CoreFoundation) -endif (DARWIN) - -### llfbconnecttest - -set(llfbconnecttest_SOURCE_FILES - llfbconnecttest.cpp - llfbconnecttest.h - bookmarks.txt - ) - -add_executable(llfbconnecttest - WIN32 - MACOSX_BUNDLE - ${llfbconnecttest_SOURCE_FILES} -) - -set_target_properties(llfbconnecttest - PROPERTIES - WIN32_EXECUTABLE - FALSE -) - -target_link_libraries(llfbconnecttest - ${GLUT_LIBRARY} - ${GLUI_LIBRARY} - ${OPENGL_LIBRARIES} - ${LLPLUGIN_LIBRARIES} - ${LLMESSAGE_LIBRARIES} - ${LLCOMMON_LIBRARIES} - ${PLUGIN_API_WINDOWS_LIBRARIES} -) - -if (DARWIN) - # The testbed needs to use a couple of CoreFoundation calls now, to deal with being a bundled app. - target_link_libraries(llfbconnecttest - ${COREFOUNDATION_LIBRARY} - ) -endif (DARWIN) - -add_dependencies(llfbconnecttest - stage_third_party_libs - SLPlugin - media_plugin_webkit - ${LLPLUGIN_LIBRARIES} - ${LLMESSAGE_LIBRARIES} - ${LLCOMMON_LIBRARIES} -) - -# turn off weird GLUI pragma -add_definitions(-DGLUI_NO_LIB_PRAGMA) - -if (DARWIN OR LINUX) - # glui.h contains code that triggers the "overloaded-virtual" warning in gcc. - set_source_files_properties(llfbconnecttest.cpp PROPERTIES COMPILE_FLAGS "-Wno-overloaded-virtual") -endif (DARWIN OR LINUX) - -# Gather build products of the various dependencies into the build directory for the testbed. - -if (DARWIN) - # path inside the app bundle where we'll need to copy plugins and other related files - set(PLUGINS_DESTINATION_DIR - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llfbconnecttest.app/Contents/Resources - ) - - # create the Contents/Resources directory - add_custom_command( - TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS - -E - make_directory - ${PLUGINS_DESTINATION_DIR} - COMMENT "Creating Resources directory in app bundle." - ) -else (DARWIN) - set(PLUGINS_DESTINATION_DIR - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ - ) -endif (DARWIN) - -set(BUILT_SLPLUGIN $<TARGET_FILE:SLPlugin>) -add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_SLPLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_SLPLUGIN} -) - -set(BUILT_LLCOMMON $<TARGET_FILE:llcommon>) -add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_LLCOMMON} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLCOMMON} -) - - -set(BUILT_WEBKIT_PLUGIN $<TARGET_FILE:media_plugin_webkit>) -add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_WEBKIT_PLUGIN} -) - -# copy over bookmarks file if llfbconnecttest gets built -set(BUILT_LLFBCONNECTTEST $<TARGET_FILE:llfbconnecttest>) -add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ - DEPENDS ${BUILT_LLFBCONNECTTEST} -) - -# also copy it to the same place as SLPlugin, which is what the mac wants... -add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLFBCONNECTTEST} -) - -if(WINDOWS) - #******************** - # Plugin test library deploy - # - # Debug config runtime files required for the FB connect test - set(fbconnecttest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") - set(fbconnecttest_debug_files - libeay32.dll - libglib-2.0-0.dll - libgmodule-2.0-0.dll - libgobject-2.0-0.dll - libgthread-2.0-0.dll - qtcored4.dll - qtguid4.dll - qtnetworkd4.dll - qtopengld4.dll - qtwebkitd4.dll - ssleay32.dll - ) - copy_if_different( - ${fbconnecttest_debug_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Debug" - out_targets - ${fbconnecttest_debug_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Debug config runtime files required for the FB connect test (Qt image format plugins) - set(fbconecttest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}/imageformats") - set(fbconecttest_debug_files - qgifd4.dll - qicod4.dll - qjpegd4.dll - qmngd4.dll - qsvgd4.dll - qtiffd4.dll - ) - copy_if_different( - ${fbconecttest_debug_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Debug/imageformats" - out_targets - ${fbconecttest_debug_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Debug config runtime files required for the FB connect test (Qt codec plugins) - set(fbconnecttest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}/codecs") - set(fbconnecttest_debug_files - qcncodecsd4.dll - qjpcodecsd4.dll - qkrcodecsd4.dll - qtwcodecsd4.dll - ) - copy_if_different( - ${fbconnecttest_debug_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Debug/codecs" - out_targets - ${fbconnecttest_debug_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") - set(fbconnecttest_release_files - libeay32.dll - libglib-2.0-0.dll - libgmodule-2.0-0.dll - libgobject-2.0-0.dll - libgthread-2.0-0.dll - qtcore4.dll - qtgui4.dll - qtnetwork4.dll - qtopengl4.dll - qtwebkit4.dll - qtxmlpatterns4.dll - ssleay32.dll - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Release" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}/imageformats") - set(fbconnecttest_release_files - qgif4.dll - qico4.dll - qjpeg4.dll - qmng4.dll - qsvg4.dll - qtiff4.dll - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Release/imageformats" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/imageformats" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}/codecs") - set(fbconnecttest_release_files - qcncodecs4.dll - qjpcodecs4.dll - qkrcodecs4.dll - qtwcodecs4.dll - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Release/codecs" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - copy_if_different( - ${fbconnecttest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/codecs" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - add_custom_target(copy_fbconnecttest_libs ALL - DEPENDS - ${fbconnect_test_targets} - ) - - add_dependencies(llfbconnecttest copy_fbconnecttest_libs) - -endif(WINDOWS) - -if (DARWIN) - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") - set(fbconnecttest_release_files - libexception_handler.dylib - libaprutil-1.0.dylib - libapr-1.0.dylib - libexpat.1.5.2.dylib - libQtCore.4.7.1.dylib - libQtCore.4.dylib - libQtGui.4.7.1.dylib - libQtGui.4.dylib - libQtNetwork.4.7.1.dylib - libQtNetwork.4.dylib - libQtOpenGL.4.7.1.dylib - libQtOpenGL.4.dylib - libQtWebKit.4.7.1.dylib - libQtWebKit.4.dylib - libQtSvg.4.7.1.dylib - libQtSvg.4.dylib - libQtXml.4.7.1.dylib - libQtXml.4.dylib - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${PLUGINS_DESTINATION_DIR}" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") - set(fbconnecttest_release_files - libqgif.dylib - libqico.dylib - libqjpeg.dylib - libqmng.dylib - libqsvg.dylib - libqtiff.dylib - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${PLUGINS_DESTINATION_DIR}/imageformats" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) - set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") - set(fbconnecttest_release_files - libqcncodecs.dylib - libqjpcodecs.dylib - libqkrcodecs.dylib - libqtwcodecs.dylib - ) - copy_if_different( - ${fbconnecttest_release_src_dir} - "${PLUGINS_DESTINATION_DIR}/codecs" - out_targets - ${fbconnecttest_release_files} - ) - set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) - - add_custom_target(copy_fbconnecttest_libs ALL - DEPENDS - ${fbconnect_test_targets} - ) - - add_dependencies(llfbconnecttest copy_fbconnecttest_libs) -endif (DARWIN) - -if (LINUX) - -endif (LINUX) - -ll_deploy_sharedlibs_command(llfbconnecttest) diff --git a/indra/test_apps/llfbconnecttest/README.Linden b/indra/test_apps/llfbconnecttest/README.Linden deleted file mode 100644 index 7488ce680a..0000000000 --- a/indra/test_apps/llfbconnecttest/README.Linden +++ /dev/null @@ -1,20 +0,0 @@ - -1. Description - - Exercises SLPlugin. Specific functions and goals aren't clear - from the source. - -2. Running - - 2.1 Mac - - Make certain '.' is included in PATH. E.g.: - - PATH=.:"$PATH" open build-darwin-i386/test_apps/llfbconnecttest/RelWithDebInfo/llfbconnecttest.app - - Otherwise the program won't find SLPlugin and will timeout and - fail after 30 seconds and give you little information as to why. - - Running 'dtruss' on plugin test applications will give you a great - deal of insight into why they aren't activating. - diff --git a/indra/test_apps/llfbconnecttest/bookmarks.txt b/indra/test_apps/llfbconnecttest/bookmarks.txt deleted file mode 100644 index 3995627ea9..0000000000 --- a/indra/test_apps/llfbconnecttest/bookmarks.txt +++ /dev/null @@ -1,4 +0,0 @@ -# format is description, url (don't put ',' chars in description :) -# if no ',' found, whole line is used for both description and url -Google Home Page,http://www.google.com -Facebook Home Page,http://www.facebook.com diff --git a/indra/test_apps/llfbconnecttest/llfbconnecttest.cpp b/indra/test_apps/llfbconnecttest/llfbconnecttest.cpp deleted file mode 100644 index 483a15c468..0000000000 --- a/indra/test_apps/llfbconnecttest/llfbconnecttest.cpp +++ /dev/null @@ -1,2394 +0,0 @@ -/** - * @file LLFBConnectTest.cpp - * @brief Facebook Connect Test App - * - * $LicenseInfo:firstyear=2008&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "linden_common.h" -#include "indra_constants.h" - -#include "llapr.h" -#include "llerrorcontrol.h" - -#include <math.h> -#include <iomanip> -#include <sstream> -#include <ctime> - -#include "llfbconnecttest.h" - -#if __APPLE__ - #include <GLUT/glut.h> - #include <CoreFoundation/CoreFoundation.h> -#else - #define FREEGLUT_STATIC - #include "GL/freeglut.h" - #define GLUI_FREEGLUT -#endif - -#if LL_WINDOWS -#pragma warning(disable: 4263) -#pragma warning(disable: 4264) -#endif -#include "glui.h" - - -LLFBConnectTest* gApplication = 0; -static void gluiCallbackWrapper( int control_id ); - -//////////////////////////////////////////////////////////////////////////////// -// -static bool isTexture( GLuint texture ) -{ - bool result = false; - - // glIsTexture will sometimes return false for real textures... do this instead. - if(texture != 0) - result = true; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel::mediaPanel() -{ - mMediaTextureHandle = 0; - mPickTextureHandle = 0; - mMediaSource = NULL; - mPickTexturePixels = NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel::~mediaPanel() -{ - // delete OpenGL texture handles - if ( isTexture( mPickTextureHandle ) ) - { - std::cerr << "remMediaPanel: deleting pick texture " << mPickTextureHandle << std::endl; - glDeleteTextures( 1, &mPickTextureHandle ); - mPickTextureHandle = 0; - } - - if ( isTexture( mMediaTextureHandle ) ) - { - std::cerr << "remMediaPanel: deleting media texture " << mMediaTextureHandle << std::endl; - glDeleteTextures( 1, &mMediaTextureHandle ); - mMediaTextureHandle = 0; - } - - if(mPickTexturePixels) - { - delete mPickTexturePixels; - } - - if(mMediaSource) - { - delete mMediaSource; - } - -} - -//////////////////////////////////////////////////////////////////////////////// -// -LLFBConnectTest::LLFBConnectTest( int app_window, int window_width, int window_height ) : - mVersionMajor( 2 ), - mVersionMinor( 0 ), - mVersionPatch( 0 ), - mMaxPanels( 25 ), - mViewportAspect( 0 ), - mAppWindow( app_window ), - mCurMouseX( 0 ), - mCurMouseY( 0 ), - mFuzzyMedia( true ), - mSelectedPanel( 0 ), - mDistanceCameraToSelectedGeometry( 0.0f ), - //mMediaBrowserControlEnableCookies( 0 ), - mMediaBrowserControlBackButton( 0 ), - mMediaBrowserControlForwardButton( 0 ), - //mMediaTimeControlVolume( 100 ), - //mMediaTimeControlSeekSeconds( 0 ), - //mGluiMediaTimeControlWindowFlag( true ), - mGluiMediaBrowserControlWindowFlag( true ), - mMediaBrowserControlBackButtonFlag( true ), - mMediaBrowserControlForwardButtonFlag( true ), - mHomeWebUrl( "https://cryptic-ridge-1632.herokuapp.com/" ) -{ - // debugging spam - std::cout << std::endl << " GLUT version: " << "3.7.6" << std::endl; // no way to get real version from GLUT - std::cout << std::endl << " GLUI version: " << GLUI_Master.get_version() << std::endl; - std::cout << std::endl << "Media Plugin Test version: " << mVersionMajor << "." << mVersionMinor << "." << mVersionPatch << std::endl; - - // bookmark title - mBookmarks.push_back( std::pair< std::string, std::string >( "--- Bookmarks ---", "" ) ); - - // insert hardcoded URLs here as required for testing - //mBookmarks.push_back( std::pair< std::string, std::string >( "description", "url" ) ); - - // read bookmarks from file. - // note: uses command in ./CmakeLists.txt which copies bookmmarks file from source directory - // to app directory (WITHOUT build configuration dir) (this is cwd in Windows within MSVC) - // For example, test_apps\llplugintest and not test_apps\llplugintest\Release - // This may need to be changed for Mac/Linux builds. - // See https://jira.lindenlab.com/browse/DEV-31350 for large list of media URLs from AGNI - const std::string bookmarks_filename( "bookmarks.txt" ); - std::ifstream file_handle( bookmarks_filename.c_str() ); - if ( file_handle.is_open() ) - { - std::cout << "Reading bookmarks for test" << std::endl; - while( ! file_handle.eof() ) - { - std::string line; - std::getline( file_handle, line ); - if ( file_handle.eof() ) - break; - - if ( line.substr( 0, 1 ) != "#" ) - { - size_t comma_pos = line.find_first_of( ',' ); - if ( comma_pos != std::string::npos ) - { - std::string description = line.substr( 0, comma_pos ); - std::string url = line.substr( comma_pos + 1 ); - mBookmarks.push_back( std::pair< std::string, std::string >( description, url ) ); - } - else - { - mBookmarks.push_back( std::pair< std::string, std::string >( line, line ) ); - }; - }; - }; - std::cout << "Read " << mBookmarks.size() << " bookmarks" << std::endl; - } - else - { - std::cout << "Unable to read bookmarks from file: " << bookmarks_filename << std::endl; - }; - - // initialize linden lab APR module - ll_init_apr(); - - // Set up llerror logging - { - LLError::initForApplication("."); - LLError::setDefaultLevel(LLError::LEVEL_INFO); - //LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG); - } - - // lots of randomness in this app - srand( ( unsigned int )time( 0 ) ); - - // build GUI - makeChrome(); - - // OpenGL initialilzation - glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); - glClearDepth( 1.0f ); - glEnable( GL_DEPTH_TEST ); - glEnable( GL_COLOR_MATERIAL ); - glColorMaterial( GL_FRONT, GL_AMBIENT_AND_DIFFUSE ); - glDepthFunc( GL_LEQUAL ); - glEnable( GL_TEXTURE_2D ); - glDisable( GL_BLEND ); - glColor3f( 1.0f, 1.0f, 1.0f ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); - - // start with a sane view - resetView(); - - // initial media panel - const int num_initial_panels = 1; - for( int i = 0; i < num_initial_panels; ++i ) - { - //addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - addMediaPanel( mHomeWebUrl ); - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -LLFBConnectTest::~LLFBConnectTest() -{ - // delete all media panels - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - remMediaPanel( mMediaPanels[ i ] ); - }; - - // Stop the plugin read thread if it's running. - LLPluginProcessParent::setUseReadThread(false); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::reshape( int width, int height ) -{ - // update viewport (the active window inside the chrome) - int viewport_x, viewport_y; - int viewport_height, viewport_width; - GLUI_Master.get_viewport_area( &viewport_x, &viewport_y, &viewport_width, &viewport_height ); - mViewportAspect = (float)( viewport_width ) / (float)( viewport_height ); - glViewport( viewport_x, viewport_y, viewport_width, viewport_height ); - - // save these as we'll need them later - mWindowWidth = width; - mWindowHeight = height; - - // adjust size of URL bar so it doesn't get clipped - mUrlEdit->set_w( mWindowWidth - 360 ); - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // trigger re-display - glutPostRedisplay(); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::bindTexture(GLuint texture, GLint row_length, GLint alignment) -{ - glEnable( GL_TEXTURE_2D ); - - glBindTexture( GL_TEXTURE_2D, texture ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, row_length ); - glPixelStorei( GL_UNPACK_ALIGNMENT, alignment ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -bool LLFBConnectTest::checkGLError(const char *name) -{ - bool result = false; - GLenum error = glGetError(); - - if(error != GL_NO_ERROR) - { - // For some reason, glGenTextures is returning GL_INVALID_VALUE... - std::cout << name << " ERROR 0x" << std::hex << error << std::dec << std::endl; - result = true; - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -// -GLfloat LLFBConnectTest::distanceToCamera( GLfloat point_x, GLfloat point_y, GLfloat point_z ) -{ - GLdouble camera_pos_x = 0.0f; - GLdouble camera_pos_y = 0.0f; - GLdouble camera_pos_z = 0.0f; - - GLdouble modelMatrix[16]; - GLdouble projMatrix[16]; - GLint viewport[4]; - - glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); - glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); - glGetIntegerv(GL_VIEWPORT, viewport); - - gluUnProject( - (viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2, - 0.0, - modelMatrix, projMatrix, viewport, - &camera_pos_x, &camera_pos_y, &camera_pos_z ); - - GLfloat distance = - sqrt( ( camera_pos_x - point_x ) * ( camera_pos_x - point_x ) + - ( camera_pos_y - point_y ) * ( camera_pos_y - point_y ) + - ( camera_pos_z - point_z ) * ( camera_pos_z - point_z ) ); - - return distance; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::drawGeometry( int panel, bool selected ) -{ - // texture coordinates for each panel - GLfloat non_opengl_texture_coords[ 8 ] = { 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f }; - GLfloat opengl_texture_coords[ 8 ] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f }; - - GLfloat *texture_coords = mMediaPanels[ panel ]->mAppTextureCoordsOpenGL?opengl_texture_coords:non_opengl_texture_coords; - - // base coordinates for each panel - GLfloat base_vertex_pos[ 8 ] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f }; - - // calculate posiitons - const int num_panels = (int)mMediaPanels.size(); - const int num_rows = (int)sqrt( (float)num_panels ); - const int num_cols = num_panels / num_rows; - const int panel_x = ( panel / num_rows ); - const int panel_y = ( panel % num_rows ); - - // default spacing is small - make it larger if checkbox set - for testing positional audio - float spacing = 0.1f; - //if ( mLargePanelSpacing ) - // spacing = 2.0f; - - const GLfloat offset_x = num_cols * ( 1.0 + spacing ) / 2; - const GLfloat offset_y = num_rows * ( 1.0 + spacing ) / 2; - - // Adjust for media aspect ratios - { - float aspect = 1.0f; - - if(mMediaPanels[ panel ]->mMediaHeight != 0) - { - aspect = (float)mMediaPanels[ panel ]->mMediaWidth / (float)mMediaPanels[ panel ]->mMediaHeight; - } - - if(aspect > 1.0f) - { - // media is wider than it is high -- adjust the top and bottom in - for( int corner = 0; corner < 4; ++corner ) - { - float temp = base_vertex_pos[corner * 2 + 1]; - - if(temp < 0.5f) - temp += 0.5 - (0.5f / aspect); - else - temp -= 0.5 - (0.5f / aspect); - - base_vertex_pos[corner * 2 + 1] = temp; - } - } - else if(aspect < 1.0f) - { - // media is higher than it is wide -- adjust the left and right sides in - for( int corner = 0; corner < 4; ++corner ) - { - float temp = base_vertex_pos[corner * 2]; - - if(temp < 0.5f) - temp += 0.5f - (0.5f * aspect); - else - temp -= 0.5f - (0.5f * aspect); - - base_vertex_pos[corner * 2] = temp; - } - } - } - - glBegin( GL_QUADS ); - for( int corner = 0; corner < 4; ++corner ) - { - glTexCoord2f( texture_coords[ corner * 2 ], texture_coords[ corner * 2 + 1 ] ); - GLfloat x = base_vertex_pos[ corner * 2 ] + panel_x * ( 1.0 + spacing ) - offset_x + spacing / 2.0f; - GLfloat y = base_vertex_pos[ corner * 2 + 1 ] + panel_y * ( 1.0 + spacing ) - offset_y + spacing / 2.0f; - - glVertex3f( x, y, 0.0f ); - }; - glEnd(); - - // calculate distance to this panel if it's selected - if ( selected ) - { - GLfloat point_x = base_vertex_pos[ 0 ] + panel_x * ( 1.0 + spacing ) - offset_x + spacing / 2.0f; - GLfloat point_y = base_vertex_pos[ 0 + 1 ] + panel_y * ( 1.0 + spacing ) - offset_y + spacing / 2.0f; - GLfloat point_z = 0.0f; - mDistanceCameraToSelectedGeometry = distanceToCamera( point_x, point_y, point_z ); - }; -} - -////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::startPanelHighlight( float red, float green, float blue, float line_width ) -{ - glPushAttrib( GL_ALL_ATTRIB_BITS ); - glEnable( GL_POLYGON_OFFSET_FILL ); - glPolygonOffset( -2.5f, -2.5f ); - glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); - glLineWidth( line_width ); - glColor3f( red, green, blue ); - glDisable( GL_TEXTURE_2D ); -} - -////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::endPanelHighlight() -{ - glPopAttrib(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::draw( int draw_type ) -{ - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - // drawing pick texture - if ( draw_type == DrawTypePickTexture ) - { - // only bother with pick if we have something to render - // Actually, we need to pick even if we're not ready to render. - // Otherwise you can't select and remove a panel which has gone bad. - //if ( mMediaPanels[ panel ]->mReadyToRender ) - { - glMatrixMode( GL_TEXTURE ); - glPushMatrix(); - - // pick texture is a power of 2 so no need to scale - glLoadIdentity(); - - // bind to media texture - glLoadIdentity(); - bindTexture( mMediaPanels[ panel ]->mPickTextureHandle ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - - // draw geometry using pick texture - drawGeometry( panel, false ); - - glMatrixMode( GL_TEXTURE ); - glPopMatrix(); - }; - } - else - if ( draw_type == DrawTypeMediaTexture ) - { - bool texture_valid = false; - bool plugin_exited = false; - - if(mMediaPanels[ panel ]->mMediaSource) - { - texture_valid = mMediaPanels[ panel ]->mMediaSource->textureValid(); - plugin_exited = mMediaPanels[ panel ]->mMediaSource->isPluginExited(); - } - - // save texture matrix (changes for each panel) - glMatrixMode( GL_TEXTURE ); - glPushMatrix(); - - // only process texture if the media is ready to draw - // (we still want to draw the geometry) - if ( mMediaPanels[ panel ]->mReadyToRender && texture_valid ) - { - // bind to media texture - bindTexture( mMediaPanels[ panel ]->mMediaTextureHandle ); - - if ( mFuzzyMedia ) - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - } - else - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - } - - // scale to fit panel - glScalef( mMediaPanels[ panel ]->mTextureScaleX, - mMediaPanels[ panel ]->mTextureScaleY, - 1.0f ); - }; - - float intensity = plugin_exited?0.25f:1.0f; - - // highlight the selected panel - if ( mSelectedPanel && ( mMediaPanels[ panel ]->mId == mSelectedPanel->mId ) ) - { - startPanelHighlight( intensity, intensity, 0.0f, 5.0f ); - drawGeometry( panel, true ); - endPanelHighlight(); - } - else - // this panel not able to render yet since it - // doesn't have enough information - if ( !mMediaPanels[ panel ]->mReadyToRender ) - { - startPanelHighlight( intensity, 0.0f, 0.0f, 2.0f ); - drawGeometry( panel, false ); - endPanelHighlight(); - } - else - // just display a border around the media - { - startPanelHighlight( 0.0f, intensity, 0.0f, 2.0f ); - drawGeometry( panel, false ); - endPanelHighlight(); - }; - - if ( mMediaPanels[ panel ]->mReadyToRender && texture_valid ) - { - // draw visual geometry - drawGeometry( panel, false ); - } - - // restore texture matrix (changes for each panel) - glMatrixMode( GL_TEXTURE ); - glPopMatrix(); - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::display() -{ - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // start with a clean slate - glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - // set up OpenGL view - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -mViewportAspect * 0.04f, mViewportAspect * 0.04f, -0.04f, 0.04f, 0.1f, 50.0f ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, 0.0f ); - glTranslatef( mViewPos[ 0 ], mViewPos[ 1 ], -mViewPos[ 2 ] ); - glMultMatrixf( mViewRotation ); - - // draw pick texture - draw( DrawTypePickTexture ); - - // read colors and get coordinate values - glReadPixels( mCurMouseX, mCurMouseY, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, mPixelReadColor ); - - // clear the pick render (otherwise it may depth-fight with the textures rendered later) - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - // draw visible geometry - draw( DrawTypeMediaTexture ); - - glutSwapBuffers(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::idle() -{ -// checkGLError("LLFBConnectTest::idle"); - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // random creation/destruction of panels enabled? -/* - const time_t panel_timeout_time = 5; - if ( mRandomPanelCount ) - { - // time for a change - static time_t last_panel_time = 0; - if ( time( NULL ) - last_panel_time > panel_timeout_time ) - { - if ( rand() % 2 == 0 ) - { - if ( mMediaPanels.size() < 16 ) - { - std::cout << "Randomly adding new panel" << std::endl; - addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - }; - } - else - { - if ( mMediaPanels.size() > 0 ) - { - std::cout << "Deleting selected panel" << std::endl; - remMediaPanel( mSelectedPanel ); - }; - }; - time( &last_panel_time ); - }; - }; - - // random selection of bookmarks enabled? - const time_t bookmark_timeout_time = 5; - if ( mRandomBookmarks ) - { - // time for a change - static time_t last_bookmark_time = 0; - if ( time( NULL ) - last_bookmark_time > bookmark_timeout_time ) - { - // go to a different random bookmark on each panel - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - std::string uri = mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second; - - std::cout << "Random: navigating to : " << uri << std::endl; - - std::string mime_type = mimeTypeFromUrl( uri ); - - if ( mime_type != mMediaPanels[ panel ]->mMimeType ) - { - replaceMediaPanel( mMediaPanels[ panel ], uri ); - } - else - { - mMediaPanels[ panel ]->mMediaSource->loadURI( uri ); - mMediaPanels[ panel ]->mMediaSource->start(); - }; - }; - - time( &last_bookmark_time ); - }; - }; -*/ - // update UI - if ( mSelectedPanel ) - { - // set volume based on slider if we have time media - //if ( mGluiMediaTimeControlWindowFlag ) - //{ - // mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); - //}; - - // NOTE: it is absurd that we need cache the state of GLUI controls - // but enabling/disabling controls drags framerate from 500+ - // down to 15. Not a problem for plugin system - only this test - // enable/disable time based UI controls based on type of plugin - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - { - /* - if ( ! mGluiMediaTimeControlWindowFlag ) - { - mGluiMediaTimeControlWindow->enable(); - mGluiMediaTimeControlWindowFlag = true; - }; - */ - } - else - { - /* - if ( mGluiMediaTimeControlWindowFlag ) - { - mGluiMediaTimeControlWindow->disable(); - mGluiMediaTimeControlWindowFlag = false; - }; - */ - }; - - // enable/disable browser based UI controls based on type of plugin - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() ) - { - if ( ! mGluiMediaBrowserControlWindowFlag ) - { - mGluiMediaBrowserControlWindow->enable(); - mGluiMediaBrowserControlWindowFlag = true; - }; - } - else - { - if ( mGluiMediaBrowserControlWindowFlag ) - { - mGluiMediaBrowserControlWindow->disable(); - mGluiMediaBrowserControlWindowFlag = false; - }; - }; - - // enable/disable browser back button depending on browser history - if ( mSelectedPanel->mMediaSource->getHistoryBackAvailable() ) - { - if ( ! mMediaBrowserControlBackButtonFlag ) - { - mMediaBrowserControlBackButton->enable(); - mMediaBrowserControlBackButtonFlag = true; - }; - } - else - { - if ( mMediaBrowserControlBackButtonFlag ) - { - mMediaBrowserControlBackButton->disable(); - mMediaBrowserControlBackButtonFlag = false; - }; - }; - - // enable/disable browser forward button depending on browser history - if ( mSelectedPanel->mMediaSource->getHistoryForwardAvailable() ) - { - if ( ! mMediaBrowserControlForwardButtonFlag ) - { - mMediaBrowserControlForwardButton->enable(); - mMediaBrowserControlForwardButtonFlag = true; - }; - } - else - { - if ( mMediaBrowserControlForwardButtonFlag ) - { - mMediaBrowserControlForwardButton->disable(); - mMediaBrowserControlForwardButtonFlag = false; - }; - }; - - // NOTE: This is *very* slow and not worth optimising - updateStatusBar(); - }; - - // update all the panels - for( int panel_index = 0; panel_index < (int)mMediaPanels.size(); ++panel_index ) - { - mediaPanel *panel = mMediaPanels[ panel_index ]; - - // call plugins idle function so it can potentially update itself - panel->mMediaSource->idle(); - - // update each media panel - updateMediaPanel( panel ); - - LLRect dirty_rect; - if ( ! panel->mMediaSource->textureValid() ) - { - //std::cout << "texture invalid, skipping update..." << std::endl; - } - else - if ( panel && - ( panel->mMediaWidth != panel->mMediaSource->getWidth() || - panel->mMediaHeight != panel->mMediaSource->getHeight() ) ) - { - //std::cout << "Resize in progress, skipping update..." << std::endl; - } - else - if ( panel->mMediaSource->getDirty( &dirty_rect ) ) - { - const unsigned char* pixels = panel->mMediaSource->getBitsData(); - if ( pixels && isTexture(panel->mMediaTextureHandle)) - { - int x_offset = dirty_rect.mLeft; - int y_offset = dirty_rect.mBottom; - int width = dirty_rect.mRight - dirty_rect.mLeft; - int height = dirty_rect.mTop - dirty_rect.mBottom; - - if((dirty_rect.mRight <= panel->mTextureWidth) && (dirty_rect.mTop <= panel->mTextureHeight)) - { - // Offset the pixels pointer properly - pixels += ( y_offset * panel->mMediaSource->getTextureDepth() * panel->mMediaSource->getBitsWidth() ); - pixels += ( x_offset * panel->mMediaSource->getTextureDepth() ); - - // set up texture - bindTexture( panel->mMediaTextureHandle, panel->mMediaSource->getBitsWidth() ); - if ( mFuzzyMedia ) - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - } - else - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - }; - - checkGLError("glTexParameteri"); - - if(panel->mMediaSource->getTextureFormatSwapBytes()) - { - glPixelStorei(GL_UNPACK_SWAP_BYTES, 1); - checkGLError("glPixelStorei"); - } - - // draw portion that changes into texture - glTexSubImage2D( GL_TEXTURE_2D, 0, - x_offset, - y_offset, - width, - height, - panel->mMediaSource->getTextureFormatPrimary(), - panel->mMediaSource->getTextureFormatType(), - pixels ); - - if(checkGLError("glTexSubImage2D")) - { - std::cerr << " panel ID=" << panel->mId << std::endl; - std::cerr << " texture size = " << panel->mTextureWidth << " x " << panel->mTextureHeight << std::endl; - std::cerr << " media size = " << panel->mMediaWidth << " x " << panel->mMediaHeight << std::endl; - std::cerr << " dirty rect = " << dirty_rect.mLeft << ", " << dirty_rect.mBottom << ", " << dirty_rect.mRight << ", " << dirty_rect.mTop << std::endl; - std::cerr << " texture width = " << panel->mMediaSource->getBitsWidth() << std::endl; - std::cerr << " format primary = 0x" << std::hex << panel->mMediaSource->getTextureFormatPrimary() << std::dec << std::endl; - std::cerr << " format type = 0x" << std::hex << panel->mMediaSource->getTextureFormatType() << std::dec << std::endl; - std::cerr << " pixels = " << (void*)pixels << std::endl; - } - - if(panel->mMediaSource->getTextureFormatSwapBytes()) - { - glPixelStorei(GL_UNPACK_SWAP_BYTES, 0); - checkGLError("glPixelStorei"); - } - - panel->mMediaSource->resetDirty(); - - panel->mReadyToRender = true; - } - else - { - std::cerr << "dirty rect is outside current media size, skipping update" << std::endl; - } - }; - }; - }; - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // trigger re-display - glutPostRedisplay(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::windowPosToTexturePos( int window_x, int window_y, - int& media_x, int& media_y, - int& id ) -{ - if ( ! mSelectedPanel ) - { - media_x = 0; - media_y = 0; - id = 0; - return; - }; - - // record cursor poisiton for a readback next frame - mCurMouseX = window_x; - // OpenGL app == coordinate system this way - // NOTE: unrelated to settings in plugin - this - // is just for this app - mCurMouseY = mWindowHeight - window_y; - - // extract x (0..1023, y (0..1023) and id (0..15) from RGB components - unsigned long pixel_read_color_bits = ( mPixelReadColor[ 0 ] << 16 ) | ( mPixelReadColor[ 1 ] << 8 ) | mPixelReadColor[ 2 ]; - int texture_x = pixel_read_color_bits & 0x3ff; - int texture_y = ( pixel_read_color_bits >> 10 ) & 0x3ff; - id = ( pixel_read_color_bits >> 20 ) & 0x0f; - - // scale to size of media (1024 because we use 10 bits for X and Y from 24) - media_x = (int)( ( (float)mSelectedPanel->mMediaWidth * (float)texture_x ) / 1024.0f ); - media_y = (int)( ( (float)mSelectedPanel->mMediaHeight * (float)texture_y ) / 1024.0f ); - - // we assume the plugin uses an inverted coordinate scheme like OpenGL - // if not, the plugin code inverts the Y coordinate for us - we don't need to - media_y = mSelectedPanel->mMediaHeight - media_y; - - if ( media_x > 0 && media_y > 0 ) - { - //std::cout << " mouse coords: " << mCurMouseX << " x " << mCurMouseY << " and id = " << id << std::endl; - //std::cout << "raw texture coords: " << texture_x << " x " << texture_y << " and id = " << id << std::endl; - //std::cout << " media coords: " << media_x << " x " << media_y << " and id = " << id << std::endl; - //std::cout << std::endl; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::selectPanelById( int id ) -{ - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - if ( mMediaPanels[ panel ]->mId == id ) - { - selectPanel(mMediaPanels[ panel ]); - return; - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::selectPanel( mediaPanel* panel ) -{ - if( mSelectedPanel == panel ) - return; - - // turn off volume before we delete it - if( mSelectedPanel && mSelectedPanel->mMediaSource ) - { - mSelectedPanel->mMediaSource->setVolume( 0.0f ); - mSelectedPanel->mMediaSource->setPriority( LLPluginClassMedia::PRIORITY_LOW ); - }; - - mSelectedPanel = panel; - - if( mSelectedPanel && mSelectedPanel->mMediaSource ) - { - //mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); - mSelectedPanel->mMediaSource->setPriority( LLPluginClassMedia::PRIORITY_NORMAL ); - - if(!mSelectedPanel->mStartUrl.empty()) - { - mUrlEdit->set_text(const_cast<char*>(mSelectedPanel->mStartUrl.c_str()) ); - } - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLFBConnectTest::findMediaPanel( LLPluginClassMedia* source ) -{ - mediaPanel *result = NULL; - - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - if ( mMediaPanels[ panel ]->mMediaSource == source ) - { - result = mMediaPanels[ panel ]; - } - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLFBConnectTest::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 LLFBConnectTest::navigateToNewURI( std::string uri ) -{ - if ( uri.length() ) - { - std::string mime_type = mimeTypeFromUrl( uri ); - - if ( !mSelectedPanel->mMediaSource->isPluginExited() && (mime_type == mSelectedPanel->mMimeType) ) - { - std::cout << "MIME type is the same" << std::endl; - mSelectedPanel->mMediaSource->loadURI( uri ); - mSelectedPanel->mMediaSource->start(); - mBookmarkList->do_selection( 0 ); - } - else - { - std::cout << "MIME type changed or plugin had exited" << std::endl; - replaceMediaPanel( mSelectedPanel, uri ); - mBookmarkList->do_selection( 0 ); - } - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::initUrlHistory( std::string uris ) -{ - if ( uris.length() > 0 ) - { - std::cout << "init URL : " << uris << std::endl; - LLSD historySD; - - char *cstr, *p; - cstr = new char[uris.size()+1]; - strcpy(cstr, uris.c_str()); - const char *DELIMS = " ,;"; - p = strtok(cstr, DELIMS); - while (p != NULL) { - historySD.insert(0, p); - p = strtok(NULL, DELIMS); - } - mSelectedPanel->mMediaSource->initializeUrlHistory(historySD); - delete[] cstr; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::gluiCallback( int control_id ) -{ - if ( control_id == mIdBookmarks ) - { - std::string uri = mBookmarks[ mSelBookmark ].second; - - navigateToNewURI( uri ); - } - else - if ( control_id == mIdUrlEdit) - { - std::string uri = mUrlEdit->get_text(); - - navigateToNewURI( uri ); - } -/* - else - if ( control_id == mIdUrlInitHistoryEdit ) - { - std::string uri = mUrlInitHistoryEdit->get_text(); - - initUrlHistory( uri ); - } - else - if ( control_id == mIdControlAddPanel ) - { - addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - } - else - if ( control_id == mIdControlRemPanel ) - { - remMediaPanel( mSelectedPanel ); - } - else - if ( control_id == mIdDisableTimeout ) - { - // Set the "disable timeout" flag for all active plugins. - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - mMediaPanels[ i ]->mMediaSource->setDisableTimeout(mDisableTimeout); - } - } - else - if ( control_id == mIdUsePluginReadThread ) - { - LLPluginProcessParent::setUseReadThread(mUsePluginReadThread); - } - else - if ( control_id == mIdControlCrashPlugin ) - { - // send message to plugin and ask it to crash - // (switch out for ReleaseCandidate version :) ) - if(mSelectedPanel && mSelectedPanel->mMediaSource) - { - mSelectedPanel->mMediaSource->crashPlugin(); - } - } - else - if ( control_id == mIdControlHangPlugin ) - { - // send message to plugin and ask it to hang - // (switch out for ReleaseCandidate version :) ) - if(mSelectedPanel && mSelectedPanel->mMediaSource) - { - mSelectedPanel->mMediaSource->hangPlugin(); - } - } - else -*/ - if ( control_id == mIdControlExitApp ) - { - // text for exiting plugin system cleanly - delete this; // clean up - exit( 0 ); - } -/* - else - if ( control_id == mIdMediaTimeControlPlay ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlLoop ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( true ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlPause ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->pause(); - } - else - if ( control_id == mIdMediaTimeControlStop ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->stop(); - }; - } - else - if ( control_id == mIdMediaTimeControlSeek ) - { - if ( mSelectedPanel ) - { - // get value from spinner - float seconds_to_seek = mMediaTimeControlSeekSeconds; - mSelectedPanel->mMediaSource->seek( seconds_to_seek ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlRewind ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(-2.0f); - }; - } - else - if ( control_id == mIdMediaTimeControlFastForward ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(2.0f); - }; - } - else -*/ - if ( control_id == mIdMediaBrowserControlBack ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_back(); - } - else - if ( control_id == mIdMediaBrowserControlStop ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_stop(); - } - else - if ( control_id == mIdMediaBrowserControlForward ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_forward(); - } - else - if ( control_id == mIdMediaBrowserControlHome ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->loadURI( mHomeWebUrl ); - } - else - if ( control_id == mIdMediaBrowserControlReload ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_reload( true ); - } -/* - else - if ( control_id == mIdMediaBrowserControlClearCache ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->clear_cache(); - } - else - if ( control_id == mIdMediaBrowserControlClearCookies ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->clear_cookies(); - } - else - if ( control_id == mIdMediaBrowserControlEnableCookies ) - { - if ( mSelectedPanel ) - { - if ( mMediaBrowserControlEnableCookies ) - { - mSelectedPanel->mMediaSource->enable_cookies( true ); - } - else - { - mSelectedPanel->mMediaSource->enable_cookies( false ); - } - }; - }; -*/ -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::keyboard( int key ) -{ - //if ( key == 'a' || key == 'A' ) - // addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - //else - //if ( key == 'r' || key == 'R' ) - // remMediaPanel( mSelectedPanel ); - //else - //if ( key == 'd' || key == 'D' ) - // dumpPanelInfo(); - //else - if ( key == 27 ) - { - std::cout << "Application finished - exiting..." << std::endl; - delete this; - exit( 0 ); - }; - - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 , LLSD()); - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0, LLSD()); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::mouseButton( int button, int state, int x, int y ) -{ - if ( button == GLUT_LEFT_BUTTON ) - { - if ( state == GLUT_DOWN ) - { - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_DOWN, 0, media_x, media_y, 0 ); - } - else - if ( state == GLUT_UP ) - { - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - // only select a panel if we're on a panel - // (HACK: strictly speaking this rules out clicking on - // the origin of a panel but that's very unlikely) - if ( media_x > 0 && media_y > 0 ) - { - selectPanelById( id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_UP, 0, media_x, media_y, 0 ); - }; - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::mousePassive( int x, int y ) -{ - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_MOVE, 0, media_x, media_y, 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::mouseMove( int x, int y ) -{ - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_MOVE, 0, media_x, media_y, 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::makeChrome() -{ - // IDs used by GLUI - int start_id = 0x1000; - - // right side window - geometry manipulators -#if __APPLE__ - // the Apple GLUT implementation doesn't seem to set the graphic offset of subwindows correctly when they overlap in certain ways. - // Use a separate controls window in this case. - // GLUI window at right containing manipulation controls and other buttons - int x = glutGet(GLUT_WINDOW_X) + glutGet(GLUT_WINDOW_WIDTH) + 4; - int y = glutGet(GLUT_WINDOW_Y); - GLUI* right_glui_window = GLUI_Master.create_glui( "", 0, x, y ); -#else - GLUI* right_glui_window = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_RIGHT ); -#endif - mViewRotationCtrl = right_glui_window->add_rotation( "Rotation", mViewRotation ); - mViewTranslationCtrl = right_glui_window->add_translation( "Translate", GLUI_TRANSLATION_XY, mViewPos ); - mViewTranslationCtrl->set_speed( 0.01f ); - mViewScaleCtrl = right_glui_window->add_translation( "Scale", GLUI_TRANSLATION_Z, &mViewPos[ 2 ] ); - mViewScaleCtrl->set_speed( 0.05f ); - right_glui_window->set_main_gfx_window( mAppWindow ); - - // right side window - app controls - /* - mIdControlAddPanel = start_id++; - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - right_glui_window->add_button( "Add panel", mIdControlAddPanel, gluiCallbackWrapper ); - right_glui_window->add_statictext( "" ); - mIdControlRemPanel = start_id++; - right_glui_window->add_button( "Rem panel", mIdControlRemPanel, gluiCallbackWrapper ); - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - mIdControlCrashPlugin = start_id++; - right_glui_window->add_button( "Crash plugin", mIdControlCrashPlugin, gluiCallbackWrapper ); - mIdControlHangPlugin = start_id++; - right_glui_window->add_button( "Hang plugin", mIdControlHangPlugin, gluiCallbackWrapper ); - */ - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - mIdControlExitApp = start_id++; - right_glui_window->add_button( "Exit app", mIdControlExitApp, gluiCallbackWrapper ); - - //// top window - holds bookmark UI - mIdBookmarks = start_id++; - mSelBookmark = 0; - GLUI* glui_window_top = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mBookmarkList = glui_window_top->add_listbox( "", &mSelBookmark, mIdBookmarks, gluiCallbackWrapper ); - // only add the first 50 bookmarks - list can be very long sometimes (30,000+) - // when testing list of media URLs from AGNI for example - for( unsigned int each = 0; each < mBookmarks.size() && each < 50; ++each ) - mBookmarkList->add_item( each, const_cast< char* >( mBookmarks[ each ].first.c_str() ) ); - glui_window_top->set_main_gfx_window( mAppWindow ); - - glui_window_top->add_column( false ); - mIdUrlEdit = start_id++; - mUrlEdit = glui_window_top->add_edittext( "Url:", GLUI_EDITTEXT_TEXT, 0, mIdUrlEdit, gluiCallbackWrapper ); - mUrlEdit->set_w( 600 ); - //GLUI* glui_window_top2 = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - //mIdUrlInitHistoryEdit = start_id++; - //mUrlInitHistoryEdit = glui_window_top2->add_edittext( "Init History (separate by commas or semicolons):", - // GLUI_EDITTEXT_TEXT, 0, mIdUrlInitHistoryEdit, gluiCallbackWrapper ); - //mUrlInitHistoryEdit->set_w( 800 ); - - // top window - media controls for "time" media types (e.g. movies) -/* - mGluiMediaTimeControlWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mGluiMediaTimeControlWindow->set_main_gfx_window( mAppWindow ); - mIdMediaTimeControlPlay = start_id++; - mGluiMediaTimeControlWindow->add_button( "PLAY", mIdMediaTimeControlPlay, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlLoop = start_id++; - mGluiMediaTimeControlWindow->add_button( "LOOP", mIdMediaTimeControlLoop, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlPause = start_id++; - mGluiMediaTimeControlWindow->add_button( "PAUSE", mIdMediaTimeControlPause, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - - GLUI_Button *button; - mIdMediaTimeControlRewind = start_id++; - button = mGluiMediaTimeControlWindow->add_button( "<<", mIdMediaTimeControlRewind, gluiCallbackWrapper ); - button->set_w(30); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlFastForward = start_id++; - button = mGluiMediaTimeControlWindow->add_button( ">>", mIdMediaTimeControlFastForward, gluiCallbackWrapper ); - button->set_w(30); - - mGluiMediaTimeControlWindow->add_column( true ); - - mIdMediaTimeControlStop = start_id++; - mGluiMediaTimeControlWindow->add_button( "STOP", mIdMediaTimeControlStop, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlVolume = start_id++; - GLUI_Spinner* spinner = mGluiMediaTimeControlWindow->add_spinner( "Volume", 2, &mMediaTimeControlVolume, mIdMediaTimeControlVolume, gluiCallbackWrapper); - spinner->set_float_limits( 0, 100 ); - mGluiMediaTimeControlWindow->add_column( true ); - mIdMediaTimeControlSeekSeconds = start_id++; - spinner = mGluiMediaTimeControlWindow->add_spinner( "", 2, &mMediaTimeControlSeekSeconds, mIdMediaTimeControlSeekSeconds, gluiCallbackWrapper); - spinner->set_float_limits( 0, 200 ); - spinner->set_w( 32 ); - spinner->set_speed( 0.025f ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlSeek = start_id++; - mGluiMediaTimeControlWindow->add_button( "SEEK", mIdMediaTimeControlSeek, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); -*/ - - // top window - media controls for "browser" media types (e.g. web browser) - mGluiMediaBrowserControlWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mGluiMediaBrowserControlWindow->set_main_gfx_window( mAppWindow ); - mIdMediaBrowserControlBack = start_id++; - mMediaBrowserControlBackButton = mGluiMediaBrowserControlWindow->add_button( "BACK", mIdMediaBrowserControlBack, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlStop = start_id++; - mGluiMediaBrowserControlWindow->add_button( "STOP", mIdMediaBrowserControlStop, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlForward = start_id++; - mMediaBrowserControlForwardButton = mGluiMediaBrowserControlWindow->add_button( "FORWARD", mIdMediaBrowserControlForward, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlHome = start_id++; - mGluiMediaBrowserControlWindow->add_button( "HOME", mIdMediaBrowserControlHome, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlReload = start_id++; - mGluiMediaBrowserControlWindow->add_button( "RELOAD", mIdMediaBrowserControlReload, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - /* - mIdMediaBrowserControlClearCache = start_id++; - mGluiMediaBrowserControlWindow->add_button( "CLEAR CACHE", mIdMediaBrowserControlClearCache, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlClearCookies = start_id++; - mGluiMediaBrowserControlWindow->add_button( "CLEAR COOKIES", mIdMediaBrowserControlClearCookies, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlEnableCookies = start_id++; - mMediaBrowserControlEnableCookies = 0; - mGluiMediaBrowserControlWindow->add_checkbox( "Enable Cookies", &mMediaBrowserControlEnableCookies, mIdMediaBrowserControlEnableCookies, gluiCallbackWrapper ); - - // top window - misc controls - GLUI* glui_window_misc_control = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mIdRandomPanelCount = start_id++; - mRandomPanelCount = 0; - glui_window_misc_control->add_checkbox( "Randomize panel count", &mRandomPanelCount, mIdRandomPanelCount, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - mIdRandomBookmarks = start_id++; - mRandomBookmarks = 0; - glui_window_misc_control->add_checkbox( "Randomize bookmarks", &mRandomBookmarks, mIdRandomBookmarks, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdDisableTimeout = start_id++; - mDisableTimeout = 0; - glui_window_misc_control->add_checkbox( "Disable plugin timeout", &mDisableTimeout, mIdDisableTimeout, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdUsePluginReadThread = start_id++; - mUsePluginReadThread = 0; - glui_window_misc_control->add_checkbox( "Use plugin read thread", &mUsePluginReadThread, mIdUsePluginReadThread, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdLargePanelSpacing = start_id++; - mLargePanelSpacing = 0; - glui_window_misc_control->add_checkbox( "Large Panel Spacing", &mLargePanelSpacing, mIdLargePanelSpacing, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); -*/ - // bottom window - status - mBottomGLUIWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_BOTTOM ); - mStatusText = mBottomGLUIWindow->add_statictext( "" ); - mBottomGLUIWindow->set_main_gfx_window( mAppWindow ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::resetView() -{ - mViewRotationCtrl->reset(); - - mViewScaleCtrl->set_x( 0.0f ); - mViewScaleCtrl->set_y( 0.0f ); - mViewScaleCtrl->set_z( 1.3f ); - - mViewTranslationCtrl->set_x( 0.0f ); - mViewTranslationCtrl->set_y( 0.0f ); - mViewTranslationCtrl->set_z( 0.0f ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::makePickTexture( int id, GLuint* texture_handle, unsigned char** texture_pixels ) -{ - int pick_texture_width = 1024; - int pick_texture_height = 1024; - int pick_texture_depth = 3; - unsigned char* ptr = new unsigned char[ pick_texture_width * pick_texture_height * pick_texture_depth ]; - for( int y = 0; y < pick_texture_height; ++y ) - { - for( int x = 0; x < pick_texture_width * pick_texture_depth ; x += pick_texture_depth ) - { - unsigned long bits = 0L; - bits |= ( id << 20 ) | ( y << 10 ) | ( x / 3 ); - unsigned char r_component = ( bits >> 16 ) & 0xff; - unsigned char g_component = ( bits >> 8 ) & 0xff; - unsigned char b_component = bits & 0xff; - - ptr[ y * pick_texture_width * pick_texture_depth + x + 0 ] = r_component; - ptr[ y * pick_texture_width * pick_texture_depth + x + 1 ] = g_component; - ptr[ y * pick_texture_width * pick_texture_depth + x + 2 ] = b_component; - }; - }; - - glGenTextures( 1, texture_handle ); - - checkGLError("glGenTextures"); - std::cout << "glGenTextures returned " << *texture_handle << std::endl; - - bindTexture( *texture_handle ); - glTexImage2D( GL_TEXTURE_2D, 0, - GL_RGB, - pick_texture_width, pick_texture_height, - 0, GL_RGB, GL_UNSIGNED_BYTE, ptr ); - - *texture_pixels = ptr; -} - -//////////////////////////////////////////////////////////////////////////////// -// -std::string LLFBConnectTest::mimeTypeFromUrl( std::string& url ) -{ - // default to web - std::string mime_type = "text/html"; - - // we may need a more advanced MIME type accessor later :-) - if ( url.find( ".mov" ) != std::string::npos ) // Movies - mime_type = "video/quicktime"; - else - if ( url.find( ".txt" ) != std::string::npos ) // Apple Text descriptors - mime_type = "video/quicktime"; - else - if ( url.find( ".mp3" ) != std::string::npos ) // Apple Text descriptors - mime_type = "video/quicktime"; - else - if ( url.find( "example://" ) != std::string::npos ) // Example plugin - mime_type = "example/example"; - - return mime_type; -} - -//////////////////////////////////////////////////////////////////////////////// -// -std::string LLFBConnectTest::pluginNameFromMimeType( std::string& mime_type ) -{ -#if LL_DARWIN - std::string plugin_name( "media_plugin_null.dylib" ); - if ( mime_type == "video/quicktime" ) - plugin_name = "media_plugin_quicktime.dylib"; - else - if ( mime_type == "text/html" ) - plugin_name = "media_plugin_webkit.dylib"; - -#elif LL_WINDOWS - std::string plugin_name( "media_plugin_null.dll" ); - - if ( mime_type == "video/quicktime" ) - plugin_name = "media_plugin_quicktime.dll"; - else - if ( mime_type == "text/html" ) - plugin_name = "media_plugin_webkit.dll"; - else - if ( mime_type == "example/example" ) - plugin_name = "media_plugin_example.dll"; - -#elif LL_LINUX - std::string plugin_name( "libmedia_plugin_null.so" ); - - if ( mime_type == "video/quicktime" ) - plugin_name = "libmedia_plugin_quicktime.so"; - else - if ( mime_type == "text/html" ) - plugin_name = "libmedia_plugin_webkit.so"; -#endif - return plugin_name; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLFBConnectTest::addMediaPanel( std::string url ) -{ - // Get the plugin filename using the URL - std::string mime_type = mimeTypeFromUrl( url ); - std::string plugin_name = pluginNameFromMimeType( mime_type ); - - // create a random size for the new media - int media_width; - int media_height; - getRandomMediaSize( media_width, media_height, mime_type ); - media_width = 1024; - media_height = 1536; - - // make a new plugin - LLPluginClassMedia* media_source = new LLPluginClassMedia(this); - - // enable cookies so the FB login works - media_source->enable_cookies(true); - - // tell the plugin what size we asked for - media_source->setSize( media_width, media_height ); - - // Use the launcher start and initialize the plugin -#if LL_DARWIN || LL_LINUX - std::string launcher_name( "SLPlugin" ); -#elif LL_WINDOWS - std::string launcher_name( "SLPlugin.exe" ); -#endif - - // for this test app, use the cwd as the user data path (ugh). -#if LL_WINDOWS - std::string user_data_path = ".\\"; -#else - char cwd[ FILENAME_MAX ]; - if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) - { - std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return NULL; - } - std::string user_data_path = std::string( cwd ) + "/"; -#endif - media_source->setUserDataPath(user_data_path); - media_source->init( launcher_name, user_data_path, plugin_name, false ); - //media_source->setDisableTimeout(mDisableTimeout); - - // make a new panel and save parameters - mediaPanel* panel = new mediaPanel; - panel->mMediaSource = media_source; - panel->mStartUrl = url; - panel->mMimeType = mime_type; - panel->mMediaWidth = media_width; - panel->mMediaHeight = media_height; - panel->mTextureWidth = 0; - panel->mTextureHeight = 0; - panel->mTextureScaleX = 0; - panel->mTextureScaleY = 0; - panel->mMediaTextureHandle = 0; - panel->mPickTextureHandle = 0; - panel->mAppTextureCoordsOpenGL = false; // really need an 'undefined' state here too - panel->mReadyToRender = false; - - // look through current media panels to find an unused index number - bool id_exists = true; - for( int nid = 0; nid < mMaxPanels; ++nid ) - { - // does this id exist already? - id_exists = false; - for( int pid = 0; pid < (int)mMediaPanels.size(); ++pid ) - { - if ( nid == mMediaPanels[ pid ]->mId ) - { - id_exists = true; - break; - }; - }; - - // id wasn't found so we can use it - if ( ! id_exists ) - { - panel->mId = nid; - break; - }; - }; - - // if we get here and this flag is set, there is no room for any more panels - if ( id_exists ) - { - std::cout << "No room for any more panels" << std::endl; - } - else - { - // now we have the ID we can use it to make the - // pick texture (id is baked into texture pixels) - makePickTexture( panel->mId, &panel->mPickTextureHandle, &panel->mPickTexturePixels ); - - // save this in the list of panels - mMediaPanels.push_back( panel ); - - // select the panel that was just created - selectPanel( panel ); - - // load and start the URL - panel->mMediaSource->loadURI( url ); - panel->mMediaSource->start(); - - 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; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::updateMediaPanel( mediaPanel* panel ) -{ -// checkGLError("LLFBConnectTest::updateMediaPanel"); - - if ( ! panel ) - return; - - if(!panel->mMediaSource || !panel->mMediaSource->textureValid()) - { - panel->mReadyToRender = false; - return; - } - - // take a reference copy of the plugin values since they - // might change during this lifetime of this function - int plugin_media_width = panel->mMediaSource->getWidth(); - int plugin_media_height = panel->mMediaSource->getHeight(); - int plugin_texture_width = panel->mMediaSource->getBitsWidth(); - int plugin_texture_height = panel->mMediaSource->getBitsHeight(); - - // If the texture isn't created or the media or texture dimensions changed AND - // the sizes are valid then we need to delete the old media texture (if necessary) - // then make a new one. - if ((panel->mMediaTextureHandle == 0 || - panel->mMediaWidth != plugin_media_width || - panel->mMediaHeight != plugin_media_height || - panel->mTextureWidth != plugin_texture_width || - panel->mTextureHeight != plugin_texture_height) && - ( plugin_media_width > 0 && plugin_media_height > 0 && - plugin_texture_width > 0 && plugin_texture_height > 0 ) ) - { - std::cout << "Valid media size (" << plugin_media_width << " x " << plugin_media_height - << ") and texture size (" << plugin_texture_width << " x " << plugin_texture_height - << ") for panel with ID=" << panel->mId << " - making texture" << std::endl; - - // delete old GL texture - if ( isTexture( panel->mMediaTextureHandle ) ) - { - std::cerr << "updateMediaPanel: deleting texture " << panel->mMediaTextureHandle << std::endl; - glDeleteTextures( 1, &panel->mMediaTextureHandle ); - panel->mMediaTextureHandle = 0; - } - - std::cerr << "before: pick texture is " << panel->mPickTextureHandle << ", media texture is " << panel->mMediaTextureHandle << std::endl; - - // make a GL texture based on the dimensions the plugin told us - GLuint new_texture = 0; - glGenTextures( 1, &new_texture ); - - checkGLError("glGenTextures"); - - std::cout << "glGenTextures returned " << new_texture << std::endl; - - panel->mMediaTextureHandle = new_texture; - - bindTexture( panel->mMediaTextureHandle ); - - std::cout << "Setting texture size to " << plugin_texture_width << " x " << plugin_texture_height << std::endl; - glTexImage2D( GL_TEXTURE_2D, 0, - GL_RGB, - plugin_texture_width, plugin_texture_height, - 0, GL_RGB, GL_UNSIGNED_BYTE, - 0 ); - - - std::cerr << "after: pick texture is " << panel->mPickTextureHandle << ", media texture is " << panel->mMediaTextureHandle << std::endl; - }; - - // update our record of the media and texture dimensions - // NOTE: do this after we we check for sizes changes - panel->mMediaWidth = plugin_media_width; - panel->mMediaHeight = plugin_media_height; - panel->mTextureWidth = plugin_texture_width; - panel->mTextureHeight = plugin_texture_height; - if ( plugin_texture_width > 0 ) - { - panel->mTextureScaleX = (double)panel->mMediaWidth / (double)panel->mTextureWidth; - }; - if ( plugin_texture_height > 0 ) - { - panel->mTextureScaleY = (double)panel->mMediaHeight / (double)panel->mTextureHeight; - }; - - // update the flag which tells us if the media source uses OprnGL coords or not. - panel->mAppTextureCoordsOpenGL = panel->mMediaSource->getTextureCoordsOpenGL(); - - // Check to see if we have enough to render this panel. - // If we do, set a flag that the display functions use so - // they only render a panel with media if it's ready. - if ( panel->mMediaWidth < 0 || - panel->mMediaHeight < 0 || - panel->mTextureWidth < 1 || - panel->mTextureHeight < 1 || - panel->mMediaTextureHandle == 0 ) - { - panel->mReadyToRender = false; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLFBConnectTest::replaceMediaPanel( mediaPanel* panel, std::string url ) -{ - // no media panels so we can't change anything - have to add - if ( mMediaPanels.size() == 0 ) - return NULL; - - // sanity check - if ( ! panel ) - return NULL; - - int index; - for(index = 0; index < (int)mMediaPanels.size(); index++) - { - if(mMediaPanels[index] == panel) - break; - } - - if(index >= (int)mMediaPanels.size()) - { - // panel isn't in mMediaPanels - return NULL; - } - - std::cout << "Replacing media panel with index " << panel->mId << std::endl; - - int panel_id = panel->mId; - - if(mSelectedPanel == panel) - mSelectedPanel = NULL; - - delete panel; - - // Get the plugin filename using the URL - std::string mime_type = mimeTypeFromUrl( url ); - std::string plugin_name = pluginNameFromMimeType( mime_type ); - - // create a random size for the new media - int media_width; - int media_height; - getRandomMediaSize( media_width, media_height, mime_type ); - - // make a new plugin - LLPluginClassMedia* media_source = new LLPluginClassMedia(this); - - // tell the plugin what size we asked for - media_source->setSize( media_width, media_height ); - - // Use the launcher start and initialize the plugin -#if LL_DARWIN || LL_LINUX - std::string launcher_name( "SLPlugin" ); -#elif LL_WINDOWS - std::string launcher_name( "SLPlugin.exe" ); -#endif - - // for this test app, use the cwd as the user data path (ugh). -#if LL_WINDOWS - std::string user_data_path = ".\\"; -#else - char cwd[ FILENAME_MAX ]; - if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) - { - std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return NULL; - } - std::string user_data_path = std::string( cwd ) + "/"; -#endif - - media_source->setUserDataPath(user_data_path); - media_source->init( launcher_name, user_data_path, plugin_name, false ); - //media_source->setDisableTimeout(mDisableTimeout); - - // make a new panel and save parameters - panel = new mediaPanel; - panel->mMediaSource = media_source; - panel->mStartUrl = url; - panel->mMimeType = mime_type; - panel->mMediaWidth = media_width; - panel->mMediaHeight = media_height; - panel->mTextureWidth = 0; - panel->mTextureHeight = 0; - panel->mTextureScaleX = 0; - panel->mTextureScaleY = 0; - panel->mMediaTextureHandle = 0; - panel->mPickTextureHandle = 0; - panel->mAppTextureCoordsOpenGL = false; // really need an 'undefined' state here too - panel->mReadyToRender = false; - - panel->mId = panel_id; - - // Replace the entry in the panels array - mMediaPanels[index] = panel; - - // now we have the ID we can use it to make the - // pick texture (id is baked into texture pixels) - makePickTexture( panel->mId, &panel->mPickTextureHandle, &panel->mPickTexturePixels ); - - // select the panel that was just created - selectPanel( panel ); - - // load and start the URL - panel->mMediaSource->loadURI( url ); - panel->mMediaSource->start(); - - return panel; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::getRandomMediaSize( int& width, int& height, std::string mime_type ) -{ - // Make a new media source with a random size which we'll either - // directly or the media plugin will tell us what it wants later. - // Use a random size so we can test support for weird media sizes. - // (Almost everything else will get filled in later once the - // plugin responds) - // NB. Do we need to enforce that width is on 4 pixel boundary? - width = ( ( rand() % 170 ) + 30 ) * 4; - height = ( ( rand() % 170 ) + 30 ) * 4; - - // adjust this random size if it's a browser so we get - // a more useful size for testing.. - if ( mime_type == "text/html" || mime_type == "example/example" ) - { - width = ( ( rand() % 100 ) + 100 ) * 4; - height = ( width * ( ( rand() % 400 ) + 1000 ) ) / 1000; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::remMediaPanel( mediaPanel* panel ) -{ - // always leave one panel - if ( mMediaPanels.size() == 1 ) - return; - - // sanity check - don't think this can happen but see above for a case where it might... - if ( ! panel ) - return; - - std::cout << "Removing media panel with index " << panel->mId << " - total panels = " << mMediaPanels.size() - 1 << std::endl; - - if(mSelectedPanel == panel) - mSelectedPanel = NULL; - - delete panel; - - // remove from storage list - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - if ( mMediaPanels[ i ] == panel ) - { - mMediaPanels.erase( mMediaPanels.begin() + i ); - break; - }; - }; - - // select the first panel - selectPanel( mMediaPanels[ 0 ] ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::updateStatusBar() -{ - if ( ! mSelectedPanel ) - return; - - // cache results - this is a very slow function - static int cached_id = -1; - static int cached_media_width = -1; - static int cached_media_height = -1; - static int cached_texture_width = -1; - static int cached_texture_height = -1; - static bool cached_supports_browser_media = true; - static bool cached_supports_time_media = false; - static int cached_movie_time = -1; - static GLfloat cached_distance = -1.0f; - - static std::string cached_plugin_version = ""; - if ( - cached_id == mSelectedPanel->mId && - cached_media_width == mSelectedPanel->mMediaWidth && - cached_media_height == mSelectedPanel->mMediaHeight && - cached_texture_width == mSelectedPanel->mTextureWidth && - cached_texture_height == mSelectedPanel->mTextureHeight && - cached_supports_browser_media == mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() && - cached_supports_time_media == mSelectedPanel->mMediaSource->pluginSupportsMediaTime() && - cached_plugin_version == mSelectedPanel->mMediaSource->getPluginVersion() && - cached_movie_time == (int)mSelectedPanel->mMediaSource->getCurrentTime() && - cached_distance == mDistanceCameraToSelectedGeometry - ) - { - // nothing changed so don't spend time here - return; - }; - - std::ostringstream stream( "" ); - - stream.str( "" ); - stream.clear(); - - stream << "Id: "; - stream << std::setw( 2 ) << std::setfill( '0' ); - stream << mSelectedPanel->mId; - stream << " | "; - stream << "Media: "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << mSelectedPanel->mMediaWidth; - stream << " x "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << mSelectedPanel->mMediaHeight; - stream << " | "; - stream << "Texture: "; - stream << std::setw( 4 ) << std::setfill( '0' ); - stream << mSelectedPanel->mTextureWidth; - stream << " x "; - stream << std::setw( 4 ) << std::setfill( '0' ); - stream << mSelectedPanel->mTextureHeight; - - stream << " | "; - stream << "Distance: "; - stream << std::setw( 6 ); - stream << std::setprecision( 3 ); - stream << std::setprecision( 3 ); - stream << mDistanceCameraToSelectedGeometry; - stream << " | "; - - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() ) - stream << "BROWSER"; - else - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - stream << "TIME "; - stream << " | "; - stream << mSelectedPanel->mMediaSource->getPluginVersion(); - stream << " | "; - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - { - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << (int)mSelectedPanel->mMediaSource->getCurrentTime(); - stream << " / "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << (int)mSelectedPanel->mMediaSource->getDuration(); - stream << " @ "; - stream << (int)mSelectedPanel->mMediaSource->getCurrentPlayRate(); - stream << " | "; - }; - - glutSetWindow( mBottomGLUIWindow->get_glut_window_id() ); - mStatusText->set_text( const_cast< char*>( stream.str().c_str() ) ); - glutSetWindow( mAppWindow ); - - // caching - cached_id = mSelectedPanel->mId; - cached_media_width = mSelectedPanel->mMediaWidth; - cached_media_height = mSelectedPanel->mMediaHeight; - cached_texture_width = mSelectedPanel->mTextureWidth; - cached_texture_height = mSelectedPanel->mTextureHeight; - cached_supports_browser_media = mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser(); - cached_supports_time_media = mSelectedPanel->mMediaSource->pluginSupportsMediaTime(); - cached_plugin_version = mSelectedPanel->mMediaSource->getPluginVersion(); - cached_movie_time = (int)mSelectedPanel->mMediaSource->getCurrentTime(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::dumpPanelInfo() -{ - std::cout << std::endl << "===== Media Panels =====" << std::endl; - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - std::cout << std::setw( 2 ) << std::setfill( '0' ); - std::cout << i + 1 << "> "; - std::cout << "Id: "; - std::cout << std::setw( 2 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mId; - std::cout << " | "; - std::cout << "Media: "; - std::cout << std::setw( 3 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mMediaWidth; - std::cout << " x "; - std::cout << std::setw( 3 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mMediaHeight; - std::cout << " | "; - std::cout << "Texture: "; - std::cout << std::setw( 4 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mTextureWidth; - std::cout << " x "; - std::cout << std::setw( 4 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mTextureHeight; - std::cout << " | "; - if ( mMediaPanels[ i ] == mSelectedPanel ) - std::cout << "(selected)"; - - std::cout << std::endl; - }; - std::cout << "========================" << std::endl; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLFBConnectTest::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) -{ - // Uncomment this to make things much, much quieter. -// return; - - switch(event) - { - case MEDIA_EVENT_CONTENT_UPDATED: - // too spammy -- don't log these -// std::cerr << "Media event: MEDIA_EVENT_CONTENT_UPDATED " << std::endl; - break; - - case MEDIA_EVENT_TIME_DURATION_UPDATED: - // too spammy -- don't log these -// std::cerr << "Media event: MEDIA_EVENT_TIME_DURATION_UPDATED, time is " << self->getCurrentTime() << " of " << self->getDuration() << std::endl; - break; - - case MEDIA_EVENT_SIZE_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_SIZE_CHANGED " << std::endl; - break; - - case MEDIA_EVENT_CURSOR_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << std::endl; - break; - - case MEDIA_EVENT_NAVIGATE_BEGIN: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_BEGIN " << std::endl; - break; - - case MEDIA_EVENT_NAVIGATE_COMPLETE: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_COMPLETE, result string is: " << self->getNavigateResultString() << std::endl; - break; - - case MEDIA_EVENT_PROGRESS_UPDATED: - std::cerr << "Media event: MEDIA_EVENT_PROGRESS_UPDATED, loading at " << self->getProgressPercent() << "%" << std::endl; - break; - - case MEDIA_EVENT_STATUS_TEXT_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_STATUS_TEXT_CHANGED, new status text is: " << self->getStatusText() << std::endl; - break; - - case MEDIA_EVENT_NAME_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_NAME_CHANGED, new name is: " << self->getMediaName() << std::endl; - glutSetWindowTitle( self->getMediaName().c_str() ); - break; - - case MEDIA_EVENT_LOCATION_CHANGED: - { - std::cerr << "Media event: MEDIA_EVENT_LOCATION_CHANGED, new uri is: " << self->getLocation() << std::endl; - mediaPanel* panel = findMediaPanel(self); - if(panel != NULL) - { - panel->mStartUrl = self->getLocation(); - if(panel == mSelectedPanel) - { - mUrlEdit->set_text(const_cast<char*>(panel->mStartUrl.c_str()) ); - } - } - } - break; - - case MEDIA_EVENT_NAVIGATE_ERROR_PAGE: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_ERROR_PAGE, uri is: " << self->getClickURL() << std::endl; - break; - - case MEDIA_EVENT_CLICK_LINK_HREF: - { - 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: - std::cerr << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << std::endl; - break; - - case MEDIA_EVENT_PLUGIN_FAILED: - std::cerr << "Media event: MEDIA_EVENT_PLUGIN_FAILED" << std::endl; - break; - - 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; - - case MEDIA_EVENT_AUTH_REQUEST: - { - //std::cerr << "Media event: MEDIA_EVENT_AUTH_REQUEST, url " << self->getAuthURL() ", realm " << self->getAuthRealm() << std::endl; - - // TODO: display an auth dialog - self->sendAuthResponse(false, "", ""); - } - break; - - case MEDIA_EVENT_LINK_HOVERED: - { - std::cerr << "Media event: MEDIA_EVENT_LINK_HOVERED, hover text is: " << self->getHoverText() << std::endl; - } - break; - - default: - { - std::cerr << "Media event: <unknown>, code is: " << int(event) << std::endl; - } - break; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// -static void gluiCallbackWrapper( int control_id ) -{ - if ( gApplication ) - gApplication->gluiCallback( control_id ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutReshape( int width, int height ) -{ - if ( gApplication ) - gApplication->reshape( width, height ); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutDisplay() -{ - if ( gApplication ) - gApplication->display(); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutIdle(int update_ms) -{ - GLUI_Master.set_glutTimerFunc( update_ms, glutIdle, update_ms); - - if ( gApplication ) - gApplication->idle(); - -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutKeyboard( unsigned char key, int x, int y ) -{ - if ( gApplication ) - gApplication->keyboard( key ); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMousePassive( int x, int y ) -{ - if ( gApplication ) - gApplication->mousePassive( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMouseMove( int x , int y ) -{ - if ( gApplication ) - gApplication->mouseMove( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMouseButton( int button, int state, int x, int y ) -{ - if ( gApplication ) - gApplication->mouseButton( button, state, x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -int main( int argc, char* argv[] ) -{ -#if LL_DARWIN - // Set the current working directory to <application bundle>/Contents/Resources/ - CFURLRef resources_url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); - if(resources_url != NULL) - { - CFStringRef resources_string = CFURLCopyFileSystemPath(resources_url, kCFURLPOSIXPathStyle); - CFRelease(resources_url); - if(resources_string != NULL) - { - char buffer[PATH_MAX] = ""; - if(CFStringGetCString(resources_string, buffer, sizeof(buffer), kCFStringEncodingUTF8)) - { - chdir(buffer); - } - CFRelease(resources_string); - } - } -#endif - - glutInit( &argc, argv ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB ); - - const int app_window_x = 80; - const int app_window_y = 0; - const int app_window_width = 960; - const int app_window_height = 960; - - glutInitWindowPosition( app_window_x, app_window_y ); - glutInitWindowSize( app_window_width, app_window_height ); - - int app_window_handle = glutCreateWindow( "LLFBConnectTest" ); - - glutDisplayFunc( glutDisplay ); - - GLUI_Master.set_glutReshapeFunc( glutReshape ); - GLUI_Master.set_glutKeyboardFunc( glutKeyboard ); - GLUI_Master.set_glutMouseFunc( glutMouseButton ); - - glutPassiveMotionFunc( glutMousePassive ); - glutMotionFunc( glutMouseMove ); - - glutSetWindow( app_window_handle ); - - gApplication = new LLFBConnectTest( app_window_handle, app_window_width, app_window_height ); - - // update at approximately 60hz - int update_ms = 1000 / 60; - - GLUI_Master.set_glutTimerFunc( update_ms, glutIdle, update_ms); - - glutMainLoop(); - - delete gApplication; -} diff --git a/indra/test_apps/llfbconnecttest/llfbconnecttest.h b/indra/test_apps/llfbconnecttest/llfbconnecttest.h deleted file mode 100644 index 77e4d096d0..0000000000 --- a/indra/test_apps/llfbconnecttest/llfbconnecttest.h +++ /dev/null @@ -1,173 +0,0 @@ -/** - * @file LLFBConnectTest.cpp - * @brief Facebook Connect Test App - * - * $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_FB_CONNECT_H -#define LL_FB_CONNECT_H - -#include <vector> -#include <string> -#include "llpluginclassmedia.h" -#include "llgl.h" - -// Forward declarations -class GLUI_Rotation; -class GLUI_Translation; -class GLUI_Listbox; -class GLUI_EditText; -class GLUI_StaticText; -class GLUI; -class GLUI_Button; - -//////////////////////////////////////////////////////////////////////////////// -// -struct mediaPanel -{ - public: - mediaPanel(); - ~mediaPanel(); - int mId; - std::string mStartUrl; - std::string mMimeType; - std::string mTarget; - LLPluginClassMedia *mMediaSource; - int mMediaWidth; - int mMediaHeight; - int mTextureWidth; - int mTextureHeight; - double mTextureScaleX; - double mTextureScaleY; - GLuint mMediaTextureHandle; - GLuint mPickTextureHandle; - unsigned char* mPickTexturePixels; - bool mAppTextureCoordsOpenGL; - bool mReadyToRender; -}; - -//////////////////////////////////////////////////////////////////////////////// -// -class LLFBConnectTest : public LLPluginClassMediaOwner -{ - public: - LLFBConnectTest( int app_window, int window_width, int window_height ); - ~LLFBConnectTest(); - - void reshape( int width, int height ); - void display(); - void idle(); - void gluiCallback( int control_id ); - void keyboard( int key ); - void mousePassive( int x, int y ); - void mouseButton( int button, int state, int x, int y ); - void mouseMove( int x, int y ); - - void bindTexture(GLuint texture, GLint row_length = 0, GLint alignment = 1); - bool checkGLError(const char *name = "OpenGL"); - void drawGeometry( int panel, bool selected ); - void startPanelHighlight( float red, float green, float blue, float line_width ); - void endPanelHighlight(); - enum { DrawTypePickTexture, DrawTypeMediaTexture }; - void draw( int draw_type ); - void windowPosToTexturePos( int window_x, int window_y, int& media_x, int& media_y, int& id ); - - mediaPanel* addMediaPanel( std::string url ); - void updateMediaPanel( mediaPanel* panel ); - void remMediaPanel( mediaPanel* panel ); - 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(); - - void dumpPanelInfo(); - void updateStatusBar(); - - GLfloat distanceToCamera( GLfloat point_x, GLfloat point_y, GLfloat point_z ); - - - // Inherited from LLPluginClassMediaOwner - /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, LLPluginClassMediaOwner::EMediaEvent); - - private: - const int mVersionMajor; - const int mVersionMinor; - const int mVersionPatch; - const int mMaxPanels; - int mAppWindow; - int mWindowWidth; - int mWindowHeight; - int mCurMouseX; - int mCurMouseY; - unsigned char mPixelReadColor[ 3 ]; - bool mFuzzyMedia; - const std::string mHomeWebUrl; - - std::vector< mediaPanel* > mMediaPanels; - mediaPanel* mSelectedPanel; - std::string mimeTypeFromUrl( std::string& url ); - std::string pluginNameFromMimeType( std::string& mime_type ); - - GLUI_Rotation* mViewRotationCtrl; - GLUI_Translation* mViewScaleCtrl; - GLUI_Translation* mViewTranslationCtrl; - float mViewportAspect; - float mViewPos[ 3 ]; - float mViewRotation[ 16 ]; - - float mDistanceCameraToSelectedGeometry; - - std::vector< std::pair< std::string, std::string > > mBookmarks; - GLUI_Listbox* mBookmarkList; - int mIdBookmarks; - int mIdUrlEdit; - GLUI_EditText* mUrlEdit; - int mSelBookmark; - - int mIdControlExitApp; - - GLUI* mGluiMediaBrowserControlWindow; - int mIdMediaBrowserControlBack; - GLUI_Button* mMediaBrowserControlBackButton; - int mIdMediaBrowserControlStop; - int mIdMediaBrowserControlForward; - GLUI_Button* mMediaBrowserControlForwardButton; - bool mGluiMediaBrowserControlWindowFlag; - bool mMediaBrowserControlBackButtonFlag; - bool mMediaBrowserControlForwardButtonFlag; - int mIdMediaBrowserControlHome; - int mIdMediaBrowserControlReload; - - GLUI* mBottomGLUIWindow; - GLUI_StaticText* mStatusText; -}; - -#endif // LL_FB_CONNECT_H - diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index 0c8bdc464d..e682eaccca 100755..100644 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -254,138 +254,8 @@ endif (DARWIN) # ) #endif (DARWIN) -### llmediaplugintest - -set(llmediaplugintest_SOURCE_FILES - llmediaplugintest.cpp - llmediaplugintest.h - bookmarks.txt - ) - -add_executable(llmediaplugintest - WIN32 - MACOSX_BUNDLE - ${llmediaplugintest_SOURCE_FILES} -) - -set_target_properties(llmediaplugintest - PROPERTIES - WIN32_EXECUTABLE - FALSE -) - -target_link_libraries(llmediaplugintest - ${GLUT_LIBRARY} - ${GLUI_LIBRARY} - ${OPENGL_LIBRARIES} - ${LLPLUGIN_LIBRARIES} - ${LLMESSAGE_LIBRARIES} - ${LLCOMMON_LIBRARIES} - ${PLUGIN_API_WINDOWS_LIBRARIES} -) - -if (DARWIN) - # The testbed needs to use a couple of CoreFoundation calls now, to deal with being a bundled app. - target_link_libraries(llmediaplugintest - ${COREFOUNDATION_LIBRARY} - ) -endif (DARWIN) - -add_dependencies(llmediaplugintest - stage_third_party_libs - SLPlugin - media_plugin_quicktime - media_plugin_webkit - media_plugin_example - ${LLPLUGIN_LIBRARIES} - ${LLMESSAGE_LIBRARIES} - ${LLCOMMON_LIBRARIES} -) - -# turn off weird GLUI pragma -add_definitions(-DGLUI_NO_LIB_PRAGMA) - -if (DARWIN OR LINUX) - # glui.h contains code that triggers the "overloaded-virtual" warning in gcc. - set_source_files_properties(llmediaplugintest.cpp PROPERTIES COMPILE_FLAGS "-Wno-overloaded-virtual") -endif (DARWIN OR LINUX) - # Gather build products of the various dependencies into the build directory for the testbed. -if (DARWIN) - # path inside the app bundle where we'll need to copy plugins and other related files - set(PLUGINS_DESTINATION_DIR - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llmediaplugintest.app/Contents/Resources - ) - - # create the Contents/Resources directory - add_custom_command( - TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS - -E - make_directory - ${PLUGINS_DESTINATION_DIR} - COMMENT "Creating Resources directory in app bundle." - ) -else (DARWIN) - set(PLUGINS_DESTINATION_DIR - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ - ) -endif (DARWIN) - -set(BUILT_SLPLUGIN $<TARGET_FILE:SLPlugin>) -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_SLPLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_SLPLUGIN} -) - -set(BUILT_LLCOMMON $<TARGET_FILE:llcommon>) -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_LLCOMMON} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLCOMMON} -) - -set(BUILT_WEBKIT_PLUGIN $<TARGET_FILE:media_plugin_webkit>) -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_WEBKIT_PLUGIN} -) - -if (DARWIN OR WINDOWS) - set(BUILT_QUICKTIME_PLUGIN $<TARGET_FILE:media_plugin_quicktime>) - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_QUICKTIME_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_QUICKTIME_PLUGIN} - ) -endif (DARWIN OR WINDOWS) - -set(BUILT_EXAMPLE_PLUGIN $<TARGET_FILE:media_plugin_example>) -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_EXAMPLE_PLUGIN} -) - -# copy over bookmarks file if llmediaplugintest gets built -set(BUILT_LLMEDIAPLUGINTEST $<TARGET_FILE:llmediaplugintest>) -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ - DEPENDS ${BUILT_LLMEDIAPLUGINTEST} -) - -# also copy it to the same place as SLPlugin, which is what the mac wants... -add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLMEDIAPLUGINTEST} -) - -if (DARWIN) -# add_custom_command(TARGET llmediaplugintest POST_BUILD -# COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} -# DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -# ) -endif (DARWIN) - if(WINDOWS) #******************** # Plugin test library deploy @@ -398,11 +268,6 @@ if(WINDOWS) libgmodule-2.0-0.dll libgobject-2.0-0.dll libgthread-2.0-0.dll - qtcored4.dll - qtguid4.dll - qtnetworkd4.dll - qtopengld4.dll - qtwebkitd4.dll ssleay32.dll ) copy_if_different( @@ -413,40 +278,6 @@ if(WINDOWS) ) set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - # Debug config runtime files required for the plugin test mule (Qt image format plugins) - set(plugintest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}/imageformats") - set(plugintest_debug_files - qgifd4.dll - qicod4.dll - qjpegd4.dll - qmngd4.dll - qsvgd4.dll - qtiffd4.dll - ) - copy_if_different( - ${plugintest_debug_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Debug/imageformats" - out_targets - ${plugintest_debug_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - - # Debug config runtime files required for the plugin test mule (Qt codec plugins) - set(plugintest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}/codecs") - set(plugintest_debug_files - qcncodecsd4.dll - qjpcodecsd4.dll - qkrcodecsd4.dll - qtwcodecsd4.dll - ) - copy_if_different( - ${plugintest_debug_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Debug/codecs" - out_targets - ${plugintest_debug_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - # Release & ReleaseDebInfo config runtime files required for the plugin test mule set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(plugintest_release_files @@ -455,12 +286,6 @@ if(WINDOWS) libgmodule-2.0-0.dll libgobject-2.0-0.dll libgthread-2.0-0.dll - qtcore4.dll - qtgui4.dll - qtnetwork4.dll - qtopengl4.dll - qtwebkit4.dll - qtxmlpatterns4.dll ssleay32.dll ) copy_if_different( @@ -479,63 +304,11 @@ if(WINDOWS) ) set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - # Release & ReleaseDebInfo config runtime files required for the plugin test mule (Qt image format plugins) - set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}/imageformats") - set(plugintest_release_files - qgif4.dll - qico4.dll - qjpeg4.dll - qmng4.dll - qsvg4.dll - qtiff4.dll - ) - copy_if_different( - ${plugintest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Release/imageformats" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - - copy_if_different( - ${plugintest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/imageformats" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the plugin test mule (Qt codec plugins) - set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}/codecs") - set(plugintest_release_files - qcncodecs4.dll - qjpcodecs4.dll - qkrcodecs4.dll - qtwcodecs4.dll - ) - copy_if_different( - ${plugintest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/Release/codecs" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - - copy_if_different( - ${plugintest_release_src_dir} - "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/codecs" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - add_custom_target(copy_plugintest_libs ALL DEPENDS ${plugin_test_targets} ) - add_dependencies(llmediaplugintest copy_plugintest_libs) - endif(WINDOWS) if (DARWIN) @@ -545,20 +318,6 @@ if (DARWIN) libaprutil-1.0.dylib libapr-1.0.dylib libexpat.1.5.2.dylib - libQtCore.4.7.1.dylib - libQtCore.4.dylib - libQtGui.4.7.1.dylib - libQtGui.4.dylib - libQtNetwork.4.7.1.dylib - libQtNetwork.4.dylib - libQtOpenGL.4.7.1.dylib - libQtOpenGL.4.dylib - libQtWebKit.4.7.1.dylib - libQtWebKit.4.dylib - libQtSvg.4.7.1.dylib - libQtSvg.4.dylib - libQtXml.4.7.1.dylib - libQtXml.4.dylib ) copy_if_different( ${plugintest_release_src_dir} @@ -568,46 +327,10 @@ if (DARWIN) ) set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) - set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") - set(plugintest_release_files - libqgif.dylib - libqico.dylib - libqjpeg.dylib - libqmng.dylib - libqsvg.dylib - libqtiff.dylib - ) - copy_if_different( - ${plugintest_release_src_dir} - "${PLUGINS_DESTINATION_DIR}/imageformats" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - - # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) - set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") - set(plugintest_release_files - libqcncodecs.dylib - libqjpcodecs.dylib - libqkrcodecs.dylib - libqtwcodecs.dylib - ) - copy_if_different( - ${plugintest_release_src_dir} - "${PLUGINS_DESTINATION_DIR}/codecs" - out_targets - ${plugintest_release_files} - ) - set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - add_custom_target(copy_plugintest_libs ALL DEPENDS ${plugin_test_targets} ) - add_dependencies(llmediaplugintest copy_plugintest_libs) endif (DARWIN) -ll_deploy_sharedlibs_command(llmediaplugintest) diff --git a/indra/test_apps/llplugintest/bookmarks.txt b/indra/test_apps/llplugintest/bookmarks.txt index 2ff64f217f..2ff64f217f 100755..100644 --- a/indra/test_apps/llplugintest/bookmarks.txt +++ b/indra/test_apps/llplugintest/bookmarks.txt diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp deleted file mode 100755 index fa4f5abd28..0000000000 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ /dev/null @@ -1,2377 +0,0 @@ -/** - * @file LLMediaPluginTest.cpp - * @brief Primary test application for LLMedia (Separate Process) Plugin system - * - * $LicenseInfo:firstyear=2008&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "linden_common.h" -#include "indra_constants.h" - -#include "llapr.h" -#include "llerrorcontrol.h" - -#include <math.h> -#include <iomanip> -#include <sstream> -#include <ctime> - -#include "llmediaplugintest.h" - - -#if LL_WINDOWS -#pragma warning(disable: 4263) -#pragma warning(disable: 4264) -#endif - -#if __APPLE__ - #include <GLUT/glut.h> - #include <CoreFoundation/CoreFoundation.h> -#else - #define FREEGLUT_STATIC - #include "GL/freeglut.h" - #define GLUI_FREEGLUT -#endif - -#include "glui.h" - - -LLMediaPluginTest* gApplication = 0; -static void gluiCallbackWrapper( int control_id ); - -//////////////////////////////////////////////////////////////////////////////// -// -static bool isTexture( GLuint texture ) -{ - bool result = false; - - // glIsTexture will sometimes return false for real textures... do this instead. - if(texture != 0) - result = true; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel::mediaPanel() -{ - mMediaTextureHandle = 0; - mPickTextureHandle = 0; - mMediaSource = NULL; - mPickTexturePixels = NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel::~mediaPanel() -{ - // delete OpenGL texture handles - if ( isTexture( mPickTextureHandle ) ) - { - std::cerr << "remMediaPanel: deleting pick texture " << mPickTextureHandle << std::endl; - glDeleteTextures( 1, &mPickTextureHandle ); - mPickTextureHandle = 0; - } - - if ( isTexture( mMediaTextureHandle ) ) - { - std::cerr << "remMediaPanel: deleting media texture " << mMediaTextureHandle << std::endl; - glDeleteTextures( 1, &mMediaTextureHandle ); - mMediaTextureHandle = 0; - } - - if(mPickTexturePixels) - { - delete mPickTexturePixels; - } - - if(mMediaSource) - { - delete mMediaSource; - } - -} - -//////////////////////////////////////////////////////////////////////////////// -// -LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int window_height ) : - mVersionMajor( 2 ), - mVersionMinor( 0 ), - mVersionPatch( 0 ), - mMaxPanels( 25 ), - mViewportAspect( 0 ), - mAppWindow( app_window ), - mCurMouseX( 0 ), - mCurMouseY( 0 ), - mFuzzyMedia( true ), - mSelectedPanel( 0 ), - mDistanceCameraToSelectedGeometry( 0.0f ), - mMediaBrowserControlEnableCookies( 0 ), - mMediaBrowserControlBackButton( 0 ), - mMediaBrowserControlForwardButton( 0 ), - mMediaTimeControlVolume( 100 ), - mMediaTimeControlSeekSeconds( 0 ), - mGluiMediaTimeControlWindowFlag( true ), - mGluiMediaBrowserControlWindowFlag( true ), - mMediaBrowserControlBackButtonFlag( true ), - mMediaBrowserControlForwardButtonFlag( true ), - mHomeWebUrl( "http://www.google.com/" ) -{ - // debugging spam - std::cout << std::endl << " GLUT version: " << "3.7.6" << std::endl; // no way to get real version from GLUT - std::cout << std::endl << " GLUI version: " << GLUI_Master.get_version() << std::endl; - std::cout << std::endl << "Media Plugin Test version: " << mVersionMajor << "." << mVersionMinor << "." << mVersionPatch << std::endl; - - // bookmark title - mBookmarks.push_back( std::pair< std::string, std::string >( "--- Bookmarks ---", "" ) ); - - // insert hardcoded URLs here as required for testing - //mBookmarks.push_back( std::pair< std::string, std::string >( "description", "url" ) ); - - // read bookmarks from file. - // note: uses command in ./CmakeLists.txt which copies bookmmarks file from source directory - // to app directory (WITHOUT build configuration dir) (this is cwd in Windows within MSVC) - // For example, test_apps\llplugintest and not test_apps\llplugintest\Release - // This may need to be changed for Mac/Linux builds. - // See https://jira.lindenlab.com/browse/DEV-31350 for large list of media URLs from AGNI - const std::string bookmarks_filename( "bookmarks.txt" ); - std::ifstream file_handle( bookmarks_filename.c_str() ); - if ( file_handle.is_open() ) - { - std::cout << "Reading bookmarks for test" << std::endl; - while( ! file_handle.eof() ) - { - std::string line; - std::getline( file_handle, line ); - if ( file_handle.eof() ) - break; - - if ( line.substr( 0, 1 ) != "#" ) - { - size_t comma_pos = line.find_first_of( ',' ); - if ( comma_pos != std::string::npos ) - { - std::string description = line.substr( 0, comma_pos ); - std::string url = line.substr( comma_pos + 1 ); - mBookmarks.push_back( std::pair< std::string, std::string >( description, url ) ); - } - else - { - mBookmarks.push_back( std::pair< std::string, std::string >( line, line ) ); - }; - }; - }; - std::cout << "Read " << mBookmarks.size() << " bookmarks" << std::endl; - } - else - { - std::cout << "Unable to read bookmarks from file: " << bookmarks_filename << std::endl; - }; - - // initialize linden lab APR module - ll_init_apr(); - - // Set up llerror logging - { - LLError::initForApplication("."); - LLError::setDefaultLevel(LLError::LEVEL_INFO); - //LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG); - } - - // lots of randomness in this app - srand( ( unsigned int )time( 0 ) ); - - // build GUI - makeChrome(); - - // OpenGL initialilzation - glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); - glClearDepth( 1.0f ); - glEnable( GL_DEPTH_TEST ); - glEnable( GL_COLOR_MATERIAL ); - glColorMaterial( GL_FRONT, GL_AMBIENT_AND_DIFFUSE ); - glDepthFunc( GL_LEQUAL ); - glEnable( GL_TEXTURE_2D ); - glDisable( GL_BLEND ); - glColor3f( 1.0f, 1.0f, 1.0f ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); - - // start with a sane view - resetView(); - - // initial media panel - const int num_initial_panels = 1; - for( int i = 0; i < num_initial_panels; ++i ) - { - //addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - addMediaPanel( mHomeWebUrl ); - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -LLMediaPluginTest::~LLMediaPluginTest() -{ - // delete all media panels - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - remMediaPanel( mMediaPanels[ i ] ); - }; - - // Stop the plugin read thread if it's running. - LLPluginProcessParent::setUseReadThread(false); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::reshape( int width, int height ) -{ - // update viewport (the active window inside the chrome) - int viewport_x, viewport_y; - int viewport_height, viewport_width; - GLUI_Master.get_viewport_area( &viewport_x, &viewport_y, &viewport_width, &viewport_height ); - mViewportAspect = (float)( viewport_width ) / (float)( viewport_height ); - glViewport( viewport_x, viewport_y, viewport_width, viewport_height ); - - // save these as we'll need them later - mWindowWidth = width; - mWindowHeight = height; - - // adjust size of URL bar so it doesn't get clipped - mUrlEdit->set_w( mWindowWidth - 360 ); - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // trigger re-display - glutPostRedisplay(); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::bindTexture(GLuint texture, GLint row_length, GLint alignment) -{ - glEnable( GL_TEXTURE_2D ); - - glBindTexture( GL_TEXTURE_2D, texture ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, row_length ); - glPixelStorei( GL_UNPACK_ALIGNMENT, alignment ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -bool LLMediaPluginTest::checkGLError(const char *name) -{ - bool result = false; - GLenum error = glGetError(); - - if(error != GL_NO_ERROR) - { - // For some reason, glGenTextures is returning GL_INVALID_VALUE... - std::cout << name << " ERROR 0x" << std::hex << error << std::dec << std::endl; - result = true; - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -// -GLfloat LLMediaPluginTest::distanceToCamera( GLfloat point_x, GLfloat point_y, GLfloat point_z ) -{ - GLdouble camera_pos_x = 0.0f; - GLdouble camera_pos_y = 0.0f; - GLdouble camera_pos_z = 0.0f; - - GLdouble modelMatrix[16]; - GLdouble projMatrix[16]; - GLint viewport[4]; - - glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); - glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); - glGetIntegerv(GL_VIEWPORT, viewport); - - gluUnProject( - (viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2, - 0.0, - modelMatrix, projMatrix, viewport, - &camera_pos_x, &camera_pos_y, &camera_pos_z ); - - GLfloat distance = - sqrt( ( camera_pos_x - point_x ) * ( camera_pos_x - point_x ) + - ( camera_pos_y - point_y ) * ( camera_pos_y - point_y ) + - ( camera_pos_z - point_z ) * ( camera_pos_z - point_z ) ); - - return distance; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::drawGeometry( int panel, bool selected ) -{ - // texture coordinates for each panel - GLfloat non_opengl_texture_coords[ 8 ] = { 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f }; - GLfloat opengl_texture_coords[ 8 ] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f }; - - GLfloat *texture_coords = mMediaPanels[ panel ]->mAppTextureCoordsOpenGL?opengl_texture_coords:non_opengl_texture_coords; - - // base coordinates for each panel - GLfloat base_vertex_pos[ 8 ] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f }; - - // calculate posiitons - const int num_panels = (int)mMediaPanels.size(); - const int num_rows = (int)sqrt( (float)num_panels ); - const int num_cols = num_panels / num_rows; - const int panel_x = ( panel / num_rows ); - const int panel_y = ( panel % num_rows ); - - // default spacing is small - make it larger if checkbox set - for testing positional audio - float spacing = 0.1f; - if ( mLargePanelSpacing ) - spacing = 2.0f; - - const GLfloat offset_x = num_cols * ( 1.0 + spacing ) / 2; - const GLfloat offset_y = num_rows * ( 1.0 + spacing ) / 2; - - // Adjust for media aspect ratios - { - float aspect = 1.0f; - - if(mMediaPanels[ panel ]->mMediaHeight != 0) - { - aspect = (float)mMediaPanels[ panel ]->mMediaWidth / (float)mMediaPanels[ panel ]->mMediaHeight; - } - - if(aspect > 1.0f) - { - // media is wider than it is high -- adjust the top and bottom in - for( int corner = 0; corner < 4; ++corner ) - { - float temp = base_vertex_pos[corner * 2 + 1]; - - if(temp < 0.5f) - temp += 0.5 - (0.5f / aspect); - else - temp -= 0.5 - (0.5f / aspect); - - base_vertex_pos[corner * 2 + 1] = temp; - } - } - else if(aspect < 1.0f) - { - // media is higher than it is wide -- adjust the left and right sides in - for( int corner = 0; corner < 4; ++corner ) - { - float temp = base_vertex_pos[corner * 2]; - - if(temp < 0.5f) - temp += 0.5f - (0.5f * aspect); - else - temp -= 0.5f - (0.5f * aspect); - - base_vertex_pos[corner * 2] = temp; - } - } - } - - glBegin( GL_QUADS ); - for( int corner = 0; corner < 4; ++corner ) - { - glTexCoord2f( texture_coords[ corner * 2 ], texture_coords[ corner * 2 + 1 ] ); - GLfloat x = base_vertex_pos[ corner * 2 ] + panel_x * ( 1.0 + spacing ) - offset_x + spacing / 2.0f; - GLfloat y = base_vertex_pos[ corner * 2 + 1 ] + panel_y * ( 1.0 + spacing ) - offset_y + spacing / 2.0f; - - glVertex3f( x, y, 0.0f ); - }; - glEnd(); - - // calculate distance to this panel if it's selected - if ( selected ) - { - GLfloat point_x = base_vertex_pos[ 0 ] + panel_x * ( 1.0 + spacing ) - offset_x + spacing / 2.0f; - GLfloat point_y = base_vertex_pos[ 0 + 1 ] + panel_y * ( 1.0 + spacing ) - offset_y + spacing / 2.0f; - GLfloat point_z = 0.0f; - mDistanceCameraToSelectedGeometry = distanceToCamera( point_x, point_y, point_z ); - }; -} - -////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::startPanelHighlight( float red, float green, float blue, float line_width ) -{ - glPushAttrib( GL_ALL_ATTRIB_BITS ); - glEnable( GL_POLYGON_OFFSET_FILL ); - glPolygonOffset( -2.5f, -2.5f ); - glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); - glLineWidth( line_width ); - glColor3f( red, green, blue ); - glDisable( GL_TEXTURE_2D ); -} - -////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::endPanelHighlight() -{ - glPopAttrib(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::draw( int draw_type ) -{ - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - // drawing pick texture - if ( draw_type == DrawTypePickTexture ) - { - // only bother with pick if we have something to render - // Actually, we need to pick even if we're not ready to render. - // Otherwise you can't select and remove a panel which has gone bad. - //if ( mMediaPanels[ panel ]->mReadyToRender ) - { - glMatrixMode( GL_TEXTURE ); - glPushMatrix(); - - // pick texture is a power of 2 so no need to scale - glLoadIdentity(); - - // bind to media texture - glLoadIdentity(); - bindTexture( mMediaPanels[ panel ]->mPickTextureHandle ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - - // draw geometry using pick texture - drawGeometry( panel, false ); - - glMatrixMode( GL_TEXTURE ); - glPopMatrix(); - }; - } - else - if ( draw_type == DrawTypeMediaTexture ) - { - bool texture_valid = false; - bool plugin_exited = false; - - if(mMediaPanels[ panel ]->mMediaSource) - { - texture_valid = mMediaPanels[ panel ]->mMediaSource->textureValid(); - plugin_exited = mMediaPanels[ panel ]->mMediaSource->isPluginExited(); - } - - // save texture matrix (changes for each panel) - glMatrixMode( GL_TEXTURE ); - glPushMatrix(); - - // only process texture if the media is ready to draw - // (we still want to draw the geometry) - if ( mMediaPanels[ panel ]->mReadyToRender && texture_valid ) - { - // bind to media texture - bindTexture( mMediaPanels[ panel ]->mMediaTextureHandle ); - - if ( mFuzzyMedia ) - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - } - else - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - } - - // scale to fit panel - glScalef( mMediaPanels[ panel ]->mTextureScaleX, - mMediaPanels[ panel ]->mTextureScaleY, - 1.0f ); - }; - - float intensity = plugin_exited?0.25f:1.0f; - - // highlight the selected panel - if ( mSelectedPanel && ( mMediaPanels[ panel ]->mId == mSelectedPanel->mId ) ) - { - startPanelHighlight( intensity, intensity, 0.0f, 5.0f ); - drawGeometry( panel, true ); - endPanelHighlight(); - } - else - // this panel not able to render yet since it - // doesn't have enough information - if ( !mMediaPanels[ panel ]->mReadyToRender ) - { - startPanelHighlight( intensity, 0.0f, 0.0f, 2.0f ); - drawGeometry( panel, false ); - endPanelHighlight(); - } - else - // just display a border around the media - { - startPanelHighlight( 0.0f, intensity, 0.0f, 2.0f ); - drawGeometry( panel, false ); - endPanelHighlight(); - }; - - if ( mMediaPanels[ panel ]->mReadyToRender && texture_valid ) - { - // draw visual geometry - drawGeometry( panel, false ); - } - - // restore texture matrix (changes for each panel) - glMatrixMode( GL_TEXTURE ); - glPopMatrix(); - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::display() -{ - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // start with a clean slate - glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - // set up OpenGL view - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -mViewportAspect * 0.04f, mViewportAspect * 0.04f, -0.04f, 0.04f, 0.1f, 50.0f ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, 0.0f ); - glTranslatef( mViewPos[ 0 ], mViewPos[ 1 ], -mViewPos[ 2 ] ); - glMultMatrixf( mViewRotation ); - - // draw pick texture - draw( DrawTypePickTexture ); - - // read colors and get coordinate values - glReadPixels( mCurMouseX, mCurMouseY, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, mPixelReadColor ); - - // clear the pick render (otherwise it may depth-fight with the textures rendered later) - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - // draw visible geometry - draw( DrawTypeMediaTexture ); - - glutSwapBuffers(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::idle() -{ -// checkGLError("LLMediaPluginTest::idle"); - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // random creation/destruction of panels enabled? - const time_t panel_timeout_time = 5; - if ( mRandomPanelCount ) - { - // time for a change - static time_t last_panel_time = 0; - if ( time( NULL ) - last_panel_time > panel_timeout_time ) - { - if ( rand() % 2 == 0 ) - { - if ( mMediaPanels.size() < 16 ) - { - std::cout << "Randomly adding new panel" << std::endl; - addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - }; - } - else - { - if ( mMediaPanels.size() > 0 ) - { - std::cout << "Deleting selected panel" << std::endl; - remMediaPanel( mSelectedPanel ); - }; - }; - time( &last_panel_time ); - }; - }; - - // random selection of bookmarks enabled? - const time_t bookmark_timeout_time = 5; - if ( mRandomBookmarks ) - { - // time for a change - static time_t last_bookmark_time = 0; - if ( time( NULL ) - last_bookmark_time > bookmark_timeout_time ) - { - // go to a different random bookmark on each panel - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - std::string uri = mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second; - - std::cout << "Random: navigating to : " << uri << std::endl; - - std::string mime_type = mimeTypeFromUrl( uri ); - - if ( mime_type != mMediaPanels[ panel ]->mMimeType ) - { - replaceMediaPanel( mMediaPanels[ panel ], uri ); - } - else - { - mMediaPanels[ panel ]->mMediaSource->loadURI( uri ); - mMediaPanels[ panel ]->mMediaSource->start(); - }; - }; - - time( &last_bookmark_time ); - }; - }; - - // update UI - if ( mSelectedPanel ) - { - // set volume based on slider if we have time media - //if ( mGluiMediaTimeControlWindowFlag ) - //{ - // mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); - //}; - - // NOTE: it is absurd that we need cache the state of GLUI controls - // but enabling/disabling controls drags framerate from 500+ - // down to 15. Not a problem for plugin system - only this test - // enable/disable time based UI controls based on type of plugin - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - { - if ( ! mGluiMediaTimeControlWindowFlag ) - { - mGluiMediaTimeControlWindow->enable(); - mGluiMediaTimeControlWindowFlag = true; - }; - } - else - { - if ( mGluiMediaTimeControlWindowFlag ) - { - mGluiMediaTimeControlWindow->disable(); - mGluiMediaTimeControlWindowFlag = false; - }; - }; - - // enable/disable browser based UI controls based on type of plugin - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() ) - { - if ( ! mGluiMediaBrowserControlWindowFlag ) - { - mGluiMediaBrowserControlWindow->enable(); - mGluiMediaBrowserControlWindowFlag = true; - }; - } - else - { - if ( mGluiMediaBrowserControlWindowFlag ) - { - mGluiMediaBrowserControlWindow->disable(); - mGluiMediaBrowserControlWindowFlag = false; - }; - }; - - // enable/disable browser back button depending on browser history - if ( mSelectedPanel->mMediaSource->getHistoryBackAvailable() ) - { - if ( ! mMediaBrowserControlBackButtonFlag ) - { - mMediaBrowserControlBackButton->enable(); - mMediaBrowserControlBackButtonFlag = true; - }; - } - else - { - if ( mMediaBrowserControlBackButtonFlag ) - { - mMediaBrowserControlBackButton->disable(); - mMediaBrowserControlBackButtonFlag = false; - }; - }; - - // enable/disable browser forward button depending on browser history - if ( mSelectedPanel->mMediaSource->getHistoryForwardAvailable() ) - { - if ( ! mMediaBrowserControlForwardButtonFlag ) - { - mMediaBrowserControlForwardButton->enable(); - mMediaBrowserControlForwardButtonFlag = true; - }; - } - else - { - if ( mMediaBrowserControlForwardButtonFlag ) - { - mMediaBrowserControlForwardButton->disable(); - mMediaBrowserControlForwardButtonFlag = false; - }; - }; - - // NOTE: This is *very* slow and not worth optimising - updateStatusBar(); - }; - - // update all the panels - for( int panel_index = 0; panel_index < (int)mMediaPanels.size(); ++panel_index ) - { - mediaPanel *panel = mMediaPanels[ panel_index ]; - - // call plugins idle function so it can potentially update itself - panel->mMediaSource->idle(); - - // update each media panel - updateMediaPanel( panel ); - - LLRect dirty_rect; - if ( ! panel->mMediaSource->textureValid() ) - { - //std::cout << "texture invalid, skipping update..." << std::endl; - } - else - if ( panel && - ( panel->mMediaWidth != panel->mMediaSource->getWidth() || - panel->mMediaHeight != panel->mMediaSource->getHeight() ) ) - { - //std::cout << "Resize in progress, skipping update..." << std::endl; - } - else - if ( panel->mMediaSource->getDirty( &dirty_rect ) ) - { - const unsigned char* pixels = panel->mMediaSource->getBitsData(); - if ( pixels && isTexture(panel->mMediaTextureHandle)) - { - int x_offset = dirty_rect.mLeft; - int y_offset = dirty_rect.mBottom; - int width = dirty_rect.mRight - dirty_rect.mLeft; - int height = dirty_rect.mTop - dirty_rect.mBottom; - - if((dirty_rect.mRight <= panel->mTextureWidth) && (dirty_rect.mTop <= panel->mTextureHeight)) - { - // Offset the pixels pointer properly - pixels += ( y_offset * panel->mMediaSource->getTextureDepth() * panel->mMediaSource->getBitsWidth() ); - pixels += ( x_offset * panel->mMediaSource->getTextureDepth() ); - - // set up texture - bindTexture( panel->mMediaTextureHandle, panel->mMediaSource->getBitsWidth() ); - if ( mFuzzyMedia ) - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - } - else - { - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - }; - - checkGLError("glTexParameteri"); - - if(panel->mMediaSource->getTextureFormatSwapBytes()) - { - glPixelStorei(GL_UNPACK_SWAP_BYTES, 1); - checkGLError("glPixelStorei"); - } - - // draw portion that changes into texture - glTexSubImage2D( GL_TEXTURE_2D, 0, - x_offset, - y_offset, - width, - height, - panel->mMediaSource->getTextureFormatPrimary(), - panel->mMediaSource->getTextureFormatType(), - pixels ); - - if(checkGLError("glTexSubImage2D")) - { - std::cerr << " panel ID=" << panel->mId << std::endl; - std::cerr << " texture size = " << panel->mTextureWidth << " x " << panel->mTextureHeight << std::endl; - std::cerr << " media size = " << panel->mMediaWidth << " x " << panel->mMediaHeight << std::endl; - std::cerr << " dirty rect = " << dirty_rect.mLeft << ", " << dirty_rect.mBottom << ", " << dirty_rect.mRight << ", " << dirty_rect.mTop << std::endl; - std::cerr << " texture width = " << panel->mMediaSource->getBitsWidth() << std::endl; - std::cerr << " format primary = 0x" << std::hex << panel->mMediaSource->getTextureFormatPrimary() << std::dec << std::endl; - std::cerr << " format type = 0x" << std::hex << panel->mMediaSource->getTextureFormatType() << std::dec << std::endl; - std::cerr << " pixels = " << (void*)pixels << std::endl; - } - - if(panel->mMediaSource->getTextureFormatSwapBytes()) - { - glPixelStorei(GL_UNPACK_SWAP_BYTES, 0); - checkGLError("glPixelStorei"); - } - - panel->mMediaSource->resetDirty(); - - panel->mReadyToRender = true; - } - else - { - std::cerr << "dirty rect is outside current media size, skipping update" << std::endl; - } - }; - }; - }; - - // GLUI requires this - if ( glutGetWindow() != mAppWindow ) - glutSetWindow( mAppWindow ); - - // trigger re-display - glutPostRedisplay(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::windowPosToTexturePos( int window_x, int window_y, - int& media_x, int& media_y, - int& id ) -{ - if ( ! mSelectedPanel ) - { - media_x = 0; - media_y = 0; - id = 0; - return; - }; - - // record cursor poisiton for a readback next frame - mCurMouseX = window_x; - // OpenGL app == coordinate system this way - // NOTE: unrelated to settings in plugin - this - // is just for this app - mCurMouseY = mWindowHeight - window_y; - - // extract x (0..1023, y (0..1023) and id (0..15) from RGB components - unsigned long pixel_read_color_bits = ( mPixelReadColor[ 0 ] << 16 ) | ( mPixelReadColor[ 1 ] << 8 ) | mPixelReadColor[ 2 ]; - int texture_x = pixel_read_color_bits & 0x3ff; - int texture_y = ( pixel_read_color_bits >> 10 ) & 0x3ff; - id = ( pixel_read_color_bits >> 20 ) & 0x0f; - - // scale to size of media (1024 because we use 10 bits for X and Y from 24) - media_x = (int)( ( (float)mSelectedPanel->mMediaWidth * (float)texture_x ) / 1024.0f ); - media_y = (int)( ( (float)mSelectedPanel->mMediaHeight * (float)texture_y ) / 1024.0f ); - - // we assume the plugin uses an inverted coordinate scheme like OpenGL - // if not, the plugin code inverts the Y coordinate for us - we don't need to - media_y = mSelectedPanel->mMediaHeight - media_y; - - if ( media_x > 0 && media_y > 0 ) - { - //std::cout << " mouse coords: " << mCurMouseX << " x " << mCurMouseY << " and id = " << id << std::endl; - //std::cout << "raw texture coords: " << texture_x << " x " << texture_y << " and id = " << id << std::endl; - //std::cout << " media coords: " << media_x << " x " << media_y << " and id = " << id << std::endl; - //std::cout << std::endl; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::selectPanelById( int id ) -{ - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - if ( mMediaPanels[ panel ]->mId == id ) - { - selectPanel(mMediaPanels[ panel ]); - return; - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::selectPanel( mediaPanel* panel ) -{ - if( mSelectedPanel == panel ) - return; - - // turn off volume before we delete it - if( mSelectedPanel && mSelectedPanel->mMediaSource ) - { - mSelectedPanel->mMediaSource->setVolume( 0.0f ); - mSelectedPanel->mMediaSource->setPriority( LLPluginClassMedia::PRIORITY_LOW ); - }; - - mSelectedPanel = panel; - - if( mSelectedPanel && mSelectedPanel->mMediaSource ) - { - mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); - mSelectedPanel->mMediaSource->setPriority( LLPluginClassMedia::PRIORITY_NORMAL ); - - if(!mSelectedPanel->mStartUrl.empty()) - { - mUrlEdit->set_text(const_cast<char*>(mSelectedPanel->mStartUrl.c_str()) ); - } - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLMediaPluginTest::findMediaPanel( LLPluginClassMedia* source ) -{ - mediaPanel *result = NULL; - - for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) - { - if ( mMediaPanels[ panel ]->mMediaSource == source ) - { - result = mMediaPanels[ panel ]; - } - } - - 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 ) -{ - if ( uri.length() ) - { - std::string mime_type = mimeTypeFromUrl( uri ); - - if ( !mSelectedPanel->mMediaSource->isPluginExited() && (mime_type == mSelectedPanel->mMimeType) ) - { - std::cout << "MIME type is the same" << std::endl; - mSelectedPanel->mMediaSource->loadURI( uri ); - mSelectedPanel->mMediaSource->start(); - mBookmarkList->do_selection( 0 ); - } - else - { - std::cout << "MIME type changed or plugin had exited" << std::endl; - replaceMediaPanel( mSelectedPanel, uri ); - mBookmarkList->do_selection( 0 ); - } - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::initUrlHistory( std::string uris ) -{ - if ( uris.length() > 0 ) - { - std::cout << "init URL : " << uris << std::endl; - LLSD historySD; - - char *cstr, *p; - cstr = new char[uris.size()+1]; - strcpy(cstr, uris.c_str()); - const char *DELIMS = " ,;"; - p = strtok(cstr, DELIMS); - while (p != NULL) { - historySD.insert(0, p); - p = strtok(NULL, DELIMS); - } - mSelectedPanel->mMediaSource->initializeUrlHistory(historySD); - delete[] cstr; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::gluiCallback( int control_id ) -{ - if ( control_id == mIdBookmarks ) - { - std::string uri = mBookmarks[ mSelBookmark ].second; - - navigateToNewURI( uri ); - } - else - if ( control_id == mIdUrlEdit) - { - std::string uri = mUrlEdit->get_text(); - - navigateToNewURI( uri ); - } - else - if ( control_id == mIdUrlInitHistoryEdit ) - { - std::string uri = mUrlInitHistoryEdit->get_text(); - - initUrlHistory( uri ); - } - else - if ( control_id == mIdControlAddPanel ) - { - addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - } - else - if ( control_id == mIdControlRemPanel ) - { - remMediaPanel( mSelectedPanel ); - } - else - if ( control_id == mIdDisableTimeout ) - { - // Set the "disable timeout" flag for all active plugins. - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - mMediaPanels[ i ]->mMediaSource->setDisableTimeout(mDisableTimeout); - } - } - else - if ( control_id == mIdUsePluginReadThread ) - { - LLPluginProcessParent::setUseReadThread(mUsePluginReadThread); - } - else - if ( control_id == mIdControlCrashPlugin ) - { - // send message to plugin and ask it to crash - // (switch out for ReleaseCandidate version :) ) - if(mSelectedPanel && mSelectedPanel->mMediaSource) - { - mSelectedPanel->mMediaSource->crashPlugin(); - } - } - else - if ( control_id == mIdControlHangPlugin ) - { - // send message to plugin and ask it to hang - // (switch out for ReleaseCandidate version :) ) - if(mSelectedPanel && mSelectedPanel->mMediaSource) - { - mSelectedPanel->mMediaSource->hangPlugin(); - } - } - else - if ( control_id == mIdControlExitApp ) - { - // text for exiting plugin system cleanly - delete this; // clean up - exit( 0 ); - } - else - if ( control_id == mIdMediaTimeControlPlay ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlLoop ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( true ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlPause ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->pause(); - } - else - if ( control_id == mIdMediaTimeControlStop ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->stop(); - }; - } - else - if ( control_id == mIdMediaTimeControlSeek ) - { - if ( mSelectedPanel ) - { - // get value from spinner - float seconds_to_seek = mMediaTimeControlSeekSeconds; - mSelectedPanel->mMediaSource->seek( seconds_to_seek ); - mSelectedPanel->mMediaSource->start(); - }; - } - else - if ( control_id == mIdMediaTimeControlRewind ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(-2.0f); - }; - } - else - if ( control_id == mIdMediaTimeControlFastForward ) - { - if ( mSelectedPanel ) - { - mSelectedPanel->mMediaSource->setLoop( false ); - mSelectedPanel->mMediaSource->start(2.0f); - }; - } - else - if ( control_id == mIdMediaBrowserControlBack ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_back(); - } - else - if ( control_id == mIdMediaBrowserControlStop ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_stop(); - } - else - if ( control_id == mIdMediaBrowserControlForward ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_forward(); - } - else - if ( control_id == mIdMediaBrowserControlHome ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->loadURI( mHomeWebUrl ); - } - else - if ( control_id == mIdMediaBrowserControlReload ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->browse_reload( true ); - } - else - if ( control_id == mIdMediaBrowserControlClearCache ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->clear_cache(); - } - else - if ( control_id == mIdMediaBrowserControlClearCookies ) - { - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->clear_cookies(); - } - else - if ( control_id == mIdMediaBrowserControlEnableCookies ) - { - if ( mSelectedPanel ) - { - if ( mMediaBrowserControlEnableCookies ) - { - mSelectedPanel->mMediaSource->enable_cookies( true ); - } - else - { - mSelectedPanel->mMediaSource->enable_cookies( false ); - } - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::keyboard( int key ) -{ - //if ( key == 'a' || key == 'A' ) - // addMediaPanel( mBookmarks[ rand() % ( mBookmarks.size() - 1 ) + 1 ].second ); - //else - //if ( key == 'r' || key == 'R' ) - // remMediaPanel( mSelectedPanel ); - //else - //if ( key == 'd' || key == 'D' ) - // dumpPanelInfo(); - //else - if ( key == 27 ) - { - std::cout << "Application finished - exiting..." << std::endl; - delete this; - exit( 0 ); - }; - - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 , LLSD()); - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0, LLSD()); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::mouseButton( int button, int state, int x, int y ) -{ - if ( button == GLUT_LEFT_BUTTON ) - { - if ( state == GLUT_DOWN ) - { - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_DOWN, 0, media_x, media_y, 0 ); - } - else - if ( state == GLUT_UP ) - { - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - // only select a panel if we're on a panel - // (HACK: strictly speaking this rules out clicking on - // the origin of a panel but that's very unlikely) - if ( media_x > 0 && media_y > 0 ) - { - selectPanelById( id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_UP, 0, media_x, media_y, 0 ); - }; - }; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::mousePassive( int x, int y ) -{ - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_MOVE, 0, media_x, media_y, 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::mouseMove( int x, int y ) -{ - int media_x, media_y, id; - windowPosToTexturePos( x, y, media_x, media_y, id ); - - if ( mSelectedPanel ) - mSelectedPanel->mMediaSource->mouseEvent( LLPluginClassMedia::MOUSE_EVENT_MOVE, 0, media_x, media_y, 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::makeChrome() -{ - // IDs used by GLUI - int start_id = 0x1000; - - // right side window - geometry manipulators -#if __APPLE__ - // the Apple GLUT implementation doesn't seem to set the graphic offset of subwindows correctly when they overlap in certain ways. - // Use a separate controls window in this case. - // GLUI window at right containing manipulation controls and other buttons - int x = glutGet(GLUT_WINDOW_X) + glutGet(GLUT_WINDOW_WIDTH) + 4; - int y = glutGet(GLUT_WINDOW_Y); - GLUI* right_glui_window = GLUI_Master.create_glui( "", 0, x, y ); -#else - GLUI* right_glui_window = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_RIGHT ); -#endif - mViewRotationCtrl = right_glui_window->add_rotation( "Rotation", mViewRotation ); - mViewTranslationCtrl = right_glui_window->add_translation( "Translate", GLUI_TRANSLATION_XY, mViewPos ); - mViewTranslationCtrl->set_speed( 0.01f ); - mViewScaleCtrl = right_glui_window->add_translation( "Scale", GLUI_TRANSLATION_Z, &mViewPos[ 2 ] ); - mViewScaleCtrl->set_speed( 0.05f ); - right_glui_window->set_main_gfx_window( mAppWindow ); - - // right side window - app controls - mIdControlAddPanel = start_id++; - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - right_glui_window->add_button( "Add panel", mIdControlAddPanel, gluiCallbackWrapper ); - right_glui_window->add_statictext( "" ); - mIdControlRemPanel = start_id++; - right_glui_window->add_button( "Rem panel", mIdControlRemPanel, gluiCallbackWrapper ); - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - mIdControlCrashPlugin = start_id++; - right_glui_window->add_button( "Crash plugin", mIdControlCrashPlugin, gluiCallbackWrapper ); - mIdControlHangPlugin = start_id++; - right_glui_window->add_button( "Hang plugin", mIdControlHangPlugin, gluiCallbackWrapper ); - - right_glui_window->add_statictext( "" ); - right_glui_window->add_separator(); - right_glui_window->add_statictext( "" ); - mIdControlExitApp = start_id++; - right_glui_window->add_button( "Exit app", mIdControlExitApp, gluiCallbackWrapper ); - - //// top window - holds bookmark UI - mIdBookmarks = start_id++; - mSelBookmark = 0; - GLUI* glui_window_top = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mBookmarkList = glui_window_top->add_listbox( "", &mSelBookmark, mIdBookmarks, gluiCallbackWrapper ); - // only add the first 50 bookmarks - list can be very long sometimes (30,000+) - // when testing list of media URLs from AGNI for example - for( unsigned int each = 0; each < mBookmarks.size() && each < 50; ++each ) - mBookmarkList->add_item( each, const_cast< char* >( mBookmarks[ each ].first.c_str() ) ); - glui_window_top->set_main_gfx_window( mAppWindow ); - - glui_window_top->add_column( false ); - mIdUrlEdit = start_id++; - mUrlEdit = glui_window_top->add_edittext( "Url:", GLUI_EDITTEXT_TEXT, 0, mIdUrlEdit, gluiCallbackWrapper ); - mUrlEdit->set_w( 600 ); - GLUI* glui_window_top2 = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mIdUrlInitHistoryEdit = start_id++; - mUrlInitHistoryEdit = glui_window_top2->add_edittext( "Init History (separate by commas or semicolons):", - GLUI_EDITTEXT_TEXT, 0, mIdUrlInitHistoryEdit, gluiCallbackWrapper ); - mUrlInitHistoryEdit->set_w( 800 ); - - // top window - media controls for "time" media types (e.g. movies) - mGluiMediaTimeControlWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mGluiMediaTimeControlWindow->set_main_gfx_window( mAppWindow ); - mIdMediaTimeControlPlay = start_id++; - mGluiMediaTimeControlWindow->add_button( "PLAY", mIdMediaTimeControlPlay, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlLoop = start_id++; - mGluiMediaTimeControlWindow->add_button( "LOOP", mIdMediaTimeControlLoop, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlPause = start_id++; - mGluiMediaTimeControlWindow->add_button( "PAUSE", mIdMediaTimeControlPause, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - - GLUI_Button *button; - mIdMediaTimeControlRewind = start_id++; - button = mGluiMediaTimeControlWindow->add_button( "<<", mIdMediaTimeControlRewind, gluiCallbackWrapper ); - button->set_w(30); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlFastForward = start_id++; - button = mGluiMediaTimeControlWindow->add_button( ">>", mIdMediaTimeControlFastForward, gluiCallbackWrapper ); - button->set_w(30); - - mGluiMediaTimeControlWindow->add_column( true ); - - mIdMediaTimeControlStop = start_id++; - mGluiMediaTimeControlWindow->add_button( "STOP", mIdMediaTimeControlStop, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlVolume = start_id++; - GLUI_Spinner* spinner = mGluiMediaTimeControlWindow->add_spinner( "Volume", 2, &mMediaTimeControlVolume, mIdMediaTimeControlVolume, gluiCallbackWrapper); - spinner->set_float_limits( 0, 100 ); - mGluiMediaTimeControlWindow->add_column( true ); - mIdMediaTimeControlSeekSeconds = start_id++; - spinner = mGluiMediaTimeControlWindow->add_spinner( "", 2, &mMediaTimeControlSeekSeconds, mIdMediaTimeControlSeekSeconds, gluiCallbackWrapper); - spinner->set_float_limits( 0, 200 ); - spinner->set_w( 32 ); - spinner->set_speed( 0.025f ); - mGluiMediaTimeControlWindow->add_column( false ); - mIdMediaTimeControlSeek = start_id++; - mGluiMediaTimeControlWindow->add_button( "SEEK", mIdMediaTimeControlSeek, gluiCallbackWrapper ); - mGluiMediaTimeControlWindow->add_column( false ); - - - // top window - media controls for "browser" media types (e.g. web browser) - mGluiMediaBrowserControlWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mGluiMediaBrowserControlWindow->set_main_gfx_window( mAppWindow ); - mIdMediaBrowserControlBack = start_id++; - mMediaBrowserControlBackButton = mGluiMediaBrowserControlWindow->add_button( "BACK", mIdMediaBrowserControlBack, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlStop = start_id++; - mGluiMediaBrowserControlWindow->add_button( "STOP", mIdMediaBrowserControlStop, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlForward = start_id++; - mMediaBrowserControlForwardButton = mGluiMediaBrowserControlWindow->add_button( "FORWARD", mIdMediaBrowserControlForward, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlHome = start_id++; - mGluiMediaBrowserControlWindow->add_button( "HOME", mIdMediaBrowserControlHome, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlReload = start_id++; - mGluiMediaBrowserControlWindow->add_button( "RELOAD", mIdMediaBrowserControlReload, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlClearCache = start_id++; - mGluiMediaBrowserControlWindow->add_button( "CLEAR CACHE", mIdMediaBrowserControlClearCache, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlClearCookies = start_id++; - mGluiMediaBrowserControlWindow->add_button( "CLEAR COOKIES", mIdMediaBrowserControlClearCookies, gluiCallbackWrapper ); - mGluiMediaBrowserControlWindow->add_column( false ); - mIdMediaBrowserControlEnableCookies = start_id++; - mMediaBrowserControlEnableCookies = 0; - mGluiMediaBrowserControlWindow->add_checkbox( "Enable Cookies", &mMediaBrowserControlEnableCookies, mIdMediaBrowserControlEnableCookies, gluiCallbackWrapper ); - - // top window - misc controls - GLUI* glui_window_misc_control = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_TOP ); - mIdRandomPanelCount = start_id++; - mRandomPanelCount = 0; - glui_window_misc_control->add_checkbox( "Randomize panel count", &mRandomPanelCount, mIdRandomPanelCount, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - mIdRandomBookmarks = start_id++; - mRandomBookmarks = 0; - glui_window_misc_control->add_checkbox( "Randomize bookmarks", &mRandomBookmarks, mIdRandomBookmarks, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdDisableTimeout = start_id++; - mDisableTimeout = 0; - glui_window_misc_control->add_checkbox( "Disable plugin timeout", &mDisableTimeout, mIdDisableTimeout, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdUsePluginReadThread = start_id++; - mUsePluginReadThread = 0; - glui_window_misc_control->add_checkbox( "Use plugin read thread", &mUsePluginReadThread, mIdUsePluginReadThread, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - mIdLargePanelSpacing = start_id++; - mLargePanelSpacing = 0; - glui_window_misc_control->add_checkbox( "Large Panel Spacing", &mLargePanelSpacing, mIdLargePanelSpacing, gluiCallbackWrapper ); - glui_window_misc_control->set_main_gfx_window( mAppWindow ); - glui_window_misc_control->add_column( true ); - - // bottom window - status - mBottomGLUIWindow = GLUI_Master.create_glui_subwindow( mAppWindow, GLUI_SUBWINDOW_BOTTOM ); - mStatusText = mBottomGLUIWindow->add_statictext( "" ); - mBottomGLUIWindow->set_main_gfx_window( mAppWindow ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::resetView() -{ - mViewRotationCtrl->reset(); - - mViewScaleCtrl->set_x( 0.0f ); - mViewScaleCtrl->set_y( 0.0f ); - mViewScaleCtrl->set_z( 3.0f ); - - mViewTranslationCtrl->set_x( 0.0f ); - mViewTranslationCtrl->set_y( 0.0f ); - mViewTranslationCtrl->set_z( 0.0f ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::makePickTexture( int id, GLuint* texture_handle, unsigned char** texture_pixels ) -{ - int pick_texture_width = 1024; - int pick_texture_height = 1024; - int pick_texture_depth = 3; - unsigned char* ptr = new unsigned char[ pick_texture_width * pick_texture_height * pick_texture_depth ]; - for( int y = 0; y < pick_texture_height; ++y ) - { - for( int x = 0; x < pick_texture_width * pick_texture_depth ; x += pick_texture_depth ) - { - unsigned long bits = 0L; - bits |= ( id << 20 ) | ( y << 10 ) | ( x / 3 ); - unsigned char r_component = ( bits >> 16 ) & 0xff; - unsigned char g_component = ( bits >> 8 ) & 0xff; - unsigned char b_component = bits & 0xff; - - ptr[ y * pick_texture_width * pick_texture_depth + x + 0 ] = r_component; - ptr[ y * pick_texture_width * pick_texture_depth + x + 1 ] = g_component; - ptr[ y * pick_texture_width * pick_texture_depth + x + 2 ] = b_component; - }; - }; - - glGenTextures( 1, texture_handle ); - - checkGLError("glGenTextures"); - std::cout << "glGenTextures returned " << *texture_handle << std::endl; - - bindTexture( *texture_handle ); - glTexImage2D( GL_TEXTURE_2D, 0, - GL_RGB, - pick_texture_width, pick_texture_height, - 0, GL_RGB, GL_UNSIGNED_BYTE, ptr ); - - *texture_pixels = ptr; -} - -//////////////////////////////////////////////////////////////////////////////// -// -std::string LLMediaPluginTest::mimeTypeFromUrl( std::string& url ) -{ - // default to web - std::string mime_type = "text/html"; - - // we may need a more advanced MIME type accessor later :-) - if ( url.find( ".mov" ) != std::string::npos ) // Movies - mime_type = "video/quicktime"; - else - if ( url.find( ".txt" ) != std::string::npos ) // Apple Text descriptors - mime_type = "video/quicktime"; - else - if ( url.find( ".mp3" ) != std::string::npos ) // Apple Text descriptors - mime_type = "video/quicktime"; - else - if ( url.find( "example://" ) != std::string::npos ) // Example plugin - mime_type = "example/example"; - - return mime_type; -} - -//////////////////////////////////////////////////////////////////////////////// -// -std::string LLMediaPluginTest::pluginNameFromMimeType( std::string& mime_type ) -{ -#if LL_DARWIN - std::string plugin_name( "media_plugin_null.dylib" ); - if ( mime_type == "video/quicktime" ) - plugin_name = "media_plugin_quicktime.dylib"; - else - if ( mime_type == "text/html" ) - plugin_name = "media_plugin_webkit.dylib"; - -#elif LL_WINDOWS - std::string plugin_name( "media_plugin_null.dll" ); - - if ( mime_type == "video/quicktime" ) - plugin_name = "media_plugin_quicktime.dll"; - else - if ( mime_type == "text/html" ) - plugin_name = "media_plugin_webkit.dll"; - else - if ( mime_type == "example/example" ) - plugin_name = "media_plugin_example.dll"; - -#elif LL_LINUX - std::string plugin_name( "libmedia_plugin_null.so" ); - - if ( mime_type == "video/quicktime" ) - plugin_name = "libmedia_plugin_quicktime.so"; - else - if ( mime_type == "text/html" ) - plugin_name = "libmedia_plugin_webkit.so"; -#endif - return plugin_name; -} - -//////////////////////////////////////////////////////////////////////////////// -// -mediaPanel* LLMediaPluginTest::addMediaPanel( std::string url ) -{ - // Get the plugin filename using the URL - std::string mime_type = mimeTypeFromUrl( url ); - std::string plugin_name = pluginNameFromMimeType( mime_type ); - - // create a random size for the new media - int media_width; - int media_height; - getRandomMediaSize( media_width, media_height, mime_type ); - - // make a new plugin - LLPluginClassMedia* media_source = new LLPluginClassMedia(this); - - // tell the plugin what size we asked for - media_source->setSize( media_width, media_height ); - - // Use the launcher start and initialize the plugin -#if LL_DARWIN || LL_LINUX - std::string launcher_name( "SLPlugin" ); -#elif LL_WINDOWS - std::string launcher_name( "SLPlugin.exe" ); -#endif - - // for this test app, use the cwd as the user data path (ugh). -#if LL_WINDOWS - std::string user_data_path = ".\\"; -#else - char cwd[ FILENAME_MAX ]; - if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) - { - std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return NULL; - } - std::string user_data_path = std::string( cwd ) + "/"; -#endif - media_source->setUserDataPath(user_data_path); - media_source->init( launcher_name, user_data_path, plugin_name, false ); - media_source->setDisableTimeout(mDisableTimeout); - - // make a new panel and save parameters - mediaPanel* panel = new mediaPanel; - panel->mMediaSource = media_source; - panel->mStartUrl = url; - panel->mMimeType = mime_type; - panel->mMediaWidth = media_width; - panel->mMediaHeight = media_height; - panel->mTextureWidth = 0; - panel->mTextureHeight = 0; - panel->mTextureScaleX = 0; - panel->mTextureScaleY = 0; - panel->mMediaTextureHandle = 0; - panel->mPickTextureHandle = 0; - panel->mAppTextureCoordsOpenGL = false; // really need an 'undefined' state here too - panel->mReadyToRender = false; - - // look through current media panels to find an unused index number - bool id_exists = true; - for( int nid = 0; nid < mMaxPanels; ++nid ) - { - // does this id exist already? - id_exists = false; - for( int pid = 0; pid < (int)mMediaPanels.size(); ++pid ) - { - if ( nid == mMediaPanels[ pid ]->mId ) - { - id_exists = true; - break; - }; - }; - - // id wasn't found so we can use it - if ( ! id_exists ) - { - panel->mId = nid; - break; - }; - }; - - // if we get here and this flag is set, there is no room for any more panels - if ( id_exists ) - { - std::cout << "No room for any more panels" << std::endl; - } - else - { - // now we have the ID we can use it to make the - // pick texture (id is baked into texture pixels) - makePickTexture( panel->mId, &panel->mPickTextureHandle, &panel->mPickTexturePixels ); - - // save this in the list of panels - mMediaPanels.push_back( panel ); - - // select the panel that was just created - selectPanel( panel ); - - // load and start the URL - panel->mMediaSource->loadURI( url ); - panel->mMediaSource->start(); - - 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; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::updateMediaPanel( mediaPanel* panel ) -{ -// checkGLError("LLMediaPluginTest::updateMediaPanel"); - - if ( ! panel ) - return; - - if(!panel->mMediaSource || !panel->mMediaSource->textureValid()) - { - panel->mReadyToRender = false; - return; - } - - // take a reference copy of the plugin values since they - // might change during this lifetime of this function - int plugin_media_width = panel->mMediaSource->getWidth(); - int plugin_media_height = panel->mMediaSource->getHeight(); - int plugin_texture_width = panel->mMediaSource->getBitsWidth(); - int plugin_texture_height = panel->mMediaSource->getBitsHeight(); - - // If the texture isn't created or the media or texture dimensions changed AND - // the sizes are valid then we need to delete the old media texture (if necessary) - // then make a new one. - if ((panel->mMediaTextureHandle == 0 || - panel->mMediaWidth != plugin_media_width || - panel->mMediaHeight != plugin_media_height || - panel->mTextureWidth != plugin_texture_width || - panel->mTextureHeight != plugin_texture_height) && - ( plugin_media_width > 0 && plugin_media_height > 0 && - plugin_texture_width > 0 && plugin_texture_height > 0 ) ) - { - std::cout << "Valid media size (" << plugin_media_width << " x " << plugin_media_height - << ") and texture size (" << plugin_texture_width << " x " << plugin_texture_height - << ") for panel with ID=" << panel->mId << " - making texture" << std::endl; - - // delete old GL texture - if ( isTexture( panel->mMediaTextureHandle ) ) - { - std::cerr << "updateMediaPanel: deleting texture " << panel->mMediaTextureHandle << std::endl; - glDeleteTextures( 1, &panel->mMediaTextureHandle ); - panel->mMediaTextureHandle = 0; - } - - std::cerr << "before: pick texture is " << panel->mPickTextureHandle << ", media texture is " << panel->mMediaTextureHandle << std::endl; - - // make a GL texture based on the dimensions the plugin told us - GLuint new_texture = 0; - glGenTextures( 1, &new_texture ); - - checkGLError("glGenTextures"); - - std::cout << "glGenTextures returned " << new_texture << std::endl; - - panel->mMediaTextureHandle = new_texture; - - bindTexture( panel->mMediaTextureHandle ); - - std::cout << "Setting texture size to " << plugin_texture_width << " x " << plugin_texture_height << std::endl; - glTexImage2D( GL_TEXTURE_2D, 0, - GL_RGB, - plugin_texture_width, plugin_texture_height, - 0, GL_RGB, GL_UNSIGNED_BYTE, - 0 ); - - - std::cerr << "after: pick texture is " << panel->mPickTextureHandle << ", media texture is " << panel->mMediaTextureHandle << std::endl; - }; - - // update our record of the media and texture dimensions - // NOTE: do this after we we check for sizes changes - panel->mMediaWidth = plugin_media_width; - panel->mMediaHeight = plugin_media_height; - panel->mTextureWidth = plugin_texture_width; - panel->mTextureHeight = plugin_texture_height; - if ( plugin_texture_width > 0 ) - { - panel->mTextureScaleX = (double)panel->mMediaWidth / (double)panel->mTextureWidth; - }; - if ( plugin_texture_height > 0 ) - { - panel->mTextureScaleY = (double)panel->mMediaHeight / (double)panel->mTextureHeight; - }; - - // update the flag which tells us if the media source uses OprnGL coords or not. - panel->mAppTextureCoordsOpenGL = panel->mMediaSource->getTextureCoordsOpenGL(); - - // Check to see if we have enough to render this panel. - // If we do, set a flag that the display functions use so - // they only render a panel with media if it's ready. - if ( panel->mMediaWidth < 0 || - panel->mMediaHeight < 0 || - panel->mTextureWidth < 1 || - panel->mTextureHeight < 1 || - panel->mMediaTextureHandle == 0 ) - { - panel->mReadyToRender = false; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -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 NULL; - - // sanity check - if ( ! panel ) - return NULL; - - int index; - for(index = 0; index < (int)mMediaPanels.size(); index++) - { - if(mMediaPanels[index] == panel) - break; - } - - if(index >= (int)mMediaPanels.size()) - { - // panel isn't in mMediaPanels - return NULL; - } - - std::cout << "Replacing media panel with index " << panel->mId << std::endl; - - int panel_id = panel->mId; - - if(mSelectedPanel == panel) - mSelectedPanel = NULL; - - delete panel; - - // Get the plugin filename using the URL - std::string mime_type = mimeTypeFromUrl( url ); - std::string plugin_name = pluginNameFromMimeType( mime_type ); - - // create a random size for the new media - int media_width; - int media_height; - getRandomMediaSize( media_width, media_height, mime_type ); - - // make a new plugin - LLPluginClassMedia* media_source = new LLPluginClassMedia(this); - - // tell the plugin what size we asked for - media_source->setSize( media_width, media_height ); - - // Use the launcher start and initialize the plugin -#if LL_DARWIN || LL_LINUX - std::string launcher_name( "SLPlugin" ); -#elif LL_WINDOWS - std::string launcher_name( "SLPlugin.exe" ); -#endif - - // for this test app, use the cwd as the user data path (ugh). -#if LL_WINDOWS - std::string user_data_path = ".\\"; -#else - char cwd[ FILENAME_MAX ]; - if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) - { - std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return NULL; - } - std::string user_data_path = std::string( cwd ) + "/"; -#endif - - media_source->setUserDataPath(user_data_path); - media_source->init( launcher_name, user_data_path, plugin_name, false ); - media_source->setDisableTimeout(mDisableTimeout); - - // make a new panel and save parameters - panel = new mediaPanel; - panel->mMediaSource = media_source; - panel->mStartUrl = url; - panel->mMimeType = mime_type; - panel->mMediaWidth = media_width; - panel->mMediaHeight = media_height; - panel->mTextureWidth = 0; - panel->mTextureHeight = 0; - panel->mTextureScaleX = 0; - panel->mTextureScaleY = 0; - panel->mMediaTextureHandle = 0; - panel->mPickTextureHandle = 0; - panel->mAppTextureCoordsOpenGL = false; // really need an 'undefined' state here too - panel->mReadyToRender = false; - - panel->mId = panel_id; - - // Replace the entry in the panels array - mMediaPanels[index] = panel; - - // now we have the ID we can use it to make the - // pick texture (id is baked into texture pixels) - makePickTexture( panel->mId, &panel->mPickTextureHandle, &panel->mPickTexturePixels ); - - // select the panel that was just created - selectPanel( panel ); - - // load and start the URL - panel->mMediaSource->loadURI( url ); - panel->mMediaSource->start(); - - return panel; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::getRandomMediaSize( int& width, int& height, std::string mime_type ) -{ - // Make a new media source with a random size which we'll either - // directly or the media plugin will tell us what it wants later. - // Use a random size so we can test support for weird media sizes. - // (Almost everything else will get filled in later once the - // plugin responds) - // NB. Do we need to enforce that width is on 4 pixel boundary? - width = ( ( rand() % 170 ) + 30 ) * 4; - height = ( ( rand() % 170 ) + 30 ) * 4; - - // adjust this random size if it's a browser so we get - // a more useful size for testing.. - if ( mime_type == "text/html" || mime_type == "example/example" ) - { - width = ( ( rand() % 100 ) + 100 ) * 4; - height = ( width * ( ( rand() % 400 ) + 1000 ) ) / 1000; - }; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::remMediaPanel( mediaPanel* panel ) -{ - // always leave one panel - if ( mMediaPanels.size() == 1 ) - return; - - // sanity check - don't think this can happen but see above for a case where it might... - if ( ! panel ) - return; - - std::cout << "Removing media panel with index " << panel->mId << " - total panels = " << mMediaPanels.size() - 1 << std::endl; - - if(mSelectedPanel == panel) - mSelectedPanel = NULL; - - delete panel; - - // remove from storage list - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - if ( mMediaPanels[ i ] == panel ) - { - mMediaPanels.erase( mMediaPanels.begin() + i ); - break; - }; - }; - - // select the first panel - selectPanel( mMediaPanels[ 0 ] ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::updateStatusBar() -{ - if ( ! mSelectedPanel ) - return; - - // cache results - this is a very slow function - static int cached_id = -1; - static int cached_media_width = -1; - static int cached_media_height = -1; - static int cached_texture_width = -1; - static int cached_texture_height = -1; - static bool cached_supports_browser_media = true; - static bool cached_supports_time_media = false; - static int cached_movie_time = -1; - static GLfloat cached_distance = -1.0f; - - static std::string cached_plugin_version = ""; - if ( - cached_id == mSelectedPanel->mId && - cached_media_width == mSelectedPanel->mMediaWidth && - cached_media_height == mSelectedPanel->mMediaHeight && - cached_texture_width == mSelectedPanel->mTextureWidth && - cached_texture_height == mSelectedPanel->mTextureHeight && - cached_supports_browser_media == mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() && - cached_supports_time_media == mSelectedPanel->mMediaSource->pluginSupportsMediaTime() && - cached_plugin_version == mSelectedPanel->mMediaSource->getPluginVersion() && - cached_movie_time == (int)mSelectedPanel->mMediaSource->getCurrentTime() && - cached_distance == mDistanceCameraToSelectedGeometry - ) - { - // nothing changed so don't spend time here - return; - }; - - std::ostringstream stream( "" ); - - stream.str( "" ); - stream.clear(); - - stream << "Id: "; - stream << std::setw( 2 ) << std::setfill( '0' ); - stream << mSelectedPanel->mId; - stream << " | "; - stream << "Media: "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << mSelectedPanel->mMediaWidth; - stream << " x "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << mSelectedPanel->mMediaHeight; - stream << " | "; - stream << "Texture: "; - stream << std::setw( 4 ) << std::setfill( '0' ); - stream << mSelectedPanel->mTextureWidth; - stream << " x "; - stream << std::setw( 4 ) << std::setfill( '0' ); - stream << mSelectedPanel->mTextureHeight; - - stream << " | "; - stream << "Distance: "; - stream << std::setw( 6 ); - stream << std::setprecision( 3 ); - stream << std::setprecision( 3 ); - stream << mDistanceCameraToSelectedGeometry; - stream << " | "; - - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser() ) - stream << "BROWSER"; - else - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - stream << "TIME "; - stream << " | "; - stream << mSelectedPanel->mMediaSource->getPluginVersion(); - stream << " | "; - if ( mSelectedPanel->mMediaSource->pluginSupportsMediaTime() ) - { - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << (int)mSelectedPanel->mMediaSource->getCurrentTime(); - stream << " / "; - stream << std::setw( 3 ) << std::setfill( '0' ); - stream << (int)mSelectedPanel->mMediaSource->getDuration(); - stream << " @ "; - stream << (int)mSelectedPanel->mMediaSource->getCurrentPlayRate(); - stream << " | "; - }; - - glutSetWindow( mBottomGLUIWindow->get_glut_window_id() ); - mStatusText->set_text( const_cast< char*>( stream.str().c_str() ) ); - glutSetWindow( mAppWindow ); - - // caching - cached_id = mSelectedPanel->mId; - cached_media_width = mSelectedPanel->mMediaWidth; - cached_media_height = mSelectedPanel->mMediaHeight; - cached_texture_width = mSelectedPanel->mTextureWidth; - cached_texture_height = mSelectedPanel->mTextureHeight; - cached_supports_browser_media = mSelectedPanel->mMediaSource->pluginSupportsMediaBrowser(); - cached_supports_time_media = mSelectedPanel->mMediaSource->pluginSupportsMediaTime(); - cached_plugin_version = mSelectedPanel->mMediaSource->getPluginVersion(); - cached_movie_time = (int)mSelectedPanel->mMediaSource->getCurrentTime(); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::dumpPanelInfo() -{ - std::cout << std::endl << "===== Media Panels =====" << std::endl; - for( int i = 0; i < (int)mMediaPanels.size(); ++i ) - { - std::cout << std::setw( 2 ) << std::setfill( '0' ); - std::cout << i + 1 << "> "; - std::cout << "Id: "; - std::cout << std::setw( 2 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mId; - std::cout << " | "; - std::cout << "Media: "; - std::cout << std::setw( 3 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mMediaWidth; - std::cout << " x "; - std::cout << std::setw( 3 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mMediaHeight; - std::cout << " | "; - std::cout << "Texture: "; - std::cout << std::setw( 4 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mTextureWidth; - std::cout << " x "; - std::cout << std::setw( 4 ) << std::setfill( '0' ); - std::cout << mMediaPanels[ i ]->mTextureHeight; - std::cout << " | "; - if ( mMediaPanels[ i ] == mSelectedPanel ) - std::cout << "(selected)"; - - std::cout << std::endl; - }; - std::cout << "========================" << std::endl; -} - -//////////////////////////////////////////////////////////////////////////////// -// -void LLMediaPluginTest::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) -{ - // Uncomment this to make things much, much quieter. -// return; - - switch(event) - { - case MEDIA_EVENT_CONTENT_UPDATED: - // too spammy -- don't log these -// std::cerr << "Media event: MEDIA_EVENT_CONTENT_UPDATED " << std::endl; - break; - - case MEDIA_EVENT_TIME_DURATION_UPDATED: - // too spammy -- don't log these -// std::cerr << "Media event: MEDIA_EVENT_TIME_DURATION_UPDATED, time is " << self->getCurrentTime() << " of " << self->getDuration() << std::endl; - break; - - case MEDIA_EVENT_SIZE_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_SIZE_CHANGED " << std::endl; - break; - - case MEDIA_EVENT_CURSOR_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << std::endl; - break; - - case MEDIA_EVENT_NAVIGATE_BEGIN: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_BEGIN " << std::endl; - break; - - case MEDIA_EVENT_NAVIGATE_COMPLETE: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_COMPLETE, result string is: " << self->getNavigateResultString() << std::endl; - break; - - case MEDIA_EVENT_PROGRESS_UPDATED: - std::cerr << "Media event: MEDIA_EVENT_PROGRESS_UPDATED, loading at " << self->getProgressPercent() << "%" << std::endl; - break; - - case MEDIA_EVENT_STATUS_TEXT_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_STATUS_TEXT_CHANGED, new status text is: " << self->getStatusText() << std::endl; - break; - - case MEDIA_EVENT_NAME_CHANGED: - std::cerr << "Media event: MEDIA_EVENT_NAME_CHANGED, new name is: " << self->getMediaName() << std::endl; - glutSetWindowTitle( self->getMediaName().c_str() ); - break; - - case MEDIA_EVENT_LOCATION_CHANGED: - { - std::cerr << "Media event: MEDIA_EVENT_LOCATION_CHANGED, new uri is: " << self->getLocation() << std::endl; - mediaPanel* panel = findMediaPanel(self); - if(panel != NULL) - { - panel->mStartUrl = self->getLocation(); - if(panel == mSelectedPanel) - { - mUrlEdit->set_text(const_cast<char*>(panel->mStartUrl.c_str()) ); - } - } - } - break; - - case MEDIA_EVENT_NAVIGATE_ERROR_PAGE: - std::cerr << "Media event: MEDIA_EVENT_NAVIGATE_ERROR_PAGE, uri is: " << self->getClickURL() << std::endl; - break; - - case MEDIA_EVENT_CLICK_LINK_HREF: - { - 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: - std::cerr << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << std::endl; - break; - - case MEDIA_EVENT_PLUGIN_FAILED: - std::cerr << "Media event: MEDIA_EVENT_PLUGIN_FAILED" << std::endl; - break; - - 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; - - case MEDIA_EVENT_AUTH_REQUEST: - { - //std::cerr << "Media event: MEDIA_EVENT_AUTH_REQUEST, url " << self->getAuthURL() ", realm " << self->getAuthRealm() << std::endl; - - // TODO: display an auth dialog - self->sendAuthResponse(false, "", ""); - } - break; - - case MEDIA_EVENT_LINK_HOVERED: - { - std::cerr << "Media event: MEDIA_EVENT_LINK_HOVERED, hover text is: " << self->getHoverText() << std::endl; - } - break; - - default: - { - std::cerr << "Media event: <unknown>, code is: " << int(event) << std::endl; - } - break; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// -static void gluiCallbackWrapper( int control_id ) -{ - if ( gApplication ) - gApplication->gluiCallback( control_id ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutReshape( int width, int height ) -{ - if ( gApplication ) - gApplication->reshape( width, height ); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutDisplay() -{ - if ( gApplication ) - gApplication->display(); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutIdle(int update_ms) -{ - GLUI_Master.set_glutTimerFunc( update_ms, glutIdle, update_ms); - - if ( gApplication ) - gApplication->idle(); - -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutKeyboard( unsigned char key, int x, int y ) -{ - if ( gApplication ) - gApplication->keyboard( key ); -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMousePassive( int x, int y ) -{ - if ( gApplication ) - gApplication->mousePassive( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMouseMove( int x , int y ) -{ - if ( gApplication ) - gApplication->mouseMove( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -void glutMouseButton( int button, int state, int x, int y ) -{ - if ( gApplication ) - gApplication->mouseButton( button, state, x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -// -int main( int argc, char* argv[] ) -{ -#if LL_DARWIN - // Set the current working directory to <application bundle>/Contents/Resources/ - CFURLRef resources_url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); - if(resources_url != NULL) - { - CFStringRef resources_string = CFURLCopyFileSystemPath(resources_url, kCFURLPOSIXPathStyle); - CFRelease(resources_url); - if(resources_string != NULL) - { - char buffer[PATH_MAX] = ""; - if(CFStringGetCString(resources_string, buffer, sizeof(buffer), kCFStringEncodingUTF8)) - { - chdir(buffer); - } - CFRelease(resources_string); - } - } -#endif - - glutInit( &argc, argv ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB ); - - const int app_window_x = 80; - const int app_window_y = 0; - const int app_window_width = 960; - const int app_window_height = 960; - - glutInitWindowPosition( app_window_x, app_window_y ); - glutInitWindowSize( app_window_width, app_window_height ); - - int app_window_handle = glutCreateWindow( "LLMediaPluginTest" ); - - glutDisplayFunc( glutDisplay ); - - GLUI_Master.set_glutReshapeFunc( glutReshape ); - GLUI_Master.set_glutKeyboardFunc( glutKeyboard ); - GLUI_Master.set_glutMouseFunc( glutMouseButton ); - - glutPassiveMotionFunc( glutMousePassive ); - glutMotionFunc( glutMouseMove ); - - glutSetWindow( app_window_handle ); - - gApplication = new LLMediaPluginTest( app_window_handle, app_window_width, app_window_height ); - - // update at approximately 60hz - int update_ms = 1000 / 60; - - GLUI_Master.set_glutTimerFunc( update_ms, glutIdle, update_ms); - - glutMainLoop(); - - delete gApplication; -} diff --git a/indra/test_apps/llplugintest/llmediaplugintest.h b/indra/test_apps/llplugintest/llmediaplugintest.h deleted file mode 100755 index 1f6f18e43c..0000000000 --- a/indra/test_apps/llplugintest/llmediaplugintest.h +++ /dev/null @@ -1,207 +0,0 @@ -/** - * @file LLMediaPluginTest.cpp - * @brief Primary test application for LLMedia (Separate Process) Plugin system - * - * $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_MEDIA_PLUGIN_TEST_H -#define LL_MEDIA_PLUGIN_TEST_H - -#include <vector> -#include <string> -#include "llpluginclassmedia.h" -#include "llgl.h" - -// Forward declarations -class GLUI_Rotation; -class GLUI_Translation; -class GLUI_Listbox; -class GLUI_EditText; -class GLUI_StaticText; -class GLUI; -class GLUI_Button; - -//////////////////////////////////////////////////////////////////////////////// -// -struct mediaPanel -{ - public: - mediaPanel(); - ~mediaPanel(); - int mId; - std::string mStartUrl; - std::string mMimeType; - std::string mTarget; - LLPluginClassMedia *mMediaSource; - int mMediaWidth; - int mMediaHeight; - int mTextureWidth; - int mTextureHeight; - double mTextureScaleX; - double mTextureScaleY; - GLuint mMediaTextureHandle; - GLuint mPickTextureHandle; - unsigned char* mPickTexturePixels; - bool mAppTextureCoordsOpenGL; - bool mReadyToRender; -}; - -//////////////////////////////////////////////////////////////////////////////// -// -class LLMediaPluginTest : public LLPluginClassMediaOwner -{ - public: - LLMediaPluginTest( int app_window, int window_width, int window_height ); - ~LLMediaPluginTest(); - - void reshape( int width, int height ); - void display(); - void idle(); - void gluiCallback( int control_id ); - void keyboard( int key ); - void mousePassive( int x, int y ); - void mouseButton( int button, int state, int x, int y ); - void mouseMove( int x, int y ); - - void bindTexture(GLuint texture, GLint row_length = 0, GLint alignment = 1); - bool checkGLError(const char *name = "OpenGL"); - void drawGeometry( int panel, bool selected ); - void startPanelHighlight( float red, float green, float blue, float line_width ); - void endPanelHighlight(); - enum { DrawTypePickTexture, DrawTypeMediaTexture }; - void draw( int draw_type ); - void windowPosToTexturePos( int window_x, int window_y, int& media_x, int& media_y, int& id ); - - mediaPanel* addMediaPanel( std::string url ); - void updateMediaPanel( mediaPanel* panel ); - void remMediaPanel( mediaPanel* panel ); - 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(); - - void dumpPanelInfo(); - void updateStatusBar(); - - GLfloat distanceToCamera( GLfloat point_x, GLfloat point_y, GLfloat point_z ); - - - // Inherited from LLPluginClassMediaOwner - /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, LLPluginClassMediaOwner::EMediaEvent); - - private: - const int mVersionMajor; - const int mVersionMinor; - const int mVersionPatch; - const int mMaxPanels; - int mAppWindow; - int mWindowWidth; - int mWindowHeight; - int mCurMouseX; - int mCurMouseY; - unsigned char mPixelReadColor[ 3 ]; - bool mFuzzyMedia; - const std::string mHomeWebUrl; - - std::vector< mediaPanel* > mMediaPanels; - mediaPanel* mSelectedPanel; - std::string mimeTypeFromUrl( std::string& url ); - std::string pluginNameFromMimeType( std::string& mime_type ); - - GLUI_Rotation* mViewRotationCtrl; - GLUI_Translation* mViewScaleCtrl; - GLUI_Translation* mViewTranslationCtrl; - float mViewportAspect; - float mViewPos[ 3 ]; - float mViewRotation[ 16 ]; - - float mDistanceCameraToSelectedGeometry; - - int mIdControlAddPanel; - int mIdControlRemPanel; - - std::vector< std::pair< std::string, std::string > > mBookmarks; - GLUI_Listbox* mBookmarkList; - int mIdBookmarks; - int mIdUrlEdit; - GLUI_EditText* mUrlEdit; - int mIdUrlInitHistoryEdit; - GLUI_EditText* mUrlInitHistoryEdit; - int mSelBookmark; - int mIdRandomPanelCount; - int mRandomPanelCount; - int mIdRandomBookmarks; - int mRandomBookmarks; - int mIdDisableTimeout; - int mDisableTimeout; - int mIdUsePluginReadThread; - int mUsePluginReadThread; - int mIdLargePanelSpacing; - int mLargePanelSpacing; - int mIdControlCrashPlugin; - int mIdControlHangPlugin; - int mIdControlExitApp; - - GLUI* mGluiMediaTimeControlWindow; - int mIdMediaTimeControlPlay; - int mIdMediaTimeControlLoop; - int mIdMediaTimeControlPause; - int mIdMediaTimeControlStop; - int mIdMediaTimeControlSeek; - int mIdMediaTimeControlVolume; - int mMediaTimeControlVolume; - int mIdMediaTimeControlSeekSeconds; - int mMediaTimeControlSeekSeconds; - int mIdMediaTimeControlRewind; - int mIdMediaTimeControlFastForward; - - GLUI* mGluiMediaBrowserControlWindow; - int mIdMediaBrowserControlBack; - GLUI_Button* mMediaBrowserControlBackButton; - int mIdMediaBrowserControlStop; - int mIdMediaBrowserControlForward; - GLUI_Button* mMediaBrowserControlForwardButton; - bool mGluiMediaTimeControlWindowFlag; - bool mGluiMediaBrowserControlWindowFlag; - bool mMediaBrowserControlBackButtonFlag; - bool mMediaBrowserControlForwardButtonFlag; - int mIdMediaBrowserControlHome; - int mIdMediaBrowserControlReload; - int mIdMediaBrowserControlClearCache; - int mIdMediaBrowserControlClearCookies; - int mIdMediaBrowserControlEnableCookies; - int mMediaBrowserControlEnableCookies; - - GLUI* mBottomGLUIWindow; - GLUI_StaticText* mStatusText; -}; - -#endif // LL_MEDIA_PLUGIN_TEST_H - diff --git a/indra/tools/vstool/DispatchUtility.cs b/indra/tools/vstool/DispatchUtility.cs new file mode 100644 index 0000000000..6056ac55a1 --- /dev/null +++ b/indra/tools/vstool/DispatchUtility.cs @@ -0,0 +1,271 @@ +#region Using Directives
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Reflection;
+using System.Security.Permissions;
+
+#endregion
+
+namespace TestDispatchUtility
+{
+ /// <summary>
+ /// Provides helper methods for working with COM IDispatch objects that have a registered type library.
+ /// </summary>
+ public static class DispatchUtility
+ {
+ #region Private Constants
+
+ private const int S_OK = 0; //From WinError.h
+ private const int LOCALE_SYSTEM_DEFAULT = 2 << 10; //From WinNT.h == 2048 == 0x800
+
+ #endregion
+
+ #region Public Methods
+
+ /// <summary>
+ /// Gets whether the specified object implements IDispatch.
+ /// </summary>
+ /// <param name="obj">An object to check.</param>
+ /// <returns>True if the object implements IDispatch. False otherwise.</returns>
+ public static bool ImplementsIDispatch(object obj)
+ {
+ bool result = obj is IDispatchInfo;
+ return result;
+ }
+
+ /// <summary>
+ /// Gets a Type that can be used with reflection.
+ /// </summary>
+ /// <param name="obj">An object that implements IDispatch.</param>
+ /// <param name="throwIfNotFound">Whether an exception should be thrown if a Type can't be obtained.</param>
+ /// <returns>A .NET Type that can be used with reflection.</returns>
+ /// <exception cref="InvalidCastException">If <paramref name="obj"/> doesn't implement IDispatch.</exception>
+ [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
+ public static Type GetType(object obj, bool throwIfNotFound)
+ {
+ RequireReference(obj, "obj");
+ Type result = GetType((IDispatchInfo)obj, throwIfNotFound);
+ return result;
+ }
+
+ /// <summary>
+ /// Tries to get the DISPID for the requested member name.
+ /// </summary>
+ /// <param name="obj">An object that implements IDispatch.</param>
+ /// <param name="name">The name of a member to lookup.</param>
+ /// <param name="dispId">If the method returns true, this holds the DISPID on output.
+ /// If the method returns false, this value should be ignored.</param>
+ /// <returns>True if the member was found and resolved to a DISPID. False otherwise.</returns>
+ /// <exception cref="InvalidCastException">If <paramref name="obj"/> doesn't implement IDispatch.</exception>
+ [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
+ public static bool TryGetDispId(object obj, string name, out int dispId)
+ {
+ RequireReference(obj, "obj");
+ bool result = TryGetDispId((IDispatchInfo)obj, name, out dispId);
+ return result;
+ }
+
+ /// <summary>
+ /// Invokes a member by DISPID.
+ /// </summary>
+ /// <param name="obj">An object that implements IDispatch.</param>
+ /// <param name="dispId">The DISPID of a member. This can be obtained using
+ /// <see cref="TryGetDispId(object, string, out int)"/>.</param>
+ /// <param name="args">The arguments to pass to the member.</param>
+ /// <returns>The member's return value.</returns>
+ /// <remarks>
+ /// This can invoke a method or a property get accessor.
+ /// </remarks>
+ public static object Invoke(object obj, int dispId, object[] args)
+ {
+ string memberName = "[DispId=" + dispId + "]";
+ object result = Invoke(obj, memberName, args);
+ return result;
+ }
+
+ /// <summary>
+ /// Invokes a member by name.
+ /// </summary>
+ /// <param name="obj">An object.</param>
+ /// <param name="memberName">The name of the member to invoke.</param>
+ /// <param name="args">The arguments to pass to the member.</param>
+ /// <returns>The member's return value.</returns>
+ /// <remarks>
+ /// This can invoke a method or a property get accessor.
+ /// </remarks>
+ public static object Invoke(object obj, string memberName, object[] args)
+ {
+ RequireReference(obj, "obj");
+ Type type = obj.GetType();
+ object result = type.InvokeMember(memberName, BindingFlags.InvokeMethod | BindingFlags.GetProperty,
+ null, obj, args, null);
+ return result;
+ }
+
+ #endregion
+
+ #region Private Methods
+
+ /// <summary>
+ /// Requires that the value is non-null.
+ /// </summary>
+ /// <typeparam name="T">The type of the value.</typeparam>
+ /// <param name="value">The value to check.</param>
+ /// <param name="name">The name of the value.</param>
+ private static void RequireReference<T>(T value, string name) where T : class
+ {
+ if (value == null)
+ {
+ throw new ArgumentNullException(name);
+ }
+ }
+
+ /// <summary>
+ /// Gets a Type that can be used with reflection.
+ /// </summary>
+ /// <param name="dispatch">An object that implements IDispatch.</param>
+ /// <param name="throwIfNotFound">Whether an exception should be thrown if a Type can't be obtained.</param>
+ /// <returns>A .NET Type that can be used with reflection.</returns>
+ private static Type GetType(IDispatchInfo dispatch, bool throwIfNotFound)
+ {
+ RequireReference(dispatch, "dispatch");
+
+ Type result = null;
+ int typeInfoCount;
+ int hr = dispatch.GetTypeInfoCount(out typeInfoCount);
+ if (hr == S_OK && typeInfoCount > 0)
+ {
+ // Type info isn't usually culture-aware for IDispatch, so we might as well pass
+ // the default locale instead of looking up the current thread's LCID each time
+ // (via CultureInfo.CurrentCulture.LCID).
+ dispatch.GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, out result);
+ }
+
+ if (result == null && throwIfNotFound)
+ {
+ // If the GetTypeInfoCount called failed, throw an exception for that.
+ Marshal.ThrowExceptionForHR(hr);
+
+ // Otherwise, throw the same exception that Type.GetType would throw.
+ throw new TypeLoadException();
+ }
+
+ return result;
+ }
+
+ /// <summary>
+ /// Tries to get the DISPID for the requested member name.
+ /// </summary>
+ /// <param name="dispatch">An object that implements IDispatch.</param>
+ /// <param name="name">The name of a member to lookup.</param>
+ /// <param name="dispId">If the method returns true, this holds the DISPID on output.
+ /// If the method returns false, this value should be ignored.</param>
+ /// <returns>True if the member was found and resolved to a DISPID. False otherwise.</returns>
+ private static bool TryGetDispId(IDispatchInfo dispatch, string name, out int dispId)
+ {
+ RequireReference(dispatch, "dispatch");
+ RequireReference(name, "name");
+
+ bool result = false;
+
+ // Members names aren't usually culture-aware for IDispatch, so we might as well
+ // pass the default locale instead of looking up the current thread's LCID each time
+ // (via CultureInfo.CurrentCulture.LCID).
+ Guid iidNull = Guid.Empty;
+ int hr = dispatch.GetDispId(ref iidNull, ref name, 1, LOCALE_SYSTEM_DEFAULT, out dispId);
+
+ const int DISP_E_UNKNOWNNAME = unchecked((int)0x80020006); //From WinError.h
+ const int DISPID_UNKNOWN = -1; //From OAIdl.idl
+ if (hr == S_OK)
+ {
+ result = true;
+ }
+ else if (hr == DISP_E_UNKNOWNNAME && dispId == DISPID_UNKNOWN)
+ {
+ // This is the only supported "error" case because it means IDispatch
+ // is saying it doesn't know the member we asked about.
+ result = false;
+ }
+ else
+ {
+ // The other documented result codes are all errors.
+ Marshal.ThrowExceptionForHR(hr);
+ }
+
+ return result;
+ }
+
+ #endregion
+
+ #region Private Interfaces
+
+ /// <summary>
+ /// A partial declaration of IDispatch used to lookup Type information and DISPIDs.
+ /// </summary>
+ /// <remarks>
+ /// This interface only declares the first three methods of IDispatch. It omits the
+ /// fourth method (Invoke) because there are already plenty of ways to do dynamic
+ /// invocation in .NET. But the first three methods provide dynamic type metadata
+ /// discovery, which .NET doesn't provide normally if you have a System.__ComObject
+ /// RCW instead of a strongly-typed RCW.
+ /// <para/>
+ /// Note: The original declaration of IDispatch is in OAIdl.idl.
+ /// </remarks>
+ [ComImport]
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+ [Guid("00020400-0000-0000-C000-000000000046")]
+ private interface IDispatchInfo
+ {
+ /// <summary>
+ /// Gets the number of Types that the object provides (0 or 1).
+ /// </summary>
+ /// <param name="typeInfoCount">Returns 0 or 1 for the number of Types provided by <see cref="GetTypeInfo"/>.</param>
+ /// <remarks>
+ /// http://msdn.microsoft.com/en-us/library/da876d53-cb8a-465c-a43e-c0eb272e2a12(VS.85)
+ /// </remarks>
+ [PreserveSig]
+ int GetTypeInfoCount(out int typeInfoCount);
+
+ /// <summary>
+ /// Gets the Type information for an object if <see cref="GetTypeInfoCount"/> returned 1.
+ /// </summary>
+ /// <param name="typeInfoIndex">Must be 0.</param>
+ /// <param name="lcid">Typically, LOCALE_SYSTEM_DEFAULT (2048).</param>
+ /// <param name="typeInfo">Returns the object's Type information.</param>
+ /// <remarks>
+ /// http://msdn.microsoft.com/en-us/library/cc1ec9aa-6c40-4e70-819c-a7c6dd6b8c99(VS.85)
+ /// </remarks>
+ void GetTypeInfo(int typeInfoIndex, int lcid, [MarshalAs(UnmanagedType.CustomMarshaler,
+ MarshalTypeRef = typeof(System.Runtime.InteropServices.CustomMarshalers.TypeToTypeInfoMarshaler))] out Type typeInfo);
+
+ /// <summary>
+ /// Gets the DISPID of the specified member name.
+ /// </summary>
+ /// <param name="riid">Must be IID_NULL. Pass a copy of Guid.Empty.</param>
+ /// <param name="name">The name of the member to look up.</param>
+ /// <param name="nameCount">Must be 1.</param>
+ /// <param name="lcid">Typically, LOCALE_SYSTEM_DEFAULT (2048).</param>
+ /// <param name="dispId">If a member with the requested <paramref name="name"/>
+ /// is found, this returns its DISPID and the method's return value is 0.
+ /// If the method returns a non-zero value, then this parameter's output value is
+ /// undefined.</param>
+ /// <returns>Zero for success. Non-zero for failure.</returns>
+ /// <remarks>
+ /// http://msdn.microsoft.com/en-us/library/6f6cf233-3481-436e-8d6a-51f93bf91619(VS.85)
+ /// </remarks>
+ [PreserveSig]
+ int GetDispId(ref Guid riid, ref string name, int nameCount, int lcid, out int dispId);
+
+ // NOTE: The real IDispatch also has an Invoke method next, but we don't need it.
+ // We can invoke methods using .NET's Type.InvokeMember method with the special
+ // [DISPID=n] syntax for member "names", or we can get a .NET Type using GetTypeInfo
+ // and invoke methods on that through reflection.
+ // Type.InvokeMember: http://msdn.microsoft.com/en-us/library/de3dhzwy.aspx
+ }
+
+ #endregion
+ }
+}
diff --git a/indra/tools/vstool/README.txt b/indra/tools/vstool/README.txt index e419180031..e419180031 100755..100644 --- a/indra/tools/vstool/README.txt +++ b/indra/tools/vstool/README.txt diff --git a/indra/tools/vstool/app.config b/indra/tools/vstool/app.config new file mode 100644 index 0000000000..8494f728ff --- /dev/null +++ b/indra/tools/vstool/app.config @@ -0,0 +1,3 @@ +<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
diff --git a/indra/viewer_components/CMakeLists.txt b/indra/viewer_components/CMakeLists.txt index 74c9b4568d..74c9b4568d 100755..100644 --- a/indra/viewer_components/CMakeLists.txt +++ b/indra/viewer_components/CMakeLists.txt diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index c152f7c0a6..c152f7c0a6 100755..100644 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index b8408a6fb4..b8408a6fb4 100755..100644 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp diff --git a/indra/viewer_components/login/lllogin.h b/indra/viewer_components/login/lllogin.h index 051641ff59..051641ff59 100755..100644 --- a/indra/viewer_components/login/lllogin.h +++ b/indra/viewer_components/login/lllogin.h diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp index 58bf371a04..58bf371a04 100755..100644 --- a/indra/viewer_components/login/tests/lllogin_test.cpp +++ b/indra/viewer_components/login/tests/lllogin_test.cpp diff --git a/indra/viewer_components/updater/CMakeLists.txt b/indra/viewer_components/updater/CMakeLists.txt index 61fd4220e0..61fd4220e0 100755..100644 --- a/indra/viewer_components/updater/CMakeLists.txt +++ b/indra/viewer_components/updater/CMakeLists.txt diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp index 8da4f88905..8da4f88905 100755..100644 --- a/indra/viewer_components/updater/llupdatechecker.cpp +++ b/indra/viewer_components/updater/llupdatechecker.cpp diff --git a/indra/viewer_components/updater/llupdatechecker.h b/indra/viewer_components/updater/llupdatechecker.h index 3163a6d53c..3163a6d53c 100755..100644 --- a/indra/viewer_components/updater/llupdatechecker.h +++ b/indra/viewer_components/updater/llupdatechecker.h diff --git a/indra/viewer_components/updater/llupdatedownloader.cpp b/indra/viewer_components/updater/llupdatedownloader.cpp index f868e5cc2c..f868e5cc2c 100755..100644 --- a/indra/viewer_components/updater/llupdatedownloader.cpp +++ b/indra/viewer_components/updater/llupdatedownloader.cpp diff --git a/indra/viewer_components/updater/llupdatedownloader.h b/indra/viewer_components/updater/llupdatedownloader.h index f759988f12..f759988f12 100755..100644 --- a/indra/viewer_components/updater/llupdatedownloader.h +++ b/indra/viewer_components/updater/llupdatedownloader.h diff --git a/indra/viewer_components/updater/llupdateinstaller.cpp b/indra/viewer_components/updater/llupdateinstaller.cpp index a0e2c0b362..a0e2c0b362 100755..100644 --- a/indra/viewer_components/updater/llupdateinstaller.cpp +++ b/indra/viewer_components/updater/llupdateinstaller.cpp diff --git a/indra/viewer_components/updater/llupdateinstaller.h b/indra/viewer_components/updater/llupdateinstaller.h index fe5b1d19b5..fe5b1d19b5 100755..100644 --- a/indra/viewer_components/updater/llupdateinstaller.h +++ b/indra/viewer_components/updater/llupdateinstaller.h diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index c152493a51..788955a1b2 100755..100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -132,6 +132,7 @@ public: void startChecking(bool install_if_ready); void stopChecking(); + bool forceCheck(); bool isChecking(); LLUpdaterService::eUpdaterState getState(); @@ -266,6 +267,46 @@ void LLUpdaterServiceImpl::stopChecking() setState(LLUpdaterService::TERMINAL); } +bool LLUpdaterServiceImpl::forceCheck() +{ + if (!mIsDownloading && getState() != LLUpdaterService::CHECKING_FOR_UPDATE) + { + if (mIsChecking) + { + // Service is running, just reset the timer + if (mTimer.getStarted()) + { + mTimer.setTimerExpirySec(0); + setState(LLUpdaterService::CHECKING_FOR_UPDATE); + return true; + } + } + else if (!mChannel.empty() && !mVersion.empty()) + { + // one time check + bool has_install = checkForInstall(false); + if (!has_install) + { + std::string query_url = LLGridManager::getInstance()->getUpdateServiceURL(); + if (!query_url.empty()) + { + setState(LLUpdaterService::CHECKING_FOR_UPDATE); + mUpdateChecker.checkVersion(query_url, mChannel, mVersion, + mPlatform, mPlatformVersion, mUniqueId, + mWillingToTest); + return true; + } + else + { + LL_WARNS("UpdaterService") + << "No updater service defined for grid '" << LLGridManager::getInstance()->getGrid() << LL_ENDL; + } + } + } + } + return false; +} + bool LLUpdaterServiceImpl::isChecking() { return mIsChecking; @@ -402,9 +443,9 @@ bool LLUpdaterServiceImpl::checkForResume() void LLUpdaterServiceImpl::error(std::string const & message) { + setState(LLUpdaterService::TEMPORARY_ERROR); if(mIsChecking) { - setState(LLUpdaterService::TEMPORARY_ERROR); restartTimer(mCheckPeriod); } } @@ -449,8 +490,12 @@ void LLUpdaterServiceImpl::response(LLSD const & content) else { LL_WARNS("UpdaterService") << "Invalid update query response ignored; retry in " - << mCheckPeriod << " seconds" << LL_ENDL; - restartTimer(mCheckPeriod); + << mCheckPeriod << " seconds" << LL_ENDL; + setState(LLUpdaterService::TEMPORARY_ERROR); + if (mIsChecking) + { + restartTimer(mCheckPeriod); + } } } @@ -672,6 +717,11 @@ void LLUpdaterService::stopChecking() mImpl->stopChecking(); } +bool LLUpdaterService::forceCheck() +{ + return mImpl->forceCheck(); +} + bool LLUpdaterService::isChecking() { return mImpl->isChecking(); diff --git a/indra/viewer_components/updater/llupdaterservice.h b/indra/viewer_components/updater/llupdaterservice.h index 0ddf24935b..95bbe1695c 100755..100644 --- a/indra/viewer_components/updater/llupdaterservice.h +++ b/indra/viewer_components/updater/llupdaterservice.h @@ -84,6 +84,7 @@ public: void startChecking(bool install_if_ready = false); void stopChecking(); + bool forceCheck(); bool isChecking(); eUpdaterState getState(); diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp index 759e41ef4c..759e41ef4c 100755..100644 --- a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp +++ b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt index c6070020db..c6070020db 100755..100644 --- a/indra/win_crash_logger/CMakeLists.txt +++ b/indra/win_crash_logger/CMakeLists.txt diff --git a/indra/win_crash_logger/StdAfx.cpp b/indra/win_crash_logger/StdAfx.cpp index f56711af73..f56711af73 100755..100644 --- a/indra/win_crash_logger/StdAfx.cpp +++ b/indra/win_crash_logger/StdAfx.cpp diff --git a/indra/win_crash_logger/StdAfx.h b/indra/win_crash_logger/StdAfx.h index 35976658ac..35976658ac 100755..100644 --- a/indra/win_crash_logger/StdAfx.h +++ b/indra/win_crash_logger/StdAfx.h diff --git a/indra/win_crash_logger/ll_icon.ico b/indra/win_crash_logger/ll_icon.ico Binary files differindex 566346dfe3..566346dfe3 100755..100644 --- a/indra/win_crash_logger/ll_icon.ico +++ b/indra/win_crash_logger/ll_icon.ico diff --git a/indra/win_crash_logger/resource.h b/indra/win_crash_logger/resource.h index 37a387275e..37a387275e 100755..100644 --- a/indra/win_crash_logger/resource.h +++ b/indra/win_crash_logger/resource.h diff --git a/indra/win_crash_logger/win_crash_logger.cpp b/indra/win_crash_logger/win_crash_logger.cpp index 366edd894b..366edd894b 100755..100644 --- a/indra/win_crash_logger/win_crash_logger.cpp +++ b/indra/win_crash_logger/win_crash_logger.cpp diff --git a/indra/win_crash_logger/win_crash_logger.h b/indra/win_crash_logger/win_crash_logger.h index 2cc2cf3dcf..2cc2cf3dcf 100755..100644 --- a/indra/win_crash_logger/win_crash_logger.h +++ b/indra/win_crash_logger/win_crash_logger.h diff --git a/indra/win_crash_logger/win_crash_logger.ico b/indra/win_crash_logger/win_crash_logger.ico Binary files differindex 386883523b..386883523b 100755..100644 --- a/indra/win_crash_logger/win_crash_logger.ico +++ b/indra/win_crash_logger/win_crash_logger.ico diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester deleted file mode 100755 index af0678000d..0000000000 --- a/scripts/gpu_table_tester +++ /dev/null @@ -1,293 +0,0 @@ -#!/usr/bin/perl -## Checks entries in the indra/newview/gpu_table.txt file against sample data -## -## Copyright (c) 2011, Linden Research, Inc. -## -## Permission is hereby granted, free of charge, to any person obtaining a copy -## of this software and associated documentation files (the "Software"), to deal -## in the Software without restriction, including without limitation the rights -## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -## copies of the Software, and to permit persons to whom the Software is -## furnished to do so, subject to the following conditions: -## -## The above copyright notice and this permission notice shall be included in -## all copies or substantial portions of the Software. -## -## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -## THE SOFTWARE. - -use English; -use Getopt::Long; - -( $MyName = $0 ) =~ s|.*/||; -my $mini_HELP = " - $MyName {--gpu-table|-g} <gpu_table.txt> {--table-only|-t} - - Checks for duplicates and invalid lines in the gpu_table.txt file. - - $MyName {--gpu-table|-g} <gpu_table.txt> [ <gpu-strings-file> ... ] - [{--unmatched|-u}] - - Tests the recognition of values in the gpu-strings-files (or - standard input if no files are given). The results of attempting to match - each input line are displayed in report form, showing: - - NO MATCH, unsupported, or supported - - the class of the GPU - - the label for the recognizer line from the gpu_table that it matched - - If the --unmatched option is specified, then no output is produced for - values that are matched. - - $MyName {--gpu-table|-g} <gpu_table.txt> {--diff|-d} <old_results> [ <gpu-strings-file> ...] - - With the --diff option, the report compares the current results to <old-results>, - which should be the output from a previous run without --diff. The report shows each - input value with the old result and the new result if it is different. -"; - -&GetOptions("help" => \$Help - ,"unmatched" => \$UnMatchedOnly - ,"table-only" => \$TableOnly - ,"gpu-table=s" => \$GpuTable - ,"diff=s" => \$Diff - ) - || die "$mini_HELP"; - -if ($Help) -{ - print $mini_HELP; - exit 0; -} - -$ErrorsSeen = 0; -$NoMatch = 'NO MATCH'; # constant - -die "Must specify a --gpu-table <gpu_table.txt> value" - unless $GpuTable; - -open(GPUS, "<$GpuTable") - || die "Failed to open gpu table '$GpuTable':\n\t$!\n"; - -my $FirstLine = <GPUS>; -die "First line of gpu table does not begin with '//GPU_TABLE'" - unless $FirstLine =~ m|^//GPU_TABLE|; - -# Parse the GPU table into these tables, indexed by the name -my %NameLine; # name -> line number on which a given name was found (catches duplicate names) -my %RecognizerLine; # name -> line number on which a given name was found (catches duplicate names) -my %Name; # recognizer -> name -my %Recognizer; # name -> recognizer -my %Class; # recognizer -> class -my %Supported; # recognizer -> supported -my @InOrder; # lowercased recognizers in file order - these are the ones really used to match -my %StatsBased; -my %ExpectedOpenGL; - -$Name{$NoMatch} = $NoMatch; -$NameLine{$NoMatch} = '(hard-coded)'; # use this for error messages in table parsing -$Class{$NoMatch} = ''; -$Supported{$NoMatch} = ''; -$StatsBased{$NoMatch} = ''; -$ExpectedOpenGL{$NoMatch} = ''; - -while (<GPUS>) -{ - next if m|^//|; # skip comments - next if m|^\s*$|; # skip blank lines - - chomp; - my ($name, $regex, $class, $supported, $stats_based, $expected_opengl, $extra) = split('\t+'); - my $errsOnLine = $ErrorsSeen; - if (!$name) - { - print STDERR "No name found on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - elsif ( defined $NameLine{$name} ) - { - print STDERR "Duplicate name '$name' on $GpuTable lines $NameLine{$name} and $INPUT_LINE_NUMBER:\n"; - print STDERR " $NameLine{$name}: /$Recognizer{$name}/ $Supported{$Recognizer{$name}} class $Class{$Recognizer{$name}}\n"; - print STDERR " $INPUT_LINE_NUMBER: /$regex/ " . ($supported ? "supported" : "unsupported") . " class $class - ignored\n"; - $ErrorsSeen++; - } - if (!$regex) - { - print STDERR "No recognizer found on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - elsif ( defined $RecognizerLine{$regex} ) - { - print STDERR "Duplicate recognizer /$regex/ found on $GpuTable lines $RecognizerLine{$regex} and $INPUT_LINE_NUMBER (ignored)\n"; - print STDERR " $RecognizerLine{$regex}: name '$Name{$regex}' $Supported{$regex} class $Class{$regex}\n"; - print STDERR " $INPUT_LINE_NUMBER: name '$name' " . ($supported ? "supported" : "unsupported") . " class $class - ignored\n"; - $ErrorsSeen++; - } - if ($class !~ m/[012345]/) - { - print STDERR "Invalid class value '$class' on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - if ($supported !~ m/[0123]/) - { - print STDERR "Invalid supported value '$supported' on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - if ($stats_based !~ m/[01]/) - { - print STDERR "Invalid stats_based value '$stats_based' on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - if ($expected_opengl !~ m/\d+(\.\d+)?/) - { - print STDERR "Invalid expected_opengl value '$expected_opengl' on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - if ($extra) - { - print STDERR "Extra data '$extra' on $GpuTable line $INPUT_LINE_NUMBER\n"; - $ErrorsSeen++; - } - - if ($errsOnLine == $ErrorsSeen) # no errors found on this line - { - push @InOrder,$regex; - $NameLine{$name} = $INPUT_LINE_NUMBER; - $RecognizerLine{$regex} = $INPUT_LINE_NUMBER; - $Name{$regex} = $name; - $Recognizer{$name} = $regex; - $Class{$regex} = $class; - $Supported{$regex} = $supported ? "supported" : "unsupported"; - $StatsBased{$regex} = $stats_based; - $ExpectedOpenGL{$regex} = $expected_opengl; - } -} - -close GPUS; - -print STDERR "\n" if $ErrorsSeen; - -exit $ErrorsSeen if $TableOnly; - - -# Loop over input lines, find the results for each -my %RecognizedBy; -while (<>) -{ - chomp; - $_ = substr($_,0,100); - my $lcInput = lc $_; # the real gpu table parser lowercases the input string - my $recognizer; - $RecognizedBy{$_} = $NoMatch; - foreach $recognizer ( @InOrder ) # note early exit if recognized - { - my $lcRecognizer = lc $recognizer; # the real gpu table parser lowercases the recognizer - if ( $lcInput =~ m/$lcRecognizer/ ) - { - $RecognizedBy{$_} = $recognizer; - last; # exit recognizer loop - } - } -} - -format STDOUT_TOP = -GPU String Supported? Class Stats OpenGL Recognizer ------------------------------------------------------------------------------------------------------- ----------- ----- ----- ------ ------------------------------------ -. -format STDOUT = -@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @> @> @<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... -$_, $Supported{$RecognizedBy{$_}},$Class{$RecognizedBy{$_}},$StatsBased{$RecognizedBy{$_}},$ExpectedOpenGL{$RecognizedBy{$_}},$Name{$RecognizedBy{$_}} -. - -my $ReportLineTemplate = "A102xxxA12xxxA2xxxxA2xxxxA5A*"; # Used to read a previous report - MUST match the format STDOUT above - -my ( $oldSupported, $oldClass, $newSupported, $newClass ); - -format DIFF_TOP = - ------------- OLD ------------- ----------- NEW -------------------- -GPU String Supported? Class Stats OpenGL Supported? Class Stats OpenGL Line ------------------------------------------------------------------------------------------------------- ----------- ----- ----- ------ ----------- ----- ----- ------ ----- -. -format DIFF = -@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @> @> @<<<< @<<<<<<<<<< @> @> @<<<< @>>>> -$_, $oldSupported, $oldClass, $oldStatsBased, $oldExpectedOpenGL, $newSupported, $newClass, $newStatsBased, $newExpectedOpenGL, $newRecognizedLine -. - -if ( ! $Diff ) -{ - ## Print results of testing each input line and how it was recognized. - foreach ( sort keys %RecognizedBy ) - { - write if ! $UnMatchedOnly || $Name{$RecognizedBy{$_}} eq $NoMatch; - $-++; # suppresses pagination - } -} -else -{ - ## Print a comparison of how the recognition this time compared to the results from the $Diff file - open OLD, "<$Diff" - || die "Failed to open --diff file '$Diff'\n\t$!\n"; - my $discard = 2; - while ( <OLD> ) - { - if ( $discard <= 0 ) - { - my ( $gpu, $supported, $class, $stats, $opengl ) = unpack $ReportLineTemplate; - $gpu =~ s/\s*$//; - ( $OldSupported{$gpu} = $supported ) =~ s/\s*$//; - ( $OldClass{$gpu} = $class ) =~ s/\s*$//; - ( $OldStatsBased{$gpu} = $stats ) =~ s/\s*$//; - ( $OldExpectedOpenGL{$gpu} = $opengl ) =~ s/\s*$//; - } - else - { - $discard--; - } - } - close OLD; - - $FORMAT_TOP_NAME = 'DIFF_TOP'; - $FORMAT_NAME = 'DIFF'; - foreach ( sort keys %RecognizedBy ) - { - $newSupported = $Supported{$RecognizedBy{$_}} || $NoMatch; - $newClass = $Class{$RecognizedBy{$_}}; - $newStatsBased = $StatsBased{$RecognizedBy{$_}}; - $newExpectedOpenGL = $ExpectedOpenGL{$RecognizedBy{$_}}; - $newRecognizedLine = $RecognizerLine{$RecognizedBy{$_}}; - - if ( ! defined $OldSupported{$_} ) - { - $oldSupported = 'NEW'; - $oldClass = '-'; - $oldStatsBased = '-'; - $oldExpectedOpenGL = '-'; - write; - $-++; # suppresses pagination - } - else - { - $oldSupported = $OldSupported{$_} || $NoMatch; - $oldClass = $OldClass{$_}; - $oldStatsBased = $OldStatsBased{$_}; - $oldExpectedOpenGL = $OldExpectedOpenGL{$_}; - - if ( ( $oldSupported ne $newSupported ) - || ( $oldClass ne $newClass ) - || ( $oldStatsBased ne $newStatsBased ) - || ( $oldExpectedOpenGL ne $newExpectedOpenGL ) - ) - { - write; - $-++; # suppresses pagination - } - } - - } -} - -exit $ErrorsSeen; diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index 3cec4ada1c..fbbc385e5b 100755 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -4245,6 +4245,10 @@ version 2.0 { ObjectOwner Variable 1 } { Questions S32 } } + { + Experience Single + { ExperienceID LLUUID } + } } // ScriptControlChange diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1 index e699efb03c..2c6489906c 100755 --- a/scripts/messages/message_template.msg.sha1 +++ b/scripts/messages/message_template.msg.sha1 @@ -1 +1 @@ -2286adc795b1b06eb86fdda431a71a6f0874b4f1
\ No newline at end of file +845459c1bb7fe8174fb493528fe2a214015f996d
\ No newline at end of file |